我是Mavlink的新手,我想在Mavlink协议中添加一条新消息,并定期每秒发送一次。我该怎么办?
答案 0 :(得分:2)
在这里,您可以找到有关如何向mavlink协议添加新消息以及如何处理它的detailed steps。
将新邮件定义添加到mavlink子模块中的common.xml或ardupilotmega.xml文件中。
向主要车辆代码添加功能以处理发送或接收命令。
答案 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中,以便您可以实际接收它,但这是另一回事。
希望这可以在正确的方向上推动其他人试图做同样的事情。