Files
lightweight-cobot/doc/lwc-doc/docs/getting-started/concepts/simulation.md
T
Даниил Грабарь 3a5bc28bba feat: add release-to-move TCP gizmo control in Webots
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.
2026-09-17 17:11:53 +03:00

5.2 KiB
Raw Blame History

Симуляция (Webots)

Webots — симулятор роботов с открытым исходным кодом. В LWC используется как цифровой двойник робота KUKA LBR IIWA 7: позволяет разрабатывать и отлаживать алгоритмы управления без доступа к физическому роботу.

Ключевые особенности

  • Симулятор использует те же ROS 2 топики и интерфейсы, что и реальный робот
  • Мир симуляции задаётся в cobot-setting.yaml → digital_twin.webots.world
  • Для запуска: cobot run --simulate

Перемещение за TCP

В этом режиме цифрового двойника целевая поза робота задаётся перетаскиванием маркера рабочей точки инструмента (TCP) прямо в окне Webots.

  1. Включите digital_twin.tcp_gizmo.enabled: true в cobot-setting.yaml и запустите cobot run --simulate.
  2. Дождитесь завершения других движений. Для первой проверки удобно перейти в именованную позицию work обычной командой.
  3. Выберите маркер TCP в Webots. Удерживая левую кнопку мыши, тяните за стрелку перемещения или ручку вращения. Во время редактирования цели робот стоит.
  4. Отпустите кнопку: контроллеру отправится одна полная траектория, а не поток action-целей при перетаскивании.
  5. Дождитесь завершения движения перед следующим переносом. При недостижимой цели или столкновении на проверяемом пути маркер возвращается к фактическому 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