# Simulation ## Purpose Описывает цифровой двойник в Webots для проверки запуска, суставного управления, объектов сцены, камер и интерактивного TCP без подключения к физическому роботу. ## Requirements ### Requirement: Симуляционный контроллер Режим `simulate` SHALL создавать модель iiwa в Webots и использовать `webots_ros2_control` вместо FRI hardware interface. #### Scenario: Запуск Webots - **WHEN** launch получает `simulate:=true` - **THEN** создаётся робот в выбранном world, а контроллеры запускаются с симуляционным временем ### Requirement: Начальное состояние и геометрия Симуляция SHALL загружать начальные суставные положения, ограничения, инструмент и преобразование размещения робота из конфигурации. #### Scenario: Изменён активный инструмент - **WHEN** инструмент применён до нового запуска Webots - **THEN** URDF модели содержит соответствующую геометрию и TCP ### Requirement: Объекты сцены При включённых `digital_twin.webots.objects` система SHALL размещать заданное число объектов из перечисленных OBJ-моделей в настроенной области относительно основания робота. #### Scenario: Повтор моделей - **WHEN** число объектов больше числа доступных моделей - **THEN** модели могут повторяться, а общее число создаваемых объектов соответствует `count` ### Requirement: Камеры Камеры Webots SHALL загружаться из файлов конфигурации; включённый драйвер SHALL публиковать изображения и `CameraInfo`, а для датчика глубины — предусмотренные глубинные данные. #### Scenario: Настроена D455 - **WHEN** в списке камер указан `d455_top.yaml` - **THEN** симуляционный запуск создаёт камеру с именами топиков и параметрами из этого файла ### Requirement: Симуляционный TCP-инструмент TCP-гизма SHALL запускаться только при включённом флаге и в режиме симуляции. #### Scenario: Физический режим - **WHEN** запуск выполняется с `simulate:=false` - **THEN** узлы интерактивной TCP-гизмы не активируются