Files

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