feat: launch grant experiment by id
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
# iiwa_experement
|
||||
|
||||
Пакет запускает один из двадцати детерминированных опытов в Webots. Один
|
||||
запуск создаёт один свежий мир: шаблон `worlds/grant/iiwa-grant.wbt` копируется
|
||||
во временную директорию, в копии заменяются пути к PROTO, затем существующий
|
||||
`iiwa_bringup` запускает Webots, робота iiwa 7, контроллеры и камеры. После
|
||||
этого `scene_spawner` добавляет объекты выбранного сценария.
|
||||
|
||||
Реализована только начальная сцена. Захват, вставка инструмента в `patron`,
|
||||
нанесение герметика, установка и затяжка винтов в пакет не входят.
|
||||
|
||||
## Сборка
|
||||
|
||||
```bash
|
||||
source /opt/ros/jazzy/setup.bash
|
||||
colcon build --base-paths src --packages-up-to iiwa_experement --symlink-install
|
||||
source install/setup.bash
|
||||
```
|
||||
|
||||
## Запуск
|
||||
|
||||
Обязательный параметр `experiment_id` принимает только целое число от 1 до 20:
|
||||
|
||||
```bash
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=1
|
||||
```
|
||||
|
||||
Проверенные примеры:
|
||||
|
||||
```bash
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=6
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=11
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=16
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=19
|
||||
ros2 launch iiwa_experement experiment.launch.py experiment_id:=20
|
||||
```
|
||||
|
||||
`experiment_id:=0`, `21`, `abc` или пустое значение останавливают launch до
|
||||
запуска Webots. Для другого опыта завершите текущий запуск (`Ctrl-C`) и
|
||||
запустите команду с новым номером: мир каждый раз создаётся заново.
|
||||
|
||||
Дополнительные параметры:
|
||||
|
||||
| Параметр | По умолчанию | Значение |
|
||||
| --- | --- | --- |
|
||||
| `rviz` | `false` | `true` запускает RViz вместе с Webots |
|
||||
| `scene_config` | установленный `config/scenes.yaml` | другой манифест сценариев |
|
||||
| `base_setting` | установленный `iiwa_config/config/setting.yaml` | базовые настройки для временной копии |
|
||||
|
||||
Временные `iiwa-grant.wbt` и `setting.yaml` создаются в отдельной директории
|
||||
запуска и удаляются при его завершении.
|
||||
|
||||
## Готовность сцены
|
||||
|
||||
Сервис доступен с момента старта ноды, но сообщает успех только после
|
||||
последнего успешного вызова supervisor:
|
||||
|
||||
```bash
|
||||
ros2 service call /iiwa_experement/scene_ready std_srvs/srv/Trigger {}
|
||||
```
|
||||
|
||||
Успешный ответ содержит `success: true` и сообщение вида
|
||||
`experiment 11: 17 objects spawned`. Пока объекты добавляются или если спавн
|
||||
завершился ошибкой, `success` остаётся `false`, а в `message` находится причина
|
||||
и имя последнего объекта.
|
||||
|
||||
## Состав сцен
|
||||
|
||||
| Опыты | Люк | Лоток и винты | Рабочие инструменты |
|
||||
| --- | --- | --- | --- |
|
||||
| 1–5 | свободный | нет | присоска |
|
||||
| 6–9 | отсутствует | нет | герметик |
|
||||
| 10 | свободный | нет | герметик, присоска |
|
||||
| 11–13 | установлен | 10 винтов | магнитный |
|
||||
| 14–15 | установлен | 10 винтов | магнитный, затяжной |
|
||||
| 16–20 | свободный | 10 винтов | присоска, магнитный, герметик, затяжной |
|
||||
|
||||
Во всех опытах `patron` уже находится на роботе: он включён в URDF через
|
||||
`urdf/tools/tool_active.xacro`. Рабочие инструменты лежат отдельно в четырёх
|
||||
гнёзах стойки. Свободный люк имеет физику; установленный люк зафиксирован.
|
||||
Винты и инструменты в начальной сцене статичны: будущий исполнитель должен
|
||||
освободить их перед захватом. Это исходное положение, а не реализованный
|
||||
механизм захвата.
|
||||
|
||||
Координаты и наборы объектов заданы только в `config/scenes.yaml`; генератор
|
||||
не выбирает случайные позы. В опытах 11–20 всегда ровно десять винтов, даже
|
||||
если сценарий использует один, два или четыре. В опыте 19 лоток и все десять
|
||||
винтов смещены вместе.
|
||||
|
||||
## Ресурсы
|
||||
|
||||
- Шаблон мира и код: `src/iiwa_experement/`.
|
||||
- OBJ/MTL: `src/iiwa_description/objects/grant/`; они не копируются.
|
||||
- PROTO стола и ограждений: `src/iiwa_description/resource/protos/`.
|
||||
- Спецификации: `doc/experements.md`, `doc/experiment-scenes.md`.
|
||||
|
||||
Старые `body_hatch*.wbt` и `GrantToolRack.proto` не восстанавливаются и не
|
||||
используются. Стойка собрана из `tool-magizine.obj` и отдельных объектов
|
||||
инструментов.
|
||||
|
||||
## Проверки
|
||||
|
||||
```bash
|
||||
colcon test --base-paths src --packages-select iiwa_experement
|
||||
colcon test-result --verbose
|
||||
```
|
||||
|
||||
Тесты пакета проверяют:
|
||||
|
||||
- установку мира, YAML, launch и документации;
|
||||
- все 20 сценариев, включая 10 винтов в опытах 11–20;
|
||||
- уникальные имена, позы и существование OBJ/MTL;
|
||||
- отказы при неверном ID, неизвестном инструменте, 9/11 винтах, повторяющемся
|
||||
имени, винте вне лотка и несовпадении корпуса со стапелем;
|
||||
- отсутствие повторного вызова supervisor при тайм-ауте;
|
||||
- замену локальных PROTO на установленные абсолютные пути, отключение старого
|
||||
случайного `object_spawner` и сохранение `patron` в URDF.
|
||||
|
||||
Старый `src/iiwa_utils/test/test_body_hatch_worlds.py` относится к удалённым
|
||||
`worlds/grant/body_hatch*.wbt` и `GrantToolRack.proto`; это не тест нового
|
||||
пакета.
|
||||
Reference in New Issue
Block a user