任务二 MAVLink协议
【任务引入】
Pixhawk飞控通过数传电台连接Mission Planner地面站后,光标乱跑。
【任务分析】
Pixhawk和APM飞控都是采用MAVLink协议实现与Mission Planner或者QGC地面站的数据链路传输。学习了解MAVLink协议,有助于分析并排除地面站端由于数据通信造成的故障。
【相关知识】
MAV Link协议最早由苏黎世联邦理工学院计算机视觉与几何实验组的Lorenz Meier于2009年发布,该协议遵循LGPL开源协议。MAVLink是一种非常轻量级的消息传输协议,用于地面控制终端(地面站)与小型无人机之间(以及机载无人机组件之间)的通信,是在串口通信基础上发展的一种更高层的开源通信协议,主要应用在微型飞行器(Micro Aerial Vehicle)的通信上。
1.主要特性
(1)高效性。MAVLink 1的每个数据包只有8个字节的开销,包括起始标志和数据包丢弃检测。MAVLink 2只有14个字节的开销,但它是一个更安全且可扩展的协议。因为MAVLink不需要任何额外的帧,所以非常适合通信带宽非常有限的应用程序。
(2)可靠性。自2009年以来,MAVLink一直被用于多种载具、地面站(和其他节点)之间的通信,而这些通信信道中,不乏各种挑战性(如高延迟、噪声)。同时,MAVLink也具备检测数据包丢失、损坏和数据包身份验证的功能。
(3)单个网络上最多可容纳255个并行系统(载具、地面站等)。
(4)支持offboard和onboard通信。例如,地面站和无人机之间的通信(offboard),以及无人机自动驾驶仪与启用MAVLink的无人机摄像头之间的通信(onboard)。
2.数据结构
MAVLink传输时的基本单位是消息帧。帧的结构如图8-32所示。
图8-32 MAVLink消息帧
(1)图8-32中,STX为起始标志位,在v1.0版本中以“FE”作为起始标志。当MAVLink消息帧到达接收端时,可通过查找标志位找到消息帧的起始位置,进而对消息帧进行解码。
(2)LEN代表的是PAYLOAD(有效荷载)的字节长度,范围从0到255。在MAVLink消息帧接收端可以用它和实际收到的有效荷载的长度进行比较,以验证有效荷载的长度是否正确。
(3)SEQ代表的是本次消息帧的序号,每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。这个序号用于MAVLink消息帧接收端计算消息丢失比例用的,相当于是信号强度(图8-33)。
(4)SYS是发送本条消息帧的设备的系统编号,用于MAVLink消息帧接收端识别是哪个设备发来的消息。使用Pixhawk飞控刷Px4固件时默认的系统编号为1。
(5)COMP是发送本条消息帧的设备的单元编号,用于MAVLink消息帧接收端识别是设备的哪个单元发来的消息。使用Pixhawk刷Px4固件时默认的单元编号为50。
(6)MSG是有效载荷中消息包的编号,MAVLink消息帧接收端要根据这个编号来确定有效荷载里到底放了什么消息包,并根据编号选择对应的方式来处理有效荷载里的信息包。
(7)最后两个字节是16位校验位,CKB是高8位,CKA是低8位。校验码由CRC16算法得到,算法将整个消息(从起始位开始到有效载荷结束,还要额外加上MAVLink_CRC_EXTRA字节)进行CRC16计算,得出一个16位的校验码。有效载荷里信息包(由消息包编号来表明是哪种消息包)会对应一个MAVLINK_CRC_EXTRA,这个MAVLINK_CRC_EXTRA是由生成MAVLink代码的xml文件生成的,加入这个额外的字节是为了当飞行器和地面站使用不同版本的MAVLink协议时,双方计算得到的校验码会不同,从而避免了由于不同版本间通信时带来的重大潜在问题。
3.消息种类
MAVLink消息帧里最重要的两个东西是Msgid和Payload,前者是Payload中内容的编号,后者则存放了消息。消息有许多种类型,以“#”加数字的方式来表示消息的编号,如“#0”。MAVLink提供了多种消息,同时也能让用户自定义消息。下面简要介绍3种消息。
(1)心跳包。#0消息为心跳包(Heartbeat)。它一般用来表明发出该消息的设备是活跃的,飞行器和地面站都会发出这个信号(一般以1 Hz的频率发送),地面站和飞行器会根据是否及时收到了心跳包来判断是否和飞行器或地面站失去了联系。
由表8-2可以看出,心跳包由6个数据组成,第一个是占一个字节的飞行器类型数据(type),这个数据表示了当前发消息的是什么飞行器,如四旋翼、固定翼、共轴直升机等。这个飞行器类型,对于发心跳包的地面站来说作用不是很大;对于飞行器端来说代表了当前飞行器的类型,地面站可以根据这个参数来判断飞行器的类型并做出相应的反应。
图8-33 MP地面站HUD窗口
表8-2 心跳包结构
第二个参数是飞控类型,如APM、PPZ、Pixhawk等飞控。同样,对于发送心跳包的飞行器来说代表了自己的飞控类型,对地面站发出的心跳包来说意义不大。
第三个参数是基本模式,指的是飞控现在处在哪个基本模式,对于发心跳包的地面站来说没有意义,对于发送心跳包的飞控来说是有意义的。这个参数要看各个飞控自己的定义方式。在Pixhawk中基本模式可分为使用用户模式和使用基本模式。使用基本模式分为自动模式、位置控制模式和手动模式。一般情况下都会使用用户模式。
第四个参数是用户模式。对于多轴无人机来说,分为主模式和子模式,两种模式组合在一起成为最终的模式。主模式分为手动模式、辅助模式、自动模式。手动模式类似APM的姿态模式。在辅助模式中,又分为高度控制模式和位置控制模式两个子模式,高度控制模式就类似APM的定高模式,油门对应到飞行器高度控制上;位置模式控制飞行器相对地面的速度,油门和高度控制模式一样,偏航控制和手动模式一样。自动模式分为3个子模式,分别是任务模式、留待模式、返航模式,任务模式就是执行设定好的航点任务,留待模式就是GPS悬停模式,返航模式就是直线返回Home点并自动降落。
第五个参数是系统状态。其中的Standby状态在Pixhawk里就是还没解锁的状态,Active状态就是已经解锁,准备起飞的状态。
(2)发送长命令。该消息的标号为#76,一般是地面站发送给飞控命令用的。该消息组成见表8-3。
表8-3 #76消息组成
目标系统为命令的接收方,即目标系统编号。目标部件为命令的接收单元,即目标单元编号。Command数据是这条命令的编号,用于区别不同的命令。Confirmation为收到命令后回复确认信号。后面的7个参数是飞控执行这条命令所需的参数。
(3)GPS状态该消息的标号为#25,能够展示对接收机可见的卫星的状态信息。该消息最多能包含20颗卫星的状态信息。其组成见表8-4。
表8-4 GPS状态信息组成
4.地面站和飞控的通信流程
一般飞控在连接上地面站后都会主动向地面站发送心跳包、飞行器姿态、系统状态、遥控器信号等组成的数据流。各个数据都会以一定的频率发送,如心跳包一般是1 Hz,姿态信息要快一些,Pixhawk飞控用数传连接QGC时的姿态数据发送频率在7~8 Hz。一般地面站会在刚连接上飞控时发送命令,请求飞控传回所有参数,飞控根据自己的情况判断是否接受地面站的请求,并根据不同的命令执行相应的操作(有些命令需要飞控回复地面站确认信号)。之后地面站根据用户的操作会发送相应的MAVLink消息给飞控,如设置航点、改写飞控参数等。
【任务实施】
故障分析:
(1)飞机上电,飞控和天空端数传电台开始工作,默认情况下飞控开始通过数传电台下发心跳帧,频率为1秒1次;
(2)地面电台连接计算机,地面电台上电后立即收到了天空端发过来的数据,并开始转发给计算机(图8-34);
(3)在地面电台刚插入计算机时,计算机开始识别地面电台并加载驱动,这时地面电台又在不断发送数据给计算机,从而计算机把地面电台识别成了一个“串口鼠标”,进而开始利用地面电台发送过来的数据控制鼠标移动。
图8-34 地面电台连接计算机
解决方法:
基于上述分析,排除故障的方法是:先将地面电台连接计算机,并打开地面站;然后给飞机上电。
【拓展阅读】
UAV遥测遥控链路
图8-35所示为UAV遥测遥控通信的工作原理框图,UAV遥测遥控通信实际上是一种特殊的信息传输方式,是利用无线上、下行链路完成数据和指令的传输与交互。
图8-35 UAV遥测遥控通信工作原理
UAV的遥测是指利用UAV自动驾驶仪上的各种传感器,将采集到的多路信号包括UAV自身的运动和变化参数、任务设备的状态参数等,按某种多路复用方式集合起来调制射频载波,最后经无线电下行信道传递到地面测控终端设备,用以显示、读取飞机的状态参数及侦察信息数据,从而完成遥测的全过程。
UAV的遥控是指地面控制站将飞行任务控制命令打包成指令形式,通过无线电上行信道发送至UAV自动驾驶仪。自动驾驶仪进行指令解码即得到了开关或连续指令等信号。
传统UAV遥测遥控链路与通用航空遥测通信是一致的,但是根据UAV的不同类型,如高空大航程UAV则需要借助卫星链路来增加遥测遥控范围。因此,可将UAV遥测遥控链路归结为如图8-36所示的结构。从图中可以看出,UAV遥测遥控系统包含了空-地链路(链路A、B),还可包含地-地链路(链路C)和一些卫星链路(链路I、J、K)。
图8-36 UAV遥测链路
UAV常用遥测遥控频段根据各国的频谱分配规范,主要分布在VHF/UHF频段、L、S、C、X和Ku频段。UAV遥.控和遥测在各频段使用资源的分配比例见表8-5。UAV无线遥测遥控链路是与其功能相匹配的,表8-6所示为基本UAV遥测遥控应用相关特性。
表8-5 UAV使用各频段资源的分配比例 %
表8-6 UAV遥测遥控应用相关特性
【巩固提高】
1.MAVLink协议的主要特点是什么?
2.简述MAVLink消息帧的结构。
3.飞控发给地面站的心跳包包含有哪些信息?
4.简述飞控和地面站的通信流程。