Как снять автопилот PX4 с помощью сообщения mavlink?
Я следую за примером кода следующей ссылки
http://android.dronekit.io/first_app.html
и когда я устанавливаю API VehicleApi.getApi(this.drone).arm(true); vehicleState.isFlying() автоматически становится истинным.
Кто-нибудь может сказать мне, что это за проблема?
Что мне нужно это: 1. снять, приземлиться
Я читал с какого-то сайта, что dronekit-android не поддерживает смену режима. Если так, как я должен отправить сообщение mavlink, чтобы взлететь и приземлиться? Пока что я могу успешно отправить сообщение mavlink на плату PX4.
Спасибо за ответ.
Спасибо за ответ.
BR SeanH
2 ответа
Я раньше не пробовал android-dronekit и заметил, что папка src не обновлялась на github более двух лет.
Я советую вам использовать python-dronekit, потому что в python есть мощная библиотека pymavlink, которая используется в python-dronekit. Вы можете создать гиперприложение, если хотите, но сначала попытайтесь взлететь и приземлиться в Python.
Если вы проследите хотя бы часть кода в dronekit-android, вы увидите, что isFlying
устанавливается здесь с кодом ниже.
boolean isFlying = systemStatus == MAV_STATE.MAV_STATE_ACTIVE || ...;
MAV_STATE_ACTIVE, определенные здесь состояния
Система активна и может быть уже в воздухе. Моторы занимаются.
Так isFlying
это не значит, что он находится в воздухе, а только то, что двигатели включены. Что происходит при звонке VehicleApi.getApi(this.drone).arm(true);
потому что вы буквально вооружаете машину в этот момент.
Для взлета вы хотите использовать ControlApi. ControlApi.getApi(drone).takeOff(desired_altitude, listener)
а для земли нужно использовать VehicleApi.getApi(drone).setVehicleMode(VehicleMode.COPTER_LAND, listener)
Пример кода, на который вы смотрите, очень старый. Я предлагаю вам следовать примеру приложения из GitHub.