Как снять автопилот 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.

Другие вопросы по тегам