MAVLink 基础知识¶
MAVLink 是一种串行协议,最常用于在载具和地面站之间发送数据和命令
该协议定义了一大套报文,可在 common.xml 和 ardupilot.xml
MAVLink 信息几乎可以通过任何串行连接发送,不依赖于底层技术(wifi、900mhz 无线电等)。
这些信息并不保证一定会送达,这意味着地面站或配套计算机必须经常检查飞行器的状态,以确定命令是否已被执行
信息格式¶
信息不超过 263 字节(Mavlink 版本 1.0)或 280 字节(Mavlink 版本 2.0)。
发件人总是填写
系统 身份证
和组件 身份证
字段,以便接收方知道数据包来自哪里。数据包系统 身份证
是每个载具或地面站的唯一 ID。地面站通常使用 "255 "这样的高系统 ID,而载具默认使用 "1"(可通过设置 SYSID_THISMAV 参数)。参数组件 身份证
地面站或飞行控制器通常为 "1"。飞行器上其他具有 MAVLink 功能的设备(如配套电脑、云台)应使用相同的 "1"。系统 身份证
作为飞行控制器,但使用不同的组件 身份证
"这款"
留言 身份证
字段中可以看到 common.xml 和 ardupilot.xml 旁边的信息名称。例如 心跳 消息 ID 为 "0""这款"
数据
报文部分包含发送的各个字段值有关如何 新增对 MAVLink 消息的支持
高级信息流¶
MAVLink1 vs MAVLink2¶
MAVLink2 报文的最大长度为 280 字节,因为它们采用了兼容性标志并支持签名。
MAVLink2 扩展了 MAVLink1,允许在现有的 MAVLink1 报文中添加新字段,支持带有
留言 身份证
超过 "255",并增加了对签署信息的支持MAVLink2 与 MAVLink1 向后兼容,这意味着如果设备能理解 MAVlink2 信息,它当然也能理解 MAVLink1 信息。
如果只能理解 MAVLink1 的设备接收到包含附加字段(在 MAVLink2 下添加)的信息,设备将只能看到原始字段。也就是说,设备可以读取信息,但不能 "看到 "附加字段。
飞行控制器的串行端口(可能连接到遥测无线电)可通过设置
SERIALx_PROTOCOL
参数设置为 "2"(其中 "x "为飞行控制器上的串行端口号)参见 Mavlink2 文档 以获取更多信息(尤其是有关信息扩展名的信息)