Micro Air Vehicle Link(简称MAVLink)用于无人系统(例如,机器人、无人机、无人车、无人船和无人潜航器)。它定义了一组无人系统和地面站之间的消息交换规则。此协议广泛用于无人驾驶系统中,特别是ArduPilot和PX4无人驾驶系统,MAVLink协议提供了强大的功能,不仅用于监视和控制无人系统任务,也将无人系统集成进入互联网。

1.MAVLink消息结构介绍
图2 无人机和地面站通信示意图
序号 |
名称 |
字节序号 |
含义 |
1 |
STX |
0 |
一帧的开始,MAVLink 1.0中,该值固定为0xFE。 |
2 |
LEN |
1 |
消息载荷的长度。 |
3 |
SEQ |
2 |
消息的序列号,当开始发送消息时,该值从0增长到255,到255后又重置为0,重新开始增长。 |
4 |
SYS ID |
3 |
系统编号,每个无人机系统都有一个系统编号用于在通信中标识自己,地面控制站的系统编号通常为255。 |
5 |
COMP ID |
4 |
组件编号,无人机系统中不同的组件用组件编号来进行区分,组件编号标识发送消息的无人机系统的组件。在无人机系统中有27种不同类型的组件。 |
6 |
MSG ID |
5 |
消息编号,标识不同种类的无人机消息。例如编号为0的消息是无人机的心跳消息。 |
7 |
PAYLOAD |
6(N=1) 6~5+N (N>=2) |
消息载荷,不同类型的消息的载荷在结构、内容和长度上不同。 |
8 |
CHECKSUM |
6+N~7+N |
校验和,通过计算和检查校验和来判断消息的有效性。需要注意的是校验和的计算不包括STX字段,并且根据MSG ID的不同,校验和计算前在消息的末尾会加入一个种子值一起计算。 |
序号 |
名称 |
字节序号 |
含义 |
1 |
STX |
0 |
一帧的开始,MAVLink 1.0中,该值固定为0xFE。 |
2 |
LEN |
1 |
消息载荷的长度。 |
3 |
INC FLAGS |
2 |
不兼容性标志,如果实现不能识别该标志,则丢弃数据包。(签名消息中,该字段为0x01) |
4 |
CMP FLAGS |
3 |
兼容性标志,用于指示功能不会阻止MAVLink库处理数据包。即实现如果不识别该标志,数据包依然可以进入后续处理。 |
5 |
SEQ |
4 |
消息的序列号,当开始发送消息时,该值从0增长到255,到255后又重置为0,重新开始增长。 |
6 |
SYS ID |
5 |
系统编号,每个无人机系统都有一个系统编号用于在通信中标识自己,地面控制站的系统编号通常为255。 |
7 |
COMP ID |
6 |
组件编号,无人机系统中不同的组件用组件编号来进行区分,组件编号标识发送消息的无人机系统的组件。在无人机系统中有27种不同类型的组件。 |
8 |
MSG ID |
7~9 |
消息编号,标识不同种类的无人机消息。例如编号为0的消息是无人机的心跳消息。 |
9 |
PAYLOAD |
10(N=1) 10~9+N (N>=2) |
消息载荷,不同类型的消息的载荷在结构、内容和长度上不同。 |
10 |
CHECKSUM |
10+N~11+N |
校验和,通过计算和检查校验和来判断消息的有效性。需要注意的是校验和的计算不包括STX字段,并且根据MSG ID的不同,校验和计算前在消息的末尾会加入一个种子值一起计算。 |
11 |
SIGNATURE |
N+12~N+25 |
签名,用于消息合法性认证的签名,非签名消息中无该字段,该字段由三部分组成,按照顺序分别是LinkID、Timestamp和Signature。 |
2.MAVLink协议安全性分析
原文始发于微信公众号(博智非攻研究院):无人机通信协议MAVLink简介