Симуляция

Симулятор Gazebo

Симулятор Gazebo


Что такое симулятор

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

Современный симулятор умеет моделировать:

  • Физику. Гравитацию, инерцию, сопротивление воздуха, столкновения — всё, что влияет на движение дрона в реальности.

  • Датчики. Камеру, лидар, GPS, гироскопы, дальномеры — каждый датчик выдаёт данные, максимально похожие на настоящие (даже симулирует шумы и ошибки измерений).

  • Окружение. Стены, пол, препятствия, свет, текстуры — виртуальный мир, в котором дрон может ориентироваться и с которым может взаимодействовать.

Благодаря этому программист может написать код, запустить его в симуляторе и увидеть, как дрон будет себя вести — не подвергая физический мир повреждениям.

Как устроен симулятор

Симулятор для дронов обычно состоит из трёх частей:

  1. Физический движок — просчитывает, как объекты двигаются и взаимодействуют. Он знает про массу дрона, силу моторов, гравитацию и может рассчитать, куда дрон переместится через долю секунды.

  2. Графический движок — отрисовывает картинку: комнату, препятствия, сам дрон. Благодаря ему виртуальная камера на дроне видит изображение, похожее на настоящее.

  3. Модели датчиков — имитируют работу настоящих устройств. Например, виртуальная камера выдаёт картинку, виртуальный GPS сообщает координаты, а виртуальный IMU — ускорение и угловую скорость.

Все эти части работают вместе: физический движок рассчитывает новое положение дрона, графический движок рисует сцену с этого ракурса, а модели датчиков собирают данные и передают их программе управления — точно так же, как это происходит на настоящем дроне.

Симулятор и ROS 2

Программа, написанная для дрона в симуляторе, общается с ним через те же самые топики, сервисы и сообщения ROS 2, что и с настоящим дроном. С точки зрения вашего кода разницы почти нет. Это главное преимущество: алгоритм, отлаженный в симуляторе, с большой вероятностью заработает на настоящем дроне без переписывания кода.

Попробуйте сами

Инструкция по запуску симулятора Gazebo в Dev Container.