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

小型无人机通信协议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(小型飞行器)

原文发布于微信公众号 - 机器人网(robot_globalsources)

原文发表时间:2016-05-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

如何使用 C# 爬虫获得专栏博客更新排行

昨天,梦姐问我们,她存在一个任务,找到 关注数排行100 和 浏览量排行100 的专栏博客,在2017年还有更新的专栏。 梦姐说他要出去一趟,M大神在吃饭,于是...

1371
来自专栏点滴积累

geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践

     眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表。 一、B...

3305
来自专栏walterlv - 吕毅的博客

理解 Roslyn 中的红绿树(Red-Green Trees)

2018-07-19 11:48

601
来自专栏北京马哥教育

Python爬虫爬取美剧网站

一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前...

1790
来自专栏Windows Community

Windows Phone 8.1 新特性 - 常用的启动器

本篇为大家介绍一下 Windows Phone 8.1 中部分常用启动器的实现方式。分别是 呼叫电话、发送短信、发送邮件、添加约会到日历、启动地图、地图路线显示...

2565
来自专栏施炯的IoT开发专栏

微软移动 Nokia Lumia SensorCore SDK 介绍及上手体验

    早在今年的BUILD大会上,诺基亚就宣布了SensorCore以及它的部分演示。今天,它终于面世了,大家可以去Building Apps for Win...

2777
来自专栏FreeBuf

说一道简单的BCTF题 – 分分钟而已

作者Int_Null93 今天闲的没事,刚好看到FB有两三篇讲BCTF的,也来说一道题目,就是WEB100的那道。如图所示: ? 首先跳转到链接看一看,嗯。。。...

2058
来自专栏机器之心

入门 | 始于Jupyter Notebooks:一份全面的初学者实用指南

3007
来自专栏牛客网

快手Java开发面经(2技术面)

如果你要做一件事,请不要炫耀,也不要宣扬,只管安安静静的去做。因为那是你自己的事,别人不知道你的情况,也不可能帮你去实现。千万不要因为虚荣心而炫耀。也不要因为别...

6452
来自专栏牛客网

C++后台腾讯WXG实习面经(已拿offer)

2105

扫码关注云+社区

领取腾讯云代金券