Add a native Webots marker for setting the active tool's TCP position and orientation. Dragging edits the preview; releasing the mouse submits one complete, checked joint trajectory with configured TCP speed limits. Unreachable targets reset the marker to the current TCP. Preserve coordinate, joint, and control-file commands through motion reservations and a controller action proxy. Give the gizmo lowest priority and finish its committed trajectory before dispatching queued regular commands, including waits longer than the former two-second service timeout. Place the patron TCP at its working end, 55.2 mm along local Z, and use the flange TCP when no tool is attached. Add digital_twin.tcp_gizmo configuration, ROS interfaces, launch integration, and regression coverage. Document operation, configuration, tool attachment, speed limits, and troubleshooting in both Russian and English. Validation: 42 Python tests and 8 C++ tests passed. Webots regressions covered one action per release, translation and rotation with and without a tool, unreachable targets, and ordinary commands waiting for gizmo completion.
5.2 KiB
Симуляция (Webots)
Webots — симулятор роботов с открытым исходным кодом. В LWC используется как цифровой двойник робота KUKA LBR IIWA 7: позволяет разрабатывать и отлаживать алгоритмы управления без доступа к физическому роботу.
Ключевые особенности
- Симулятор использует те же ROS 2 топики и интерфейсы, что и реальный робот
- Мир симуляции задаётся в
cobot-setting.yaml→digital_twin.webots.world - Для запуска:
cobot run --simulate
Перемещение за TCP
В этом режиме цифрового двойника целевая поза робота задаётся перетаскиванием маркера рабочей точки инструмента (TCP) прямо в окне Webots.
- Включите
digital_twin.tcp_gizmo.enabled: trueвcobot-setting.yamlи запуститеcobot run --simulate. - Дождитесь завершения других движений. Для первой проверки удобно перейти в именованную позицию
workобычной командой. - Выберите маркер TCP в Webots. Удерживая левую кнопку мыши, тяните за стрелку перемещения или ручку вращения. Во время редактирования цели робот стоит.
- Отпустите кнопку: контроллеру отправится одна полная траектория, а не поток action-целей при перетаскивании.
- Дождитесь завершения движения перед следующим переносом. При недостижимой цели или столкновении на проверяемом пути маркер возвращается к фактическому TCP.
Обычные команды координат, joints и файлы управления остаются доступны и имеют приоритет перед новым перетаскиванием. Уже начатое движение гизмы завершается до выполнения ожидающей обычной команды, в том числе если ожидание длится больше двух секунд.
Инструмент и скорость
Маркер следует за фреймом tcp активного инструмента: у patron это рабочий торец патрона, без инструмента — фланец. При смене инструмента примените выбор через cobot robot-setup, пересоберите проект и перезапустите симуляцию. В моделях новых инструментов задавайте tcp в рабочей точке.
max_linear_speed (м/с) и max_angular_speed (рад/с) задают верхние пределы. На коротких перемещениях есть разгон и торможение; ограничения суставов также могут снизить скорость. Интерполяция в суставах достигает заданной позы TCP, но не гарантирует прямолинейный декартов путь.
Для отключения задайте digital_twin.tcp_gizmo.enabled: false и перезапустите систему. Все параметры описаны в справочнике конфигурации. command_timeout проверяет возраст поступившей цели: отпускание мыши определяется напрямую, настройка времени ожидания не требуется.
Если маркер возвращается или не реагирует
- Дождитесь завершения обычной команды или уже начатой траектории гизмы перед новым перетаскиванием.
- При отказе смотрите строку
TCP gizmo rejected target: ...в выводе запуска. Попробуйте небольшое смещение из достижимой позы, напримерwork. - При отсутствии или устаревании обратной связи перемещение недоступно. Проверьте, что симуляция работает и
/joint_statesобновляется.
Отличия от реального робота
- Действуют настроенные ограничения суставов и TCP; симуляция не воспроизводит все защиты физического робота
- Физика не идеальна — инерция, трение и упругость приближённые
- FRI-протокол не задействован — связь идёт через Webots-драйвер ROS 2