Добавлена спецификация и навыки для 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
+50
View File
@@ -0,0 +1,50 @@
# Motion Planning
## Purpose
Определяет публичные ROS-контракты планирования и исполнения суставных, декартовых и именованных движений через MoveIt 2.
## Requirements
### Requirement: Суставная цель
Action `cobot/move_to_joints` SHALL принимать ровно семь углов в радианах и коэффициент скорости, а результат SHALL содержать `success` и `message`.
#### Scenario: Допустимая цель
- **WHEN** клиент отправляет семь суставных координат и скорость
- **THEN** сервер планирует движение группы `iiwa_arm` от текущего состояния и сообщает стадии `planning` и `executing`
### Requirement: Декартова цель
Action `cobot/move_to_pose` SHALL принимать XYZ в метрах, KUKA ABC в радианах, скорость, планировщик и `frame_id`; ориентация SHALL интерпретироваться как ZYX: A=yaw, B=pitch, C=roll.
#### Scenario: Цель без frame_id
- **WHEN** action-цель содержит пустой `frame_id`
- **THEN** сервер использует `planning.default_frame` и планирует движение TCP из `planning.pose_link`
### Requirement: Выбор планировщика
Декартово движение SHALL поддерживать ключи `ompl`, `ptp`, `lin`, `circ`, `chomp` и отвергать неизвестный ключ с отрицательным результатом.
#### Scenario: Неизвестный планировщик
- **WHEN** получен ключ, отсутствующий в списке поддерживаемых
- **THEN** результат action содержит `success=false` и объяснение ошибки
### Requirement: Именованная цель
Сервис `cobot/move_to_named` SHALL принимать имя `group_state` из SRDF, масштаб скорости и ускорения; нулевой `accel_scale` SHALL означать масштаб, равный скорости.
#### Scenario: Неизвестное имя
- **WHEN** имя отсутствует в SRDF
- **THEN** ответ сервиса содержит `success=false` и сообщение об неизвестном состоянии
### Requirement: Сериализация операций
Сервер движения SHALL выполнять не более одной операции планирования и исполнения через общий планирующий компонент одновременно.
#### Scenario: Два запроса одновременно
- **WHEN** одновременно поступают две команды движения
- **THEN** операции сериализуются, а состояние одной операции не подменяет состояние другой
### Requirement: Результат исполнения
Сервер MUST различать успех, отказ планирования, ошибку исполнения и отмену; успешное построение плана само по себе не SHALL считаться успешным движением.
#### Scenario: План не исполнен
- **WHEN** контроллер возвращает ошибку исполнения траектории
- **THEN** результат команды содержит `success=false` с диагностическим сообщением