MAVLINK 是一种轻量级的消息传输协议,专为无人机、机器人及其他资源受限的嵌入式系统设计,用于组件间(如飞控、地面站、传感器、执行器)的通信。其核心是定义和传输结构化的消息(报文)。
解析 MAVLINK 报文的核心步骤:
-
识别帧头 (Magic/StX):
-
寻找报文的起始标志。这是解析的第一步。
-
MAVLINK v1: 帧头是
0xFE。 -
MAVLINK v2: 帧头是
0xFD。这是区分 v1 和 v2 的关键。
-
-
读取有效载荷长度 (Payload Length - Len):
-
紧跟在帧头后面(v1 和 v2 都是)。
-
一个字节 (
uint8_t)。 -
表示
payload字段的实际字节数。注意这不是整个报文的长度。
-
-
读取不兼容标志 (Incompatibility Flags - IncompFlag) 和兼容标志 (Compatibility Flags - CompFlag):
-
仅 MAVLINK v2: 在
Len字段之后。 -
各一个字节 (
uint8_t)。 -
IncompFlag: 指示接收方如果不理解其中设置的标志位,必须丢弃该报文(例如
0x01表示签名)。 -
CompFlag: 指示接收方如果不理解其中设置的标志位,可以安全忽略该标志位并继续处理报文(保留位)。
-
-
读取消息序列号 (Packet Sequence - Seq):
-
紧跟在
Len之后 (v1) 或在CompFlag之后 (v2)。 -
一个字节 (
uint8_t)。 -
由发送方维护,每个发送通道独立递增(通常每发送一条消息加 1),用于检测丢包。接收方用它来判断是否按顺序收到或是否有报文丢失。
-
-
读取系统 ID (SysID) 和组件 ID (CompID):
-
紧跟在
Seq之后。
-

最低0.47元/天 解锁文章
2684

被折叠的 条评论
为什么被折叠?



