Добавлена спецификация и навыки для codex и kimi-code

This commit is contained in:
Даниил Грабарь
2026-11-05 14:07:19 +10:00
parent 0e3fd0358f
commit 54f8f14ed7
30 changed files with 3385 additions and 2 deletions
+55
View File
@@ -0,0 +1,55 @@
# Motion Sequences
## Purpose
Описывает запуск последовательности суставных и декартовых целей, контроль её состояния и прекращение исполнения через веб-интерфейс.
## Requirements
### Requirement: Конфигурация последовательности
Runner SHALL читать JSON-файл с точками движения и параметрами выполнения и различать суставные и декартовы точки.
#### Scenario: Суставная точка
- **WHEN** точка конфигурации содержит суставные координаты
- **THEN** runner отправляет цель `MoveToJoints` и ожидает её результата перед следующей точкой
#### Scenario: Декартова точка
- **WHEN** точка конфигурации задаёт декартову позу
- **THEN** runner отправляет цель `MoveToPose` с заданным планировщиком и ожидает результата
### Requirement: Контроль последовательности через HTTP
`POST /sequences/start` SHALL запускать отдельный процесс последовательности, а `GET /sequences/status` и `GET /sequences/logs` SHALL показывать её состояние и ограниченный журнал.
#### Scenario: Запущенный процесс
- **WHEN** runner исполняется
- **THEN** `/sequences/status` возвращает `running` и идентификатор процесса
### Requirement: Повторы и запись
Runner SHALL выполнять заданное число итераций последовательности `home → waypoints → home`, выдерживать паузу между итерациями и при заданном `bag_path` записывать выбранные ROS-топики в MCAP.
#### Scenario: Две итерации без записи
- **WHEN** клиент задаёт `n_iterations=2` и пустой `bag_path`
- **THEN** последовательность из начальной, промежуточных и конечной целей выполняется дважды без записи rosbag
#### Scenario: Второй запуск при активном runner
- **WHEN** `POST /sequences/start` вызывается при работающем процессе
- **THEN** сервер отвечает 409 и не создаёт второй процесс
#### Scenario: Путь записи уже существует
- **WHEN** заданный `bag_path` указывает на существующий каталог
- **THEN** runner удаляет каталог перед созданием новой записи MCAP
### Requirement: Ошибка точки прерывает выполнение
Runner MUST прекращать последовательность при неуспехе цели и инициировать остановку движения, вместо перехода к следующей точке.
#### Scenario: Отказ action
- **WHEN** одна из целей возвращает отрицательный результат
- **THEN** остальные точки не отправляются, а runner завершает выполнение с ошибкой
### Requirement: Остановка активного процесса
Общая веб-команда остановки SHALL завершать активный процесс runner и предотвращать дальнейшую отправку точек.
#### Scenario: Остановка во время последовательности
- **WHEN** вызывается `POST /stop` во время работы runner
- **THEN** процесс останавливается до выполнения оставшихся точек