10. Gazebo: физическая симуляция и обмен с ROS 2

Визуализация и симуляция

RViz показывает данные ROS, а Gazebo рассчитывает движение и взаимодействие объектов в виртуальном мире. Поэтому перенос модели из RViz в симулятор требует проверки массы, инерции, геометрии столкновений и настройки компонентов симуляции.

В пособии используется связка ROS 2 Jazzy и Gazebo через пакеты ros_gz. Данные внутри Gazebo и данные ROS относятся к разным транспортным системам. Для нужных топиков настраивается мост с подходящими типами и направлениями передачи.

Последовательность подготовки

  1. Подготовьте пакет симуляции с каталогами модели, launch-файлов и конфигураций.
  2. Проверьте пути к ресурсам и корректную установку файлов.
  3. Запустите мир Gazebo и создайте в нём экземпляр робота.
  4. Подключите необходимые плагины и мосты.
  5. Настройте время симуляции для ROS-узлов, которым оно требуется.
  6. Проверьте граф ROS, TF и реакцию модели на команды.

Не настраивайте все подсистемы одновременно: сначала добейтесь устойчивого появления модели в мире, затем добавляйте управление и датчики.

Практическое задание

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

Наблюдайте время и доступные интерфейсы:

ros2 topic list -t
ros2 topic echo /clock

Наличие /clock в ROS требует соответствующей настройки обмена с симулятором.

Самопроверка

  • Почему исправная модель в RViz может неправильно вести себя в Gazebo?
  • Какие данные необходимо передавать через мост и в каком направлении?
  • Как проверить, что узлы используют одно время симуляции?

Основа урока: учебное пособие «Операционная система для роботов ROS 2», ИТМО, 2026, печатные страницы 22–24, 75–90. Это учебный конспект с упражнениями; полные примеры и рисунки приведены в пособии.