Симулятор
Симулятор Техника используется как основная площадка для разработки и тестирования программного обеспечения дрона. Он позволяет проверять алгоритмы управления, навигации и компьютерного зрения без подключения реального оборудования.
В варианте с виртуальной машиной среда дополнительно воспроизводит сервисы, которые обычно работают на борту дрона вне 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.
Таким образом, симулятор используется так же, как и реальный дрон, но без аппаратных ограничений.
Логика конфигурирования
Все параметры симуляции задаются до запуска и условно делятся на три уровня:
Общие параметры симулятора
Сенсоры и полезная нагрузка
Окружение 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был равен 250max_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 определяет используемую конфигурацию меток.