Files
lightweight-cobot/src/iiwa_experement/doc/README.md
T

7.8 KiB
Raw Blame History

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) и не влияют на готовность сцены.