MAVLINK协议简介

时间:2024-03-24 19:51:15

MAVLINK协议在安卓中的简单介绍

1.关于MAVLINK通信协议

Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组 的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微型飞行器(micro aerial vehicle)的通讯上。Mavlink是为小型飞行器和地面站(或者其他飞行器)通讯时常常用到的那些数据制定一种发送和接收的规则并加入了校验(checksum)功能。

 

2.MAVLINK数据结构

MAVLINK协议简介


说明:如上图所示,MAVLINK协议的通讯是以一条条这样的整套消息传输的,每一条消息称为一个消息贞,其中我们需要了解的是消息贞中的MSG和PAYLOAD这两块,MSG是消息类型的标识,比如飞行模式消息,定位消息等,PAYLOAD则装载着每个消息贞中的具体有实际作用的消息,比如飞行模式消息中具体的哪一个模式,定位消息中具体的经纬度等。

 

3.MAVLINK项目结构


MAVLINK协议简介

图3-1 MAVLINK协议结构

 

说明: 协议分四个包,四个包中主要用到的是两个类(Parser和MAVLINKPacket),其他类都可以看作是工具类。

4.MAVLINK主要功能类的详解

Parser解析类,该类的作用是将获取的数据进行解析,把解析好的数据打包成一个MAVLINKPacket类。Parser类里面包含了对数据的检查,以及丢包率的计算。

MAVLINKPacket数据包类,地面站和飞控之间的数据传输数据的形式都是该类的封包和解包(封包发送,接收解包)。该类包含了对数据的解包和封包,关键是解包。该类解包后会得到一个com.MAVLINK.Messages.ardupilotmega包下的类。

      com.MAVLINK.Messages.ardupilotmega包下的类就是前面所说的一条条消息贞。对消息贞中的数据的判断是根据 com.MAVLINK.Messages.enums包下的类来判断的

     com.MAVLINK.Messages.enums包下的类都是枚举类(包含了各种飞行数据的常量值)。我们可以将这个包看作是一本字典,在发送数据和接收数据的时候,

通过将数据和该包下的常量值的比较而获得得到准确的信息。

 

 

安卓MAVLINK的使用简介



MAVLINK协议简介

说明:

 

    发送数据:调用客户端里面的发送API,即可将数据发送给服务,服务就会将数据传给相关的类从而发送给数传

 

    接收数据:首先需要绑定服务,即客户端和服务绑定,一旦服务绑定成功,就会开启数据连接接口,开始读取数据。数传接收到的数据会传给服务,服务再将数据发送给客户端,客户端提供了数据接收监听接口。安卓全局类实现了该接口,并将数据传给MAVLINKMsghandler,最终MAVLINKMsghandler进行数据的分析和处理。

 

 

 

2.发送和接收数据类


MAVLINK协议简介 

说明:该包下提供了arm,校正,飞行模式,参数,远程遥控,路线点这些数据的发送类,每个类中提供了相应的API。MavLinkMsgHandler类是接收数据类,该类封装了数据接收后的各种API。