4.0 KiB
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 процесс останавливается до выполнения оставшихся точек