Как я могу добавить новое сообщение в протокол mavlink?

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

2

Решение

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

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

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

2

Другие решения

Это зависит от того, какой автопилот вы используете. Если вы используете ardupilot, вам нужно добавить новое определение xml-сообщения в ardupilot / modules / mavlink / message_definitions / v1.0 / ardupilotmega.xml.

Вы можете посмотреть другие сообщения, чтобы увидеть, как они должны быть отформатированы. Просто убедитесь, что вы выбрали идентификатор, который не используется.

Далее вам нужно решить, как поместить это в код. Вы можете поместить его в задачу data_stream_send, добавив идентификатор сообщения, скажем, в STREAM_EXTRA3. Это будет отправлять ваше сообщение так же часто, как другие данные отправляются туда. В рамках этого вам нужно будет определить функцию для фактической упаковки вашей структуры данных, используя функцию, сгенерированную pymavgen, идентификатор сообщения и перечисления. Это то, что я сделал в своем собственном проекте для ASH_DATA. Вы можете увидеть изменения, которые я сделал в моем хранилище для справки. Обратите внимание, что некоторые из них включают изменения, включающие прием данных о золе на ястребе и добавление данных в файл журнала.

Учитывая, что вы хотите запускать это раз в секунду, вы можете добавить в задачу one_second_loop или создать свою собственную задачу, которая просто вызывает функцию try_send_message, используя ваш новый идентификатор сообщения.

Вам, конечно, нужно будет включить новое сообщение в ваш gcs, чтобы вы могли его получить, но это другой вопрос.

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

0

По вопросам рекламы [email protected]