Запуск дрона в виртуальной среде
Запуск дрона в виртуальной среде
Last updated
Запуск дрона в виртуальной среде
Last updated
Перед началом эксплуатации реального дрона убедитесь, что он выполняет миссию в симуляторе и выполните данную инструкцию.
Для прокачки базовых навыков программирования дрона не нужно ничего покупать – достаточно использовать симулятор дрона jMAVSim проекта PX4. PX4 – мощный набор ПО с открытым исходным кодом, предназначенный для использования на различных беспилотных транспортных средствах, как летающих, так и ездящих по земле. Исходные коды ПО проекта лежат .
Изначально в качестве среды разработки авторами PX4 рекомендуется Linux Ubuntu LTS. Также есть поддержка Mac. В этом году появилась среда симуляции и разработки под Windows в Cygwin, что может упростить жизнь Российским учебным заведениям, которые используют Windows в классах информатики. Далее мы рассмотрим процесс установки, сборки и запуска симулятора под Linux и под Windows.
Разработчики PX4 в качестве стандартной системы рекомендуют Linux Ubuntu 16.04 LTS. Linux позволяет производить сборку пакета PX4 под все поддерживаемые системы (аппаратные платформы на базе NuttX, Qualcomm Snapdragon Flight, Linux, среды симуляции, ROS). Первым делом добавляем пользователя в группу «dialout»:
На все задаваемые скриптом вопросы ответить положительно. По окончании выполнения скрипта перезагрузить компьютер. Нам осталось скачать исходный код контроллера, управляющий полётом, и осуществить его сборку. Клонируем репозиторий ПО полётного контроллера PX4 с github:
В папке Firmware теперь у нас лежит полный исходный код, который исполняется в полётном контроллере (и в симуляторе). В дальнейшем он может пригодится как для целей изучения, так и для внесения в него правок. Переходим в скопированную папку Firmware репозитория:
Осуществляем компиляцию и запуск симулятора:
Процесс первой компиляции занимает некоторое время. После успешного завершения на экране появится консоль PX4:
Дрон можно отправить в полёт, введя в консоли команду:
Посадка дрона – команда commander land
, остановка симуляции – CTRL+C или команда shutdown
.
После компиляции на экране появится консоль PX4 и окно симулятора:
Команды консоли для управления дроном те же: взлёт — commander takeoff
, посадка – commander land
, остановка симуляции – CTRL+C или команда shutdown
.
Если симулятор запущен не на том хосте, на котором работает jMAVSim – перед подключением mavros нужно разрешить рассылку mavlink сообщений по сети с помощью команды param set MAV_BROADCAST 1
в консоли jMAVSim. При выполнении команды выводится ip-адрес хоста, используемый для протокола mavlink. Порт можно узнать с помощью команды mavlink status
в консоли симулятора:
Успешность подключения к полётному контроллеру следует проверить с помощью команды:
Если подключение успешно – в консоли начнут появляться сообщения т.н. mavlink heartbeat, примерно раз в секунду:
Если сообщения не появляются/не обновляются/поле Connected = False – связь с полётным контроллером не установлена, и следует разобраться, почему. На момент написания статьи, под Windows после команды param set MAV_BROADCAST 1 в консоли jMAVSim начинали в цикле выводиться сообщения:
Чтобы симулятор заработал корректно под Windows, следует дополнить строку 1029 файла src/modules/mavlink/mavlink_main.cpp:
Публикуем 5 раз в секунду целевую точку для полёта дрона в режиме OFFBOARD. Для того, чтоб дрон не «вываливался» из режима автономного полёта OFFBOARD, необходимо осуществлять публикацию целевой точки всё время, несколько раз в секунду:
Переводим дрон в режим OFFBOARD (в новой отдельной сессии терминала):
Отправляем команду перевести дрон в режим полёта (т.е. «заармить»):
После выполнения последней команды виртуальный дрон должен взлететь и зависнуть на высоте 5 метров:
Также запуск дрона можно осуществить с помощью несложного кода на Питоне:
Приведённый код использует вызов тех же сервисов ROS, что и пример вызова из командной строки.
Код нужно скопировать в текстовый файл, например, fly_jmavsim.py, и запустить его на выполнение из командной строки командой python fly_jmavsim.py
.
В процессе отладки данного примера столкнулся с особенностью симулятора jMAVSim – для нормальной работы ему требуется производительный процессор. На виртуалке Linux он успевал просчитывать только 10 FPS, и падал сразу после взлёта. На ноутбуке, пока я писал статью – он также периодически терял управление/падал. Помогло питание ноутбука от сети – т.к. при питании от батарейки включается режим энергосбережения, что занижает производительность процессора, которая сказывается непосредственно на работе симулятора. На основании приведённых примеров желающие могут сами разработать программы автономных полётов (по квадрату, по кругу, по произвольной траектории, и т.д.). Выполнение таких упражнений может быть полезным для подготовки к программированию автономных миссий на реальном квадрокоптере. Желаем всем успешных полётов!
Перелогинимся в систему, для того чтобы изменения вступили в силу. Установка среды разработки (development toolchain) для Pixhawk/NuttX, включая jmavsim, осуществляется автоматически с помощью скрипта . Нужно скачать скрипт в каталог пользователя и запустить его с помощью команды
Набор инструментов PX4 Cygwin появился в 2018 году. Это наиболее производительный способ для компиляции/разработки PX4 под Windows. Для установки – качаем и запускаем установочный файл с или . По умолчанию toolchain устанавливается в папку C:\PX4. На последнем шаге инсталлятора можно отметить галочку «clone the PX4 repository, build and run simulation with jMAVSim» (клонировать репозиторий PX4, скомпилировать и запустить симулятор jMAVSim). Запуск среды разработки в Cygwin осуществляется с помощью файла run-console.bat в каталоге установки (по умолчанию, C:\PX4). Если забыли отметить галочку запуска jMAVSim в процессе установки – в Cygwin можно клонировать репозиторий и запустить симулятор с помощью команд:
У меня на Windows пока не отображаются небо и деревья, вместо них – чёрный фон, о чём .
Программа QGroundControl позволяет полностью настраивать дроны на платформах PX4 или ArduPilot, а также планировать и выполнять автономные полёты вне помещений по GPS. Код программы полностью открыт, и она работает на платформах Windows, OS X, Linux, iOS и Android. Установочный файл под нужную платформу можно скачать . Для Windows скачиваем и запускаем . После установки и запуска, если у нас на компьютере уже запущен jMAVSim – программа подключится к нему автоматически. Запустить дрон в полёт можно с помощью кнопки Fly-Takeoff, посадить – Land. Также можно выполнить виртуальный полёт по точкам GPS:
Управление виртуальным дроном jMAVSim возможно по протоколу mavlink, который описан в нескольких статьях (например , ). Для осуществления mavlink-коммуникации мы будем использовать пакет mavros системы . Разработчики PX4 рекомендуют использовать ROS Kinetic. Пакет mavros обеспечивает связь по протоколу MAVLink между компьютером, на котором работает ROS (например, виртуалка с Linux, или Raspberry PI) и полётным контроллером (реальным или в среде симулятора). Пакет mavros устанавливается вместе с другими пакетами в ходе . Запуск пакета mavros с подключением к симулятору осуществляется командой roslaunch, с указанием ip адреса и порта компьютера, на котором запущен симулятор:
И перекомпилировать/перезапустить симулятор командой make px4_sitl jmavsim
.
О данной проблеме , возможно, её исправят в последующих релизах.
После успешного подключения, запустить дрон в автономный полёт можно с помощью следующих команд консоли ROS-системы: