Gazebo является основным инструментом имитационного моделирования (симулятор) для ROS. Gazebo поставляется вместе с ROS и не требует отдельной установки. Однако вместе с ROS могут работать многие другие симуляторы, такие как CoppeliaSim (V-REP), Unity, Unreal, Godot, Isaac Sim, Webots. Далее рассматривается взаимодействие ROS и Gazebo для разработки и тестирования программного обеспечения для роботов.

Наличие модели робота недостаточно для выполнения симуляции. Симулятору необходимо предоставить описание среды моделирования в формате SDF (Simulation Description Format). Несмотря на название формата, файлы с описанием модели имеют расширение .world.

Основной файл настройки мира (.world) – содержит основные элементы сцены. Например, ссылки на модели. На рисунке ниже показан пример добавления трех моделей из локальной базы данных моделей Gazebo.

Пример .world файлаПример простейшего .world файла для Gazebo

В Gazebo могут использоваться различные системы расчета моделирования (также известные как "физические движки"), однако по умолчанию доступен только ODE (Open Dynamics Engine). Настройки физического движка также указываются в файле .world. На рисунке ниже показан пример с настройками физического движка.

Настройки физического движкаПример .world файла с настройками физического движка

При использовании симулятора исчезает необходимость в пакете joint_state_publisher, так как положения шарниров будут учитываться в имитационной модели робота на стороне симулятора. Однако симулятор не может напрямую взаимодействовать с ROS, все взаимодействие может проходить только посредством специальных плагинов для Gazebo.

Компоненты ROS и Gazebo Компоненты ROS и Gazebo для имитационного моделирования