Добавлена спецификация и навыки для 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
+47
View File
@@ -0,0 +1,47 @@
# Robot Model
## Purpose
Фиксирует кинематическую модель семиосевого iiwa 7, систему координат TCP, ограничения суставов и зависимость модели от выбранного инструмента.
## Requirements
### Requirement: Семь осей и единицы
Модель SHALL содержать суставы `joint1`–`joint7` в заданном порядке; суставные положения SHALL выражаться в радианах, скорости в радианах в секунду.
#### Scenario: Публикация состояния
- **WHEN** запущен `joint_state_broadcaster`
- **THEN** `/joint_states` содержит имена и значения всех семи управляемых суставов
### Requirement: Согласованные лимиты
URDF, `ros2_control`, MoveIt и проверка внешних суставных команд MUST брать границы из `joint_limits.yaml` с учётом мягкого диапазона там, где он предусмотрен.
#### Scenario: Суставная цель вне мягкой границы
- **WHEN** HTTP-запрос суставного движения содержит угол за допустимой границей
- **THEN** запрос отклоняется до отправки ROS action с кодом 422
### Requirement: Активный инструмент
Конфигурация инструмента SHALL определять Xacro-описание, конечное звено кинематической цепи, TCP и пары отключённых самоколлизий.
#### Scenario: Выбор инструмента из реестра
- **WHEN** `cobot robot-setup` применяет инструмент из `tools.yaml`
- **THEN** обновляются `tool_active.xacro` и `iiwa7.srdf`, сохраняя существующие именованные положения
#### Scenario: Нет инструмента
- **WHEN** выбран `none`
- **THEN** TCP совпадает с `link_ee` через фиксированное соединение
### Requirement: Декартова система координат
Декартово движение SHALL задавать целевую позу TCP относительно указанного `frame_id`, по умолчанию `base_link`.
#### Scenario: Рамка не указана
- **WHEN** клиент оставляет `frame_id` пустым
- **THEN** сервер движения использует `planning.default_frame`
### Requirement: Именованные положения
Именованные положения SHALL определяться `group_state` в SRDF и предоставляться клиенту вместе с именами и углами суставов.
#### Scenario: Запрос каталога
- **WHEN** клиент вызывает `GET /robot/positions`
- **THEN** возвращаются доступные `group_state` с именем, группой, описанием и суставными углами