113 lines
7.3 KiB
Markdown
113 lines
7.3 KiB
Markdown
# Навыки робота
|
||
|
||
Справочник 32 навыков, используемых генератором датасета.
|
||
|
||
## Формат действия
|
||
|
||
```json
|
||
{"skill": "align", "object": "деталь №1", "target": "сборочная позиция №1"}
|
||
```
|
||
|
||
- `skill` — фиксированное имя навыка на английском; по нему программа выбирает обработчик.
|
||
- `object` — русское название объекта из сцены. Для `return_home` — `робот`.
|
||
- `target` — русское название цели действия. Поле присутствует только у навыков, отмеченных в таблице.
|
||
|
||
## Список навыков
|
||
|
||
| Навык | Назначение | Значение `target` |
|
||
|---|---|---|
|
||
| `detect` | Определить положение объекта | — |
|
||
| `approach` | Подвести робот к объекту | — |
|
||
| `pick` | Захватить объект | — |
|
||
| `position` | Переместить объект к месту назначения | Место назначения |
|
||
| `place` | Установить объект на место, сохраняя захват | Место установки |
|
||
| `align` | Совместить объект с местом установки | Место установки |
|
||
| `insert` | Вставить объект | Место установки |
|
||
| `release` | Отпустить объект | — |
|
||
| `inspect` | Проверить результат установки объекта | — |
|
||
| `insert_fastener` | Установить крепёж в отверстие | Место установки |
|
||
| `tighten` | Затянуть крепёж | Место установки |
|
||
| `press_fit` | Запрессовать объект | Место установки |
|
||
| `route_wire` | Проложить провод | Место подключения |
|
||
| `connect` | Подключить провод | Место подключения |
|
||
| `test_continuity` | Проверить электрическую целостность соединения провода | — |
|
||
| `seat_component` | Установить электронный компонент | Место установки |
|
||
| `test_connection` | Проверить подключение электронного компонента | — |
|
||
| `clean_surface` | Очистить поверхность объекта для склеивания | — |
|
||
| `apply_adhesive` | Нанести клей на объект | — |
|
||
| `bond` | Прижать объект к месту соединения | Место соединения |
|
||
| `wait_cure` | Дождаться отверждения клея на соединении | — |
|
||
| `clamp` | Зафиксировать объект в приспособлении | Место фиксации |
|
||
| `weld` | Выполнить сварное соединение | Место соединения |
|
||
| `measure` | Проверить размеры объекта | — |
|
||
| `wait_operator` | Дождаться готовности оператора принять объект | — |
|
||
| `handover` | Поднести объект для передачи оператору, сохраняя захват | `оператор` |
|
||
| `confirm_assembly` | Получить подтверждение сборки объекта от оператора | — |
|
||
| `move_to_operator` | Переместить объект к оператору | `оператор` |
|
||
| `hold` | Удерживать объект в неподвижном состоянии возле оператора | `оператор` |
|
||
| `wait_assembly` | Дождаться подтверждения завершения сборки, продолжая удерживать объект | — |
|
||
| `move_to_storage` | Переместить объект в зону хранения | Зона хранения |
|
||
| `return_home` | Вернуться в исходное положение | `исходное положение` |
|
||
|
||
## Форматы ответа модели
|
||
|
||
### Полный план — `full`
|
||
|
||
Ответ содержит `status` и массив `plan`:
|
||
|
||
```json
|
||
{
|
||
"status": "ready",
|
||
"plan": [
|
||
{"skill": "detect", "object": "распределительная коробка №1"},
|
||
{"skill": "approach", "object": "распределительная коробка №1"},
|
||
{"skill": "pick", "object": "распределительная коробка №1"},
|
||
{"skill": "move_to_operator", "object": "распределительная коробка №1", "target": "оператор"},
|
||
{"skill": "hold", "object": "распределительная коробка №1", "target": "оператор"},
|
||
{"skill": "wait_assembly", "object": "распределительная коробка №1"},
|
||
{"skill": "move_to_storage", "object": "распределительная коробка №1", "target": "зона хранения №1"},
|
||
{"skill": "release", "object": "распределительная коробка №1"},
|
||
{"skill": "return_home", "object": "робот", "target": "исходное положение"}
|
||
]
|
||
}
|
||
```
|
||
|
||
- `ready` — полный план достигает цели в логической модели сцены.
|
||
- `blocked` — цель недостижима в текущей сцене. План может содержать выполнимую часть действий; если действий нет, массив пуст.
|
||
|
||
### Следующее действие — `step`
|
||
|
||
```json
|
||
{
|
||
"status": "ready",
|
||
"plan": [{"skill": "pick", "object": "деталь №1"}]
|
||
}
|
||
```
|
||
|
||
В этом режиме `ready` означает доступность указанного следующего действия, а не гарантию завершения всей задачи. При достигнутой цели возвращается `ready` с пустым массивом; при невозможности продолжения — `blocked` с пустым массивом.
|
||
|
||
### План с ветвлением — `branch`
|
||
|
||
У каждого действия дополнительно присутствуют:
|
||
|
||
| Поле | Назначение |
|
||
|---|---|
|
||
| `id` | Идентификатор действия: `step_1`, `step_2` и далее |
|
||
| `on_success` | ID следующего действия или терминальный исход `ready` / `blocked` |
|
||
| `on_failure` | Терминальный исход `replan_required` |
|
||
|
||
Пример отдельного узла внутри плана:
|
||
|
||
```json
|
||
{
|
||
"id": "step_1",
|
||
"skill": "pick",
|
||
"object": "деталь №1",
|
||
"on_success": "step_2",
|
||
"on_failure": "replan_required"
|
||
}
|
||
```
|
||
|
||
Выполнение начинается с первого элемента `plan`. При успехе последнего действия переход ведёт к `ready` или `blocked`. При ошибке `replan_required` означает остановку, обновление сцены и построение нового плана. Эти три исхода не являются навыками. У пустого плана итог определяется полем `status`.
|
||
|