# Симуляция (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` и перезапустите систему. Все параметры описаны в [справочнике конфигурации](../configuration.md). `command_timeout` проверяет возраст поступившей цели: отпускание мыши определяется напрямую, настройка времени ожидания не требуется. ### Если маркер возвращается или не реагирует - Дождитесь завершения обычной команды или уже начатой траектории гизмы перед новым перетаскиванием. - При отказе смотрите строку `TCP gizmo rejected target: ...` в выводе запуска. Попробуйте небольшое смещение из достижимой позы, например `work`. - При отсутствии или устаревании обратной связи перемещение недоступно. Проверьте, что симуляция работает и `/joint_states` обновляется. ## Отличия от реального робота - Действуют настроенные ограничения суставов и TCP; симуляция не воспроизводит все защиты физического робота - Физика не идеальна — инерция, трение и упругость приближённые - FRI-протокол не задействован — связь идёт через Webots-драйвер ROS 2