Files

55 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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** подготовка инвалидируется, а эта траектория не отправляется контроллеру