4.5 KiB
Direct Trajectories
Purpose
Описывает приём готовых суставных траекторий из JSON и CSV, их проверку перед публикацией и поведение остановки.
Requirements
Requirement: Форматы ввода
HTTP API SHALL принимать JSON-точки через POST /trajectory/send и CSV-файл через POST /trajectory/send_csv с семью суставными колонками и временем от начала.
Scenario: CSV с вариантами имён
- WHEN CSV использует заголовки
joint_1–joint_7иtime_from_start - THEN колонки сопоставляются с
joint1–joint7и временемtнезависимо от порядка
Requirement: Конечные и допустимые точки
Каждая точка MUST содержать семь конечных углов и допустимое время; траектория MUST укладываться в позиционные, скоростные, ускорительные и рывковые ограничения из конфигурации.
Scenario: Недопустимый сустав
- WHEN точка выходит за допустимый диапазон сустава
- THEN HTTP API возвращает 422 и не публикует траекторию
Requirement: Свежий неподвижный старт
Прямая траектория MUST начинаться со свежего полного /joint_states и неподвижного робота; при ненулевом времени первой точки система SHALL добавить стартовую точку текущего положения.
Scenario: Устаревшая обратная связь
- WHEN возраст или временная метка
/joint_statesпревышают настроенный предел - THEN запрос отклоняется с 409 без публикации
Scenario: Нулевая первая точка не совпадает
- WHEN первая точка имеет
t=0, но отличается от измеренного положения больше допуска - THEN запрос отклоняется с 422
Requirement: Пересчёт времени
Система SHALL при необходимости растягивать время траектории для соблюдения динамических ограничений и возвращать фактическую длительность и коэффициент масштабирования.
Scenario: Быстрый сегмент
- WHEN исходный интервал между точками требует превышения настроенных динамических лимитов
- THEN опубликованная траектория имеет увеличенные интервалы и ответ сообщает
time_scale
Requirement: Граница проверки прямого пути
Прямой траекторный API SHALL проверять суставные и динамические ограничения, но не SHALL заявлять проверку столкновений для промежуточного пути.
Scenario: Траектория в допустимых суставных лимитах
- WHEN клиент отправляет валидные точки без подтверждённой проверки сцены
- THEN API может опубликовать траекторию, а ответственность за оценку столкновений остаётся вне этого API
Requirement: Защита от замены и остановка
Система MUST отвергать новую прямую траекторию во время ещё активной и MUST не публиковать подготовленную цель, если в ходе подготовки пришла остановка.
Scenario: Остановка во время подготовки
- WHEN
POST /stopвызывается до публикации подготовленной траектории - THEN подготовка инвалидируется, а эта траектория не отправляется контроллеру