Добавлена спецификация и навыки для 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
@@ -0,0 +1,54 @@
# 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** подготовка инвалидируется, а эта траектория не отправляется контроллеру