Files
lightweight-cobot/doc/lwc-doc/docs/getting-started/configuration.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

12 KiB

Конфигурация системы

Главный конфигурационный файл

Все параметры системы хранятся в одном файле — cobot-setting.yaml в корне проекта. Это единственный источник истины для IP-адреса робота, портов, путей к конфигам, настроек планировщика и веб-сервера.

!!! info "Не нужно настраивать вручную до установки" При выполнении cobot setup мастер автоматически предложит настроить этот файл на шаге 2 — вам не нужно делать это заранее. Возвращайтесь к этому разделу когда захотите изменить параметры после первоначальной установки.

!!! danger "Не редактируйте файл вручную" Используйте только команду cobot robot-setup — интерактивный мастер валидирует значения и не допускает синтаксических ошибок. Ручное редактирование YAML может привести к ошибкам парсинга и невозможности запуска системы.

cobot robot-setup

Блок robot — параметры робота

Отвечает за соединение с физическим контроллером KUKA по протоколу FRI.

robot:
  name: "iiwa7"
  ip: "192.170.10.2"
  port: 30200
  fri_cycle_ms: 10
  description: pkg://iiwa_description/urdf/iiwa7.urdf.xacro
Параметр Описание Рекомендации
name Модель робота Не менять — iiwa7
ip IP-адрес контроллера KUKA Изменить на реальный IP вашего контроллера
port UDP-порт FRI По умолчанию 30200 — менять только при конфликте портов
fri_cycle_ms Период цикла FRI: 5 мс = 200 Гц, 10 мс = 100 Гц 10 для стабильной работы, 5 для высокоточных задач
joint_position_tau Постоянная времени EMA команд FRI, с 0.04; 0 отключает сглаживание
description Путь к URDF-описанию робота Не менять

Управление движением всегда выполняет JointTrajectoryController. Перед отправкой в FRI позиционная команда сглаживается EMA с постоянной времени robot.joint_position_tau; фильтр скорости не применяется.


Блок digital_twin — симулятор

Настройки виртуальной среды Webots и визуализации в RViz.

digital_twin:
  tcp_gizmo:
    enabled: true
    publish_period: 0.032
    command_timeout: 0.3
    state_timeout: 0.5
    max_linear_speed: 0.50
    max_angular_speed: 0.4
  webots:
    world: pkg://iiwa_description/worlds/iiwa.wbt
    transform: "-0.25 0 0.79"
    rotation: "0 0 1 0"
    controller_timer: "50"
    cameras:
      - pkg://iiwa_config/config/cameras/d455_top.yaml
  rviz:
    config: pkg://iiwa_config/config/rviz/rviz_moveit.rviz
Параметр Описание
webots.world Путь к .wbt-миру симулятора
webots.transform Смещение базы робота в мире [x y z] в метрах
webots.rotation Ориентация базы [x y z угол] в радианах
webots.cameras Список YAML-конфигов подключённых камер
rviz.config Путь к конфигурации RViz

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

Порядок действий приведён в руководстве по симуляции.

Выберите маркер TCP, переместите или поверните его штатной гизмой Webots и отпустите левую кнопку мыши. Пока кнопка удерживается, меняется только маркер. После отпускания отправляется одна полная траектория. Следующее перетаскивание доступно после её завершения. Если цель недостижима или траектория проходит через столкновение, маркер возвращается к текущему TCP.

Гизма использует звено tcp активного инструмента независимо от planning.pose_link. Для patron это рабочий торец патрона (55,2 мм от начала звена patron вдоль его локальной оси Z); без инструмента — фланец link_ee. Этот TCP также используется обычными декартовыми командами, когда planning.pose_link: tcp.

У гизмы самый низкий приоритет: во время обычного движения она недоступна. Если команда координат, joints или файла приходит во время уже начатого движения гизмы, она ждёт завершения этой траектории.

Параметр tcp_gizmo Описание
enabled false полностью отключает гизму при следующем запуске; доступна только в симуляции
publish_period Период обновления состояния, с
command_timeout Максимальный возраст входящей цели, с; не задержка после перетаскивания
state_timeout Допустимый возраст обратной связи робота, с
max_linear_speed Верхний предел скорости TCP, м/с
max_angular_speed Верхний предел угловой скорости TCP, рад/с

Отпускание определяется по состоянию кнопки мыши, поэтому таймер ожидания не нужен. Скорость может быть ниже заданного предела из-за ограничений суставов, ускорения и торможения. Траектория интерполируется в суставах и достигает заданной позы TCP; прямолинейность пути TCP не гарантируется.


Блок tool — активный инструмент

Указывает, какой захват или инструмент закреплён на роботе.

tool:
  active: "patron"
Значение Описание
none Без инструмента
patron Захват «Patron» (патрон)

Список доступных инструментов находится в файле src/iiwa_config/config/tools.yaml. Для добавления нового инструмента необходимо описать его там, после чего указать имя в tool.active.

Применяйте выбор через cobot robot-setup: мастер обновляет описание инструмента и SRDF. После смены инструмента пересоберите проект и перезапустите симуляцию.


Блок planning — планирование движений

Параметры MoveIt 2 и конфигурации траекторного планировщика.

planning:
  pose_link: "tcp"
  planning_group: "iiwa_arm"
  default_frame: "base_link"
  default_planner: "ompl"
  planning_attempts: 3
Параметр Описание Рекомендации
pose_link TCP-линк для декартовых целей Соответствует фрейму в URDF — не менять без изменения URDF
planning_group Группа планирования из SRDF Не менять — iiwa_arm
default_frame Система отсчёта по умолчанию Не менять — base_link
default_planner Планировщик: ompl, pilz_industrial_motion_planner ompl — универсальный; pilz — для предсказуемых траекторий
planning_attempts Число попыток планирования при неудаче Увеличивать при сложных траекториях

Блок web — REST API и MCP-сервер

FastAPI-сервер для управления роботом через HTTP и MCP (интеграция с AI-агентами).

web:
  enabled: true
  host: "0.0.0.0"
  port: 8007
  endpoints: pkg://iiwa_config/config/api_endpoints.yaml
  joint_limits: pkg://iiwa_config/config/moveit/joint_limits.yaml
Параметр Описание
enabled Включить (true) или отключить (false) веб-сервер
host Адрес прослушивания: 0.0.0.0 — все интерфейсы, 127.0.0.1 — только локально
port Порт HTTP API (по умолчанию 8007)
endpoints Путь к описанию REST-эндпоинтов
joint_limits Путь к файлу ограничений суставов для валидации команд

После запуска REST API доступен по адресу http://<host>:8007, MCP — по пути /mcp.


Блок foxglove — мониторинг через Foxglove Studio

Foxglove Studio — инструмент визуализации и мониторинга ROS 2 топиков в реальном времени.

foxglove:
  enabled: true
  port: 8765
  debug: false
  address: 0.0.0.0
Параметр Описание
enabled Включить или отключить Foxglove Bridge
port WebSocket-порт для подключения Foxglove Studio (по умолчанию 8765)
debug Подробное логирование bridge-процесса
address Адрес прослушивания WebSocket

Остальные параметры блока (tls, topic_whitelist, min_qos_depth и др.) относятся к продвинутой конфигурации и в большинстве случаев менять их не требуется.


Что менять, что оставить

Параметр Действие
✅ robot.ip Обязательно изменить на IP вашего контроллера
✅ robot.fri_cycle_ms Выбрать 10 (стандарт) или 5 (высокая частота)
✅ tool.active Указать активный инструмент
✅ web.enabled Выключить (false), если веб-интерфейс не нужен
⚠️ planning.* Менять при необходимости другого планировщика или параметров
❌ robot.description Не трогать — путь к URDF
❌ controller.moveit.* Не трогать — пути к конфигам MoveIt внутри пакетов
❌ digital_twin.webots.world Не трогать без знания структуры Webots-миров