2016-04-18 8 views
2

Я новичок в Mavlink, я хочу добавить новое сообщение в протокол Mavlink и отправлять его каждую секунду периодически. Как мне это сделать?Как добавить новое сообщение в протокол mavlink?

+0

Какова цель сообщения? Кто отправит сообщение и кто его получит? – squilter

+0

Я хочу отправить сообщение каждую секунду периодической от моего дрона на мой компьютер с помощью 3DR. Цель состоит в том, чтобы знать, как я могу это сделать, и это также помогает мне завершить мой окончательный выпуск. –

+0

Хорошо, но в чем состоит сообщение? – squilter

ответ

0

Это зависит от того, какой автопилот вы используете. Если вы используете 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, чтобы вы могли его получить, но это другое дело.

Надеюсь, это может подтолкнуть других в правильном направлении, которые пытаются сделать то же самое.

2

Здесь вы можете найти detailed steps о том, как добавить новое сообщение в протокол mavlink и как вы его обрабатываете.

  1. Убедитесь, что у вас установлены последние ArduPilot code и Mavproxy.
  2. Решите, какое сообщение вы хотите добавить.
  3. Добавить определение нового сообщения в файл common.xml или ardupilotmega.xml в подмодуле mavlink.

  4. Добавить функции в код основного транспортного средства для обработки отправки или получения команды.