无人机的通用语言,你懂吗?

共 1 个回答

切换为时间排序
reak

2020-10-24 12:46:05

小型无人机通信协议MAVLink解析


0、目录

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 条
前往
72回答数