如何在mavlink协议中添加新消息?

时间:2016-04-18 15:56:02

标签: c++ xml dronekit mavlink

我是Mavlink的新手,我想在Mavlink协议中添加一条新消息,并定期每秒发送一次。我该怎么办?

2 个答案:

答案 0 :(得分:2)

在这里,您可以找到有关如何向mavlink协议添加新消息以及如何处理它的detailed steps

  1. 确保您安装了最新的ArduPilot codeMavproxy
  2. 决定要添加的邮件类型。
  3. 将新邮件定义添加到mavlink子模块中的common.xmlardupilotmega.xml文件中。

  4. 向主要车辆代码添加功能以处理发送或接收命令。

答案 1 :(得分:0)

这取决于您使用的自动驾驶仪。如果你正在使用ardupilot,那么你需要在ardupilot / modules / mavlink / message_definitions / v1.0 / ardupilotmega.xml中添加一个新的xml消息定义。

您可以查看其他消息,了解它应该如何格式化。只需确保选择未使用的ID。

接下来,您需要决定如何将其放入代码中。您可以通过将消息ID添加到STREAM_EXTRA3来将其放在data_stream_send任务中。这将发送您的消息,就像在那里发送其他数据一样。作为其中的一部分,您需要使用pymavgen生成的函数,消息ID和枚举来定义实际打包数据结构的函数。这就是我在自己的ASH_DATA项目中所做的。您可以查看我所做的更改in my repository以供参考。请注意,其中一些包括更改以在pixhawk上接收灰数据并将数据添加到日志文件中。

鉴于您希望每秒运行一次,您可能希望添加到one_second_loop任务或创建自己的任务,只需使用新的消息ID调用try_send_message函数。

您当然需要将新消息合并到您的gcs中,以便您可以实际接收它,但这是另一回事。

希望这可以在正确的方向上推动其他人试图做同样的事情。