7.8 KiB
iiwa_experement
Пакет запускает один из двадцати детерминированных опытов в Webots. Один
запуск создаёт один свежий мир: шаблон worlds/grant/iiwa-grant.wbt копируется
во временную директорию, в копии заменяются пути к PROTO, затем существующий
iiwa_bringup запускает Webots, робота iiwa 7, контроллеры и камеры. После
этого scene_spawner добавляет объекты выбранного сценария.
Реализована только начальная сцена. Захват, вставка инструмента в patron,
нанесение герметика, установка и затяжка винтов в пакет не входят.
Сборка
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:
ros2 launch iiwa_experement experiment.launch.py experiment_id:=1
Проверенные примеры:
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:
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 и отдельных объектов
инструментов.
Проверки
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; это не тест нового
пакета.
Проверка в Webots
Для опытов 1, 6, 11, 16, 19 и 20 запуск в графическом Webots R2025a завершился
успешным scene_ready: 5, 4, 16, 19, 19 и 19 объектов соответственно. По
изображению верхней камеры d455_top проверены:
- свободный люк на столе, отсутствие люка в опыте 6 и установленный люк в опыте 11;
- 10 винтов в лотке во всех проверенных опытах 11, 16, 19 и 20;
- четыре инструмента в гнёздах стойки, нужный набор в опытах 1, 6 и 11;
- смещение лотка и всех винтов в опыте 19;
patronна роботе во всех запусках.
Сбои move_group, camera_spawner и контроллеров в журнале возникают только
при принудительном завершении запуска (Ctrl-C) и не влияют на готовность
сцены.