Обновление yaw с помощью msg_request_data_stream и MavlinkObserver
Я работаю над проектом, в котором я управляю квадрокоптером с помощью телефона Android. Я заметил, что использование DroneListener
слушать ATTITUDE_UPDATED
сообщения не обновляют рыскание почти так быстро, как мне нужно. Я хотел бы регулярно обновлять рывок квадрокоптера, в (более или менее) режиме реального времени, например, как приложение Mission Planner, когда вы подключаете свой квадрокоптер через USB.
Я пытался использовать msg_request_data_stream
(это по сути то, что Mission Planner использует, но в C#) для запроса различных потоков данных от дрона, но это не сработало. Я предполагаю, что такой ответ на этот запрос (т. Е. Поток) будет получен любыми зарегистрированными MavlinkObservers, однако пользовательские MavlinkObserver
что я добавил в мой дрон не было его onMavlinkMessageReceived(…)
метод называется один раз. Он даже не получал сообщения сердцебиения, которые (исходя из моего понимания) должны приходить регулярно и часто.
Есть ли какая-нибудь помощь, которую вы могли бы предложить? Есть ли лучший способ получить рыскание квадрокоптера, чем ожидание уведомления DroneListener о событиях? Я знаю, что это должно быть возможно с Mavlink (MissionPlanner
делает это), но у меня не было никакого успеха с сообщениями Mavlink или с MavlinkObserver
,
Вот мой код для запроса потока данных:
msg_request_data_stream message = new msg_request_data_stream();
//not sure how doubles cast to byte, so I cast it to an int first (the value is
//always going to be an int anyway, getValue just returns doubles for parameters by default)
message.target_system = (byte)((int)params.getParameter("SYSID_THISMAV").getValue());
message.req_message_rate = (short)1;
message.req_stream_id = (byte)0;
message.start_stop = (byte)1;
//wrap the message and send it!
ExperimentalApi.sendMavlinkMessage(this, new MavlinkMessageWrapper(message));