Симулятор

Симулятор Техника используется как основная площадка для разработки и тестирования программного обеспечения дрона. Он позволяет проверять алгоритмы управления, навигации и компьютерного зрения без подключения реального оборудования.

В варианте с виртуальной машиной среда дополнительно воспроизводит сервисы, которые обычно работают на борту дрона вне ROS, например встроенный веб-интерфейс Monkey.


Способы запуска

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

Запуск из терминала

При работе в нативной системе симуляция стартует стандартной командой ROS:

source ~/technic_ws/devel/setup.bash roslaunch technic_simulation simulator.launch

После запуска автоматически поднимаются:

  • Gazebo (сервер и клиент),

  • PX4,

  • ROS-ноды Техника.

Тот же терминал используется для вывода диагностических сообщений и взаимодействия с командной строкой PX4.

Запуск из виртуальной машины

Если используется виртуальная машина, симулятор можно запускать напрямую из графической оболочки — через ярлык Gazebo PX4 на рабочем столе, без использования консоли.


Взаимодействие с симулятором

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

  • QGroundControl — для настройки параметров PX4, загрузки миссий и управления с пульта (при наличии GPS).

  • OFFBOARD-управление — через режим simplified OFFBOARD.

  • ROS-инструменты — визуализация и отладка с помощью rviz и rqt.

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


Логика конфигурирования

Все параметры симуляции задаются до запуска и условно делятся на три уровня:

  1. Общие параметры симулятора

  2. Сенсоры и полезная нагрузка

  3. Окружение Gazebo

Основная точка входа для настройки — файл:

technic_simulation/launch/simulator.launch

Изменения в .launch файлах полностью аналогичны настройке реального дрона.


Навигация и сенсоры

GPS и глобальные координаты

Для режимов полёта, использующих глобальные координаты, а также для выполнения миссий PX4 требуется включённый GPS.

Активация выполняется в simulator.launch:

<arg name="gps" value="true"/>

После этого в PX4 необходимо разрешить использование GPS, установив соответствующий флаг в параметре EKF2_AID_MASK через QGroundControl.

Использование камеры

Камера в симуляции не является обязательной. Если задачи компьютерного зрения не используются (например, при полётах по GPS), её можно отключить:

<arg name="main_camera" default="false"/>

Это снижает нагрузку на систему и повышает стабильность симуляции.

Расширение набора датчиков

Конфигурация датчиков задаётся в описании модели дрона. Файл модели расположен по пути:

technic_description/urdf/technic/technic4.xacro

Он использует формат xacro и позволяет:

  • добавлять новые сенсоры,

  • менять их ориентацию,

  • изменять точки крепления.


Окружение Gazebo

Требования к миру симуляции

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

  • real_time_update_rate был равен 250

  • max_step_size — 0.004

При других значениях симуляция не запустится. В качестве базового шаблона следует использовать файл:

technic_simulation/resources/worlds/technic.world


Производительность и стабильность

Симуляция в Gazebo требует значительных вычислительных ресурсов. Если симуляция не успевает работать в реальном времени, рекомендуется применять следующие методы.

Синхронизация скорости симуляции с камерой

По умолчанию Gazebo не подстраивает скорость расчётов под требуемую частоту публикации изображений. Для решения этой проблемы используется плагин throttling_camera.

Он активируется в файле:

technic_description/launch/spawn_drone.launch

<arg name="maintain_camera_rate" default="true"/>

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

Явная установка коэффициента времени

PX4 (начиная с версии 1.9) позволяет заранее задать скорость симуляции через переменную окружения:

PX4_SIM_SPEED_FACTOR=0.42 roslaunch technic_simulation simulator.launch

Значение коэффициента должно соответствовать Real Time Factor, отображаемому в окне Gazebo.

При использовании виртуальной машины эту переменную удобно прописать прямо в свойствах ярлыка запуска Gazebo.

Настройка ресурсов виртуальной машины

Ключевой фактор производительности — количество доступных CPU-ядер:

  • 1 ядро — симуляция практически неработоспособна,

  • 4 ядра — стабильная работа с замедлением примерно до 0.25×.

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


Работа с ArUco-метками

Для замены карты ArUco-меток в симулируемом мире можно сгенерировать новый .world файл с помощью утилиты:

rosrun technic_simulation aruco_gen --single-model \ --source-world=$(catkin_find technic_simulation resources/worlds/technic.world) \ $(catkin_find aruco_pose map/map.txt) \ > $(catkin_find technic_simulation resources/worlds/technic_aruco.world)

Файл map.txt определяет используемую конфигурацию меток.

results matching ""

    No results matching ""