# Deployment ## Purpose Определяет воспроизводимый запуск LWC в локальной или контейнерной среде, выбор физического робота или Webots и правила загрузки единой конфигурации. ## Requirements ### Requirement: Целевая платформа Система SHALL поддерживать нативный запуск на Ubuntu 24.04 с ROS 2 Jazzy и отдельный Docker-сценарий на совместимом Linux-хосте. #### Scenario: Локальная подготовка - **WHEN** пользователь запускает `cobot local-setup` на поддерживаемом хосте - **THEN** мастер проверяет зависимости ROS 2 и Webots и собирает workspace из `src/` ### Requirement: Явный выбор режима Команда `cobot run` SHALL предлагать среду запуска и режим контроллера или Webots; режим Webots SHALL передавать launch-аргумент `simulate:=1`. #### Scenario: Выбор симуляции - **WHEN** пользователь выбирает «Симулятор Webots» - **THEN** запускается общее дерево `iiwa.launch.py` с симуляционной аппаратной моделью и временем `/clock` #### Scenario: Выбор контроллера - **WHEN** пользователь выбирает «Контроллер» - **THEN** запускается то же дерево с FRI hardware interface и системным временем ### Requirement: Единый файл настроек Основной launch SHALL загружать путь из аргумента `setting`, разрешать `pkg://` пути и передавать параметры подсистемам из загруженной структуры. #### Scenario: Пользовательская конфигурация - **WHEN** задан `setting:=/path/to/cobot-setting.yaml` - **THEN** launch использует этот файл для параметров робота, симуляции, планирования, веб-сервера и Foxglove ### Requirement: Ошибка конфигурации до движения Система MUST отклонять некорректные обязательные параметры и отсутствующие обязательные файлы конфигурации до начала командного движения. #### Scenario: Неверный период FRI - **WHEN** `fri_cycle_ms` находится вне диапазона 1–100 мс - **THEN** запуск аппаратного контроллера завершается ошибкой конфигурации #### Scenario: Неверные параметры TCP-гизмы - **WHEN** значение тайм-аута или скорости TCP-гизмы неположительно либо не является конечным числом - **THEN** загрузчик настроек отвергает конфигурацию ### Requirement: Состав запуска Основной launch SHALL поднимать публикацию состояния робота, контроллеры, MoveIt и сервер движения; Webots, RViz, веб-сервер и Foxglove SHALL включаться согласно режиму и настройкам. #### Scenario: Отключён веб-сервер - **WHEN** `web.enabled` имеет значение `false` - **THEN** узел `iiwa_web_server` не добавляется в launch