Симуляция - DRONE520/CS GitHub Wiki
Симуляция (моделирование)
Симуляторы позволяют использовать полетный код PX4 для управления моделируемым компьютером транспортным средством в моделируемом "мире". Вы можете взаимодействовать с этим транспортным средством так же, как с реальным транспортным средством, используя QGroundControl, автономный API или радиоконтроллер/геймпад.
PX4 поддерживает как программное обеспечение в цикле моделирования (SITL), где стек полета выполняется на компьютере, так и аппаратное обеспечение в цикле моделирования (HITL) с использованием встроенного ПО моделирования на реальной плате контроллера полета.
Цель симуляции
При разработке программного обеспечения для беспилотного летательного аппарата (БПЛА) основной сложностью является его отладка. В общем случае она требует лётных испытаний и сопряжена с риском потери летательного аппарата в случае ошибок. Для сравнительно простых формализованных постановок полётного задания отказ разработчика от моделирования может быть оправданным. Однако, для сложных многорежимных автономных систем отсутствие возможностей имитировать рабочие условия для ПО самолётовождения может многократно увеличить технические и финансовые риски проекта.
Основной целью симуляции является моделирование движения БПЛА вдоль различных траекторий с минимальной ошибкой отклонения, а так же отладка разработанного ПО.
Поддерживаемые Симуляторы
Следующие симуляторы работают с PX4 для моделирования HITL и/или SITL:
- Gazebo-мощная среда 3D-моделирования, подходит для тестирования уклонения от объекта, а также для тестирования компьютерного зрения. Данная среда позволяет одновременное моделирование нескольких транспортных средств и обычно используется совместно с ROS. Поддерживаемые транспортные средства: Quad(Iris и Solo, Hex (Typhoon H480)),Generic quad delta VTOL, Tailsitter, Plane, Rover, Submarine.
- FlightGear-cимулятор, который обеспечивает физически и визуально реалистичное моделирование. В частности, он может имитировать многие погодные условия, включая грозы, снег, дождь и град, а также может имитировать температуру и различные типы атмосферных потоков. Также поддерживается моделирование нескольких транспортных средств Multi-Vehicle Simulation with FlightGear. Поддерживаемые транспортные средства: Plane, Autogyro, Rover.
- JSBSim-это симулятор полета с открытым исходным кодом (модель динамики полета (FDM)). Поддерживаемые транспортные средства: Plane, Quad, Hex. К особенностям данного симулятора можно отнести:
- Полностью настраиваемая система управления полетом, аэродинамика, двигательная установка, расположение шасси и т.д.
- Влияние вращения земли на уравнения движения (моделируется кориолисово и центробежное ускорение).
- Настраиваемые форматы вывода данных на экран, файл, сокет или любую их комбинацию.
- jMAVSim-это простой симулятор мультиротора/квадроцикла, который позволяет вам управлять транспортными средствами типа вертолета, работающими на PX4, по моделируемому миру. Он прост в настройке и может быть использован для проверки того, что ваша модель может взлетать, летать, приземляться и надлежащим образом реагировать на различные условия сбоя (например, сбой GPS). Он также может быть использован для моделирования нескольких транспортных средств.
- Simulation-In-Hardware-Альтернатива HITL, которая предлагает жесткое моделирование в реальном времени непосредственно на аппаратном автопилоте. Этот симулятор реализован на C++ в виде модуля PX4 непосредственно в коде прошивки . Поддерживаемые транспортные средства: Plane, Quad.
- Ignition Gazebo- является производным от популярного симулятора робототехники Gazebo, отличающегося более совершенной визуализацией, физикой и моделями датчиков.
- AirSim-кросс-платформенный симулятор, который обеспечивает физически и визуально реалистичное моделирование. Этот симулятор является ресурсоемким и требует значительно более мощного компьютера, чем другие симуляторы, описанные здесь. Поддерживаемые транспортные средства: Plane, Quad.
Инструкции по настройке и использованию симуляторов приведены в разделах, связанных выше.
Оставшаяся часть этого раздела представляет собой общее описание того, как работает инфраструктура моделирования.
Симулятор MAVLink API
Все симуляторы взаимодействуют с PX4 с помощью API MAVLink симулятора. Этот API определяет набор сообщений MAVLink, которые передают данные датчиков из моделируемого мира в PX4 и возвращают значения двигателя и привода из кода полета, который будет применен к моделируемому транспортному средству. На рисунке ниже показан поток сообщений.
Примечание
Сборка SITL из PX4 использует simulator_mavlink.cpp для обработки этих сообщений. Данные датчиков с симулятора записываются в разделы PX4 uORB. Все двигатели / исполнительные механизмы заблокированы, но внутреннее программное обеспечение полностью работает.
Порты UDP по умолчанию PX4 MAVLink
По умолчанию PX4 использует обычно установленные порты UDP для связи MAVLink с наземными станциями управления (например, QGroundControl), внешними API (например, MAVSDK, MAVROS) и API симуляторов (например, Gazebo). Этими портами являются:
- Удаленный UDP-порт PX4 14550 используется для связи с наземными станциями управления. Ожидается, что GCS будет прослушивать соединения по этому порту. QGroundControl по умолчанию прослушивает этот порт.
- Удаленный UDP-порт PX4 14540 используется для связи с внешними API. Ожидается, что внешние API будут прослушивать соединения по этому порту.
Примечание
При моделировании нескольких транспортных средств для каждого экземпляра используется отдельный удаленный порт, выделяемый последовательно от 14540 до 14549 (все дополнительные экземпляры используют порт 14549).
- Локальный TCP-порт симулятора (4560) используется для связи с PX4. Симулятор прослушивает этот порт, и PX4 инициирует TCP - соединение с ним.
Примечание
Порты для GCS, внешних API и симулятора определяются сценариями запуска. Дополнительные сведения см. в разделе Запуск системы.
Среда моделирования SITL
На приведенной ниже диаграмме показана типичная среда моделирования SITL для любого из поддерживаемых симуляторов.
Различные части системы подключаются через UDP и могут запускаться либо на одном компьютере, либо на другом компьютере в той же сети.
- PX4 использует модуль, специфичный для моделирования, для подключения к локальному TCP-порту 4560 симулятора. Затем симуляторы обмениваются информацией с PX4 с помощью API MAVLink симулятора, описанного выше. PX4 на SITL и симулятор могут работать как на одном компьютере, так и на разных компьютерах в одной сети.
- PX4 использует обычный модуль MAVLink для подключения к наземным станциям и внешним API-интерфейсам разработчиков, таким как MAVSDK или ROS.
- PX4 определяет количество локальных портов UDP (14580 18570), которые иногда используются при подключении к сети с помощью PX4, работающего в контейнере или виртуальной машине. Они не рекомендуются для "общего" использования и могут измениться в будущем.
- Последовательное соединение может использоваться для подключения оборудования джойстика/геймпада через QGroundControl. Если вы используете обычную систему сборки SITL для настройки целевых объектов, то и SITL, и симулятор будут запущены на одном компьютере, и указанные выше порты будут автоматически настроены. Вы можете настроить дополнительные UDP-соединения MAVLink и иным образом изменить среду моделирования в файлах конфигурации сборки и инициализации.
Способы симуляции окружения для СПО БПЛА
SITL работает на компьютере разработчика в смоделированной среде и использует встроенное ПО, специально созданное для этой среды. За исключением драйверов моделирования, обеспечивающих получение поддельных данных об окружающей среде из симулятора, система ведет себя нормально.
Напротив, HITL запускает обычную прошивку PX4 в «режиме HITL» на обычном оборудовании. Данные моделирования поступают в систему в другой точке, чем для SITL. Основные модули, такие как командир и датчики, при запуске имеют режимы HITL, которые обходят некоторые обычные функции.
Таким образом, HITL запускает PX4 на реальном оборудовании с использованием стандартной прошивки, но на самом деле SITL выполняет больше стандартного системного кода.
Запуск/Построение моделирования SITL
Система сборки позволяет очень легко создавать и запускать PX4 на SITL, запускать симулятор и подключать их. Синтаксис выглядит так:
make px4_sitl simulator[_vehicle-model]
,
где simulator-gazebo (в нашем случае) или какой-либо другой симулятор, а vehicle-model-это конкретный тип транспортного средства (в нашем случае-квадрокоптер), поддерживаемый этим симулятором.
Ниже приведен ряд примеров:
Start Gazebo with plane:
make px4_sitl gazebo_plane
Start Gazebo with iris and optical flow:
make px4_sitl gazebo_iris_opt_flow
Start JMavSim with iris (default vehicle model):
make px4_sitl jmavsim
Start PX4 with no simulator (i.e. to use your own "custom" simulator):
make px4_sitl none_iris
Настройка HITL для конкретного симулятора (Gazebo)
Hardware-in-the-Loop (HITL или HIL) - это режим моделирования, в котором обычная прошивка PX4 запускается на реальном оборудовании полетного контроллера. PX4 поддерживает HITL для мультикоптеров (с использованием jMAVSim или Gazebo) и VTOL (с использованием Gazebo).
Примечание
Убедитесь, что QGroundControl не запущен!
- Соберите PX4 с помощью Gazebo (для создания подключаемых модулей Gazebo).
cd <Firmware_clone>
DONT_RUN=1 make px4_sitl_default gazebo
-
Откройте файл sdf модели автомобиля (например, Tools / sitl_gazebo / models / iris_hitl / iris_hitl.sdf ).
-
При необходимости замените serialDeviceпараметр ( /dev/ttyACM0).
Примечание
Последовательное устройство зависит от того, какой порт используется для подключения квадрокоптера к компьютеру (обычно это бывает
/dev/ttyACM0
). Простой способ проверить Ubuntu - подключить автопилот, открыть терминал и ввестиdmesg | grep "tty"
. Правильное устройство будет показано последним.
- Настройте переменные среды:
source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default
и запускаем Gazebo в режиме HITL:
gazebo Tools/sitl_gazebo/worlds/hitl_iris.world
- Запустите QGroundControl. Он должен автоматически подключаться к PX4 и Gazebo.