其他分享
首页 > 其他分享> > mavlink协议从入门到放弃(一)

mavlink协议从入门到放弃(一)

作者:互联网

mavlink协议从入门到放弃(一)

最近比较忙,搞了个项目用到了mavlink协议,将数据上传至QGC上位机,之前稍微看了一下mavlink的协议,但是很粗略,这次记录一下。
先分享个关于mavlink的网站:
1.mavlink的官网,从里面可以了解mavlink协议,还有各个功能帧的组成和ID:https://mavlink.io/en

什么是MAVLINK协议

网站和参考资料

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
在这里插入图片描述

就是这个网站,如果想查看各个功能ID的组成,可以在左上角可以随便搜索一个功能帧的数字,比如心跳的#0,然后进入message,就可以看左上角就可以跳转到功能帧的地方了。
在这里插入图片描述

MAVLINK简介

因为在学习Mavlink协议的时候也参考了很多其他博主对该协议的讲解,所以也就提一下简介吧。
Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组 的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微型飞行器(micro aerial vehicle)的通讯上。Mavlink是为小型飞行器和地面站(或者其他飞行器)通讯时常常用到的那些数据制定一种发送和接收的规则并加入了校验(checksum)功能。
协议以消息库的形式定义了参数传输的规则。MavLink协议支持无人固定翼飞行器、无人旋翼飞行器、无人车辆等多种类型的无人机。MAVLink协议是在CAN总线和SAE AS-4 标准的基础上设计形成的。

MAVLINK协议包结构

协议结构

这里仅对mavlink_v1版本进行介绍。
在这里插入图片描述

mavlink协议解析

mavlink的协议开头都是以FE开始的。例如心跳包

FE 09 57 01 01 00 00 00 01 00 02 0C 51 03 03 04 5F

FE就是起始标志位,用于证明消息的来到。
而09就是数据帧里面的字节长度,也就是00 00 01 00 02 0C 51 03 03这一段。
57代表的是序列码,每次发一个数据,改位置数就加一,通常通过该位置来计算信号的质量。
01代表了发送本条消息帧的设备的系统编号,使用PIXHAWK飞控时默认的系统编号为1,用于mavlink消息帧接收端识别是哪个设备发来的消息。
第5个位没什么卵用。
00表示的为,通过刚刚的网站可以知道心跳包的消息ID是#0,所以第六位为00,同理其他的消息ID也写在这里。
最后两个是CRC的校验位。

心跳包它一般用来表明发出该消息的设备是活跃的,飞行器和地面站都会发出这个信号(一般以1Hz发送),地面站和飞行器会根据是否及时收到了心跳包来判断是否和飞行器或地面站失去了联系。如果我们想要将我们的单片机通过串口将数据发送到QGC地面站上显示的话,心跳包是必不可少的,如果我们不想麻烦的将整个mavlink协议移植到单片机上,只想用显示功能的话,只需要通过串口发送特定的消息帧即可。
心跳包发送后可以连接地面站,连接成功后可以打开QGC的分析工具,看到发送的消息帧情况。
在这里插入图片描述
在心跳包的9个数据中来一个一个介绍,也可以通过mavlink官网去看,这里做一个简单介绍,第一个是占一个字节的飞行器类型数据(type),这个数据表示了当前发消息的是什么飞行器,比如四旋翼,固定翼等等。type的取值如何与飞行器类型对应,这要在官方的mavlink消息介绍网页上找,位于网页开始出的数据枚举中。
第二个参数是自驾仪(即通常所说的飞控)类型,比如apm,ppz,Pixhawk等飞控,具体定义查找和之前查找飞行器类型时的方法一样。同样的,对于发送心跳包的飞行器来说代表了自己的飞控类性,对地面站发出的心跳包来说意义不大。
第三个参数是基本模式(base mode),是指飞控现在处在哪个基本模式,对于发心跳包的地面站来说没有意义,对于发送心跳包的飞控来说是有意义的。这个参数要看各个飞控自己的定义方式,mavlink介绍网页并不会给出具体的模式。在Pixhawk中基本模式可以分为使用用户模式(custom mode)还是基本模式(这里有点绕,其实是就是是否使用用户模式)。使用用户模式将在讲下个参数时说明,使用基本模式又会分为自动模式(auto),位置控制模式(posctl)和手动模式(manual)。
第四个参数是用户模式(custom mode),大概说一下Pixhawk的用户模式。以多轴为例。它分为主模式(main mode)和子模式(sub mode),两种模式组合在一起成为最终的模式,主模式分为3种,手动(manual),辅助(assist),自动(auto)。手动模式类似apm的姿态模式。在辅助模式中,又分为高度控制模式(altctl)和位置控制模式(posctl)两个子模式,高度控制模式就类似apm的定高模式,油门对应到飞行器高度控制上。位置模式控制飞行器相对地面的速度,油门和高度控制模式一样,yaw轴控制和手动模式一样。自动模式里又分为3个子模式,任务模式(mission),留待模式(loiter),返航模式(return),任务模式就是执行设定好的航点任务,留待模式就是gps悬停模式,返航模式就是直线返回home点并自动降落。
第五个是系统状态(system status),查定义就好了,其中的standby状态在Pixhawk里就是还没解锁的状态,active状态就是已经解锁,准备起飞的状态。
第六个是mavlink版本(mavlink version)。

标签:协议,00,入门,飞行器,模式,mavlink,心跳,放弃
来源: https://blog.csdn.net/qq_43046763/article/details/117756325