DroneKit миссия не отправлена на беспилотный
Я пытаюсь создать простую миссию, используя Drone-Kit android.
Mission myMission = new Mission();
myMission.clear();
Takeoff to = new Takeoff();
ReturnToLaunch rtl = new ReturnToLaunch();
//set Altitude in meters
rtl.setReturnAltitude(2);
to.setTakeoffAltitude(2);
myMission.addMissionItem(to);
myMission.addMissionItem(rtl);
MissionApi.getApi(this.drone).setMission(myMission,true);
Проблема в том, что иногда это работает, а иногда нет... Я не знаю, почему это не работает... Я не получаю никаких ошибок в коде.
Я слушаю
AttributeEvent.MISSION_UPDATED
AttributeEvent.MISSION_SENT
AttributeEvent.MISSION_RECEIVED
но только AttributeEvent.MISSION_UPDATED
срабатывает, когда я запускаю код. И даже если он запущен, это не значит, что миссия обновлена правильно. Я проверяю миссию с Planer. Я просто не понимаю, почему это работает иногда, а иногда нет.
Я убедился, что дрон подключен к приложению. Также я позаботился о том, чтобы с дроном все было в порядке и можно было вооружить. Я действительно застрял здесь... и любая помощь будет оценена.
2 ответа
Я отвечу на мой вопрос, на случай, если у кого-то возникнет такая же проблема.
Я связался с разработчиками, и кажется, что я не единственный, у кого есть эта ошибка. Кажется, что когда вы добавляете ReturnToLaunch
в Mission
что-то происходит в API и миссия не отправляется дрону. Как только я удалил ReturnToLaunch
объект из Mission
все работало правильно.
Обходной путь: чтобы преодолеть проблему, я помещаю дрон в RTL
режим, когда Mission
готово.
Я не пробовал dronekit-android, но думаю, что лучше открыть здесь вопрос.
Исходный код проекта Android не обновлялся более двух лет!
В общем, есть протокол для загрузки / выгрузки миссии. Это нелегко реализовать, но вы можете реализовать это. Я сделал это в C++. Вы должны всегда проверять подтверждение от дрона, прежде чем переходить к следующему шагу. Проверьте протокол здесь.