48 lines
3.2 KiB
Markdown
48 lines
3.2 KiB
Markdown
# 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` с именем, группой, описанием и суставными углами
|
||
|