Добавлена спецификация и навыки для codex и kimi-code
This commit is contained in:
@@ -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` с диагностическим сообщением
|
||||
|
||||
Reference in New Issue
Block a user