Я новичок в Mavlink, я хочу добавить новое сообщение в протокол Mavlink и отправлять его каждую секунду периодически. Как мне это сделать?Как добавить новое сообщение в протокол mavlink?
ответ
Это зависит от того, какой автопилот вы используете. Если вы используете ardupilot, вам нужно будет добавить новое определение XML-сообщения в ardupilot/modules/mavlink/message_definitions/v1.0/ardupilotmega.xml.
Вы можете посмотреть другие сообщения, чтобы узнать, как их форматировать. Просто убедитесь, что вы выбрали id, который не используется.
Далее вам нужно решить, как это сделать в коде. Вы можете поместить его в задачу data_stream_send, добавив идентификатор сообщения, скажем, в STREAM_EXTRA3. Это отправит ваше сообщение так часто, как другие данные отправляются туда. В рамках этого вам нужно будет определить функцию для фактической упаковки вашей структуры данных с помощью функции, созданной pymavgen, идентификатором сообщения и перечислениями. Это то, что я сделал в своем собственном проекте для ASH_DATA. Вы можете увидеть изменения, которые я сделал in my repository для справки. Обратите внимание, что некоторые из них включают изменения для включения приема данных о золе в pixhawk и добавления данных в файл журнала.
Учитывая, что вы хотите запустить это один раз в секунду, вы можете добавить задачу one_second_loop или создать свою собственную задачу, которая просто вызывает функцию try_send_message, используя ваш новый идентификатор сообщения.
Конечно, вам необходимо включить новое сообщение в свой gcs, чтобы вы могли его получить, но это другое дело.
Надеюсь, это может подтолкнуть других в правильном направлении, которые пытаются сделать то же самое.
Здесь вы можете найти detailed steps о том, как добавить новое сообщение в протокол mavlink и как вы его обрабатываете.
- Убедитесь, что у вас установлены последние ArduPilot code и Mavproxy.
- Решите, какое сообщение вы хотите добавить.
Добавить определение нового сообщения в файл common.xml или ardupilotmega.xml в подмодуле mavlink.
Добавить функции в код основного транспортного средства для обработки отправки или получения команды.
Какова цель сообщения? Кто отправит сообщение и кто его получит? – squilter
Я хочу отправить сообщение каждую секунду периодической от моего дрона на мой компьютер с помощью 3DR. Цель состоит в том, чтобы знать, как я могу это сделать, и это также помогает мне завершить мой окончательный выпуск. –
Хорошо, но в чем состоит сообщение? – squilter