2

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

4

2 回答 2

2

在这里您可以找到有关如何向 mavlink 协议添加新消息以及如何处理它的详细步骤。

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

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

于 2018-02-01T23:44:23.187 回答
0

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

您可以查看其他消息以了解其应如何格式化。只要确保您选择了一个未使用的 id。

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

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

您当然需要将新消息合并到您的 gcs 中,这样您才能真正收到它,但这是另一回事。

希望这可以推动其他试图做同样事情的人朝着正确的方向前进。

于 2016-12-06T07:36:40.967 回答