无人机的通用语言,你懂吗?
共 1 个回答
1、概述
2、数据帧介绍
3、消息(PAYLOAD)介绍
4、举个栗子
5、传输性能介绍
6、缩略语
1、概述
MavLink(Micro Air Vehicle Link)是一种用于小型无人机的通信协议,2009年由劳伦兹-迈耶(Lorenz Meier)首次发布,该协议遵守LGPL开源协议。该协议广泛应用于地面站(GroundControl Station,GCS)与无人机(Unmanned vehicles)之间的通信,同时也应用在无人机内部子系统之间的内部通信中,协议以消息库的形式定义了参数传输的规则。MavLink协议支持无人固定翼飞行器、无人旋翼飞行器、无人车辆等多种类型的无人机。MAVLink协议是在CAN总线和SAE AS-4 标准的基础上设计形成的。
2、数据帧
让我们从协议的最底层开始说起——数据帧
如图所示,MAVLink数据帧的长度是变化的,变化范围在8字节~263字节之间,数据帧长度主要取决于PAYLOAD的长度,其他字节都是固定的,具体包括:
第一字节:STX
数据帧的开始标志,内容为“0xFE”(v1.0版),“0x55”(v0.9版)
第二字节:LEN
表示PAYLOAD部分的长度,范围0~255
第三字节:SEQ
表示数据帧的序号(seqence),每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。这个序号用于MAVLink数据帧接收端判断消息是否丢失。
第四字节:SYS
表示发送本条数据帧的设备系统编号,编号范围1~255,系统使用此编号来区别在同一个网络中相互通信的不同设备。
第五字节:COMP
表示发送本条数据帧的设备系统的组件(component)编号,系统使用此编号来区别某个设备中的不同组件。
第六字节:MSG
表示PAYLOAD的消息编号,系统根据此编号来判断PAYLOAD中是什么消息,并对PAYLOAD消息进行解析。
第七部分:PAYLOAD
表示本次数据帧传输的具体内容,也是数据帧的核心内容,PAYLOAD的格式定义需要遵从MAVLink协议消息格式的定义,否则不能被系统正确的识别与解析。
第八部分:CKA和CKB
最后两个字节是校验位,CKB是高八位,CKA是低八位,校验算法为CRC16,主要作用是判断数据帧在传输过程中是否有丢失数据的情况,以及校验是否为相同版本MAVLink协议在相互通信。
3、消息
通过上面对数据帧的介绍,大家可以了解到,数据帧最核心的部分就是PAYLOAD部分,对于完全遵照MAVLink协议开发的系统来说,PAYLOAD部分的内容应该对应所有定义好的消息(MAVLink Messages)。
那么问题就来了,MAVLink通信协议都规定了哪些消息呢?
前面提到过,数据帧的第六字节(MSG)表示消息编号,0~255有256种组合,也就是说,共有256种消息类型。但是目前MAVLink协议只定义并使用了#0~#149,以及#230~#254消息编号。#150~#229是保留的消息编号,用来给开发者自己定义,以满足特定的需求。具体消息内容较多,感兴趣的同学请点击下面的链接查看。
https://pixhawk.ethz.ch/mavlink/#HEARTBEAT
4、举个栗子
以第一个消息为例,这个消息的名字是HEARTBEAT(心跳信号),编号为#0。这个信号对于飞行安全来说是十分重要的,飞机和地面站的通信,每隔一秒钟(官方推荐为一秒,可以通过软件自行设定发送频率)双方都会发送和接收到这个心跳信号,由此来判断对方是否还“活着”,否则就是失联啦!
心跳消息具体都发送哪些内容呢?
按照官方文档的介绍,可以知道该消息包括以下6部分内容:
1)无人机的类型:type,1字节
2)飞控的类型:autopilot,1字节
3)系统基础模式:base_mode,1字节
4)用户模式:custom_mode,4字节
5)系统状态:system_status,1字节
6)协议版本:mavlink_version,1字节
合计9字节,这也就是PAYLOAD的长度,如果无人机与地面站之间正在发送本条数据帧,数据帧的总长度应该是17字节。
5、传输性能
Link speed | Hardware | Update rate | Payload | Float values |
115200 baud | XBee Pro 2.4 GHz | 50 Hz | 224 bytes | 56 |
115200 baud | XBee Pro 2.4 GHz | 100 Hz | 109 bytes | 27 |
57600 baud | XBee Pro 2.4 GHz | 100 Hz | 51 bytes | 12 |
9600 baud | XBee Pro XSC 900 | 50 Hz | 13 bytes | 3 |
9600 baud | XBee Pro XSC 900 | 20 Hz | 42 bytes | 10 |
6、缩略语
GCS——Ground Control Station(地面控制站)
CAN——Controller Area Network(控制器局域网络,CAN总线)
SAE——Society of Automotive Engineers(美国汽车工程师学会)
MAV——Micro Air Vehicle(小型飞行器)
资料来源于无人机系统标准化(公众号UASA)
如果您觉得本文有价值,请点击右上角“…”扩散!
有趣、有深度、有技术,请扫码关注“机器人网”
- 1