Простой взлет DroneKit не работает
Я пытаюсь сделать простой Takeoff
команда.
Вот код ниже:
ControlApi.getApi(this.drone).takeoff(10, new AbstractCommandListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(int executionError) {
alertUser("Error: " + executionError);
}
@Override
public void onTimeout() {
alertUser("timeout");
}
});
Хотя я управляю коптером ARM, команда взлета всегда возвращает ошибку, с executionError
3 или 4 и я не знаю, что это значит? У любого есть executionError
коды значения? Или, может быть, знаете, в чем проблема?
1 ответ
[Решено]. Вот шаги, которые необходимо предпринять, чтобы код работал:
1.
VehicleApi.getApi(this.drone).arm(true, new AbstractCommandListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(int executionError) {
}
@Override
public void onTimeout() {
}
});
Убедитесь, что вы получите правильный ответ в onSuccess
метод.
2.
VehicleApi.getApi(drone).setVehicleMode(VehicleMode.COPTER_GUIDED);
Вот где была моя проблема. Мне как-то удалось поставить вертолет в Guided_NoGps
Согласно документации Arducopter, этот режим можно поставить без достаточного количества спутников GPS. Также вам нужно 3DFix в GPS, чтобы переключиться на Guided
Режим. Вы должны убедиться, что у вас есть более 9 стабильных блокировок спутников, или этот код просто не будет работать.
3.
Запустите код ниже
ControlApi.getApi(this.drone).takeoff(10, new AbstractCommandListener() {
@Override
public void onSuccess() {
}
@Override
public void onError(int executionError) {
alertUser("Error: " + executionError);
}
@Override
public void onTimeout() {
alertUser("timeout");
}
});
Я проверил это на реальном квадрокоптере на базе контроллера PX4. Также вам нужен ArduCopter версии 3.4 (или выше)