Mavlink地面站编写之–协议分析

在看本文之前,请先了解mavlink通信协议,参看  http://blog.csdn.net/zm1_1zm/article/details/69950728
        Pixhawk/APM都是采用MAVLINK协议实现的飞控的数据链路传输。先简单介绍下mavlink协议。Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组 的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微型飞行器(micro aerial vehicle)的通讯上。Mavlink是为小型飞行器和地面站(或者其他飞行器)通讯时常常用到的那些数据制定一种发送和接收的规则并加入了校验(checksum)功能。据说亿航四轴的初期版本就是参考的MAVLINK协议或者说参考的APM飞控系统。
下面是mavlink的消息简介和官方指导连接:
https://pixhawk.ethz.ch/mavlink/
http://qgroundcontrol.org/mavlink/start
       1.1 mavlink消息结构分析:
MAVLINK的传输基本单位是消息帧,一帧的数据长度8bytes到263bytes不等

如图所示的消息帧结构,除了灰色外,其他格子都代表一个字节的数据,灰色格子里面的数据长度是不固定的。下面是每个消息帧的详细解释:

上文中已经提到了在mavlink消息帧里最重要的两个东西,一个是msgid;一个是payload,前者是payload中内容的编号,后者则存放了消息。消息有许多种类型,在官网的网页中中以蓝色的“#”加数字的方式来表示消息的编号如 “#0”(这样的表示方法应该是为了方便在网页中查找相应编号消息的定义)。在官网介绍网页里往下拉,大概拉到二分之一的位置处,开始出现“MAVLink Messages”的介绍,往下看是各种消息的数据组成说明。下面将以几个消息为例,讲解mavlink消息

以心跳包为例

我们接上数传在串口调试助手具体分析下MAVLINK消息的解析:

前面介绍知道MAVLINK的一包数据由FE开头的,一包数据由FE开头到下一个FE出现为截止。

我们来分析个心跳包:  FE  09  12   01   01   00  (00     00   00   00   02   03   51   03   03)   7B   7A

FE为包开头   09为数据包长度   12消息序号  01硬件系统序号  第五位是消息类型序号  括号里面是有效数据载荷(长度为9)  最后两位是数据校位。我们通过消息类型序号可以看到这是0号消息,0号消息是心跳包消息。

重点分析下这个长度为9的有效载荷,心跳包里面有6个成员变量。00     00   00   00   02   03   51   03   03这是有效消息本身会被当作结构体来做解析,mavlink库解析完了之后,就可以从心跳包里面解析出载具类型,处于什么模式。其他消息包也是类似的。我们一般不关心具体的消息解析,mavlink这个库本身支持很多类型的库,python,C++,C#,C语言的库,我们要用到那个平台

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值