Mavlink协议理解Pixhawk APM(一)

2023-05-16

有问题请回复评论,然后邮箱提醒我回复,550746284@qq.com 私信不回。。。

本系列博客共三篇,这是第一篇。

之前看了mavlink协议,网上关于mavlink的资料不多。本文大概总结了下对mavlink协议的理解。以下如不说明都是说mavlink v1.0版本。

首先附上mavlink的各个消息的简介https://pixhawk.ethz.ch/mavlink/(这里的内容很多,建议大概了解mavlink后再去浏览),mavlink协议介绍http://qgroundcontrol.org/mavlink/start

之后会在我的资源里上传一份为初学者准备的mavlink资料(转载)已经上传至笔者资源,免费下载。mavlink 纯小白教程(英文)它用通俗的说法帮助新人理解什么是mavlink,mavlink能干嘛等等。资料只有第一部分,第二部分笔者没有找到(可能是原作者没继续第二部分吧)。


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

【1】下面开始说介绍mavlink所发送的数据结构。Mavlink传输时的基本单位是消息帧。


如图所示,每个消息帧都是上述的结构,除了灰色外,其他的格子都代表了一个字节的数据。

红色的是起始标志位(stx),在v1.0版本中以“FE”作为起始标志。这个标志位在mavlink消息帧接收端进行消息解码时有用处。

第二个格子代表的是灰色部分(payload,称作有效载荷,要用的数据在有效载荷里面)的字节长度(len),范围从0到255之间。在mavlink消息帧接收端可以用它和实际收到的有效载荷的长度比较,以验证有效载荷的长度是否正确。

第三个格子代表的是本次消息帧的序号(seq),每次发完一个消息,这个字节的内容会加1,加到255后会从0重新开始。这个序号用于mavlink消息帧接收端计算消息丢失比例用的,相当于是信号强度。

第四个格子代表了发送本条消息帧的设备的系统编号(sys),使用PIXHAWK刷PX4固件时默认的系统编号为1,用于mavlink消息帧接收端识别是哪个设备发来的消息。

第五个格子代表了发送本条消息帧的设备的单元编号(comp),使用PIXHAWK刷PX4固件时默认的单元编号为50,用于mavlink消息帧接收端识别是设备的哪个单元发来的消息(暂时没什么用) 。

第六个格子代表了有效载荷中消息包的编号(msg),注意它和序号是不同的,这个字节很重要,mavlink消息帧接收端要根据这个编号来确定有效载荷里到底放了什么消息包并根据编号选择对应的方式来处理有效载荷里的信息包。

最后两个字节是16位校验位,ckb是高八位,cka是低八位。校验码由crc16算法得到,算法将整个消息(从起始位开始到有效载荷结束,还要额外加上个MAVLINK_CRC_EXTRA字节)进行crc16计算,得出一个16位的校验码。之前提到的每种有效载荷里信息包(由消息包编号来表明是哪种消息包)会对应一个MAVLINK_CRC_EXTRA,这个 MAVLINK_CRC_EXTRA 是由生成mavlink代码的xml文件生成的,加入这个额外的东西是为了当飞行器和地面站使用不同版本的mavlink协议时,双方计算得到的校验码会不同,这样不同版本间的mavlink协议就不会在一起正常工作,避免了由于不同版本间通讯时带来的重大潜在问题。

为了方便叙述,消息包将称作包,包所代表的信息称作消息。上图中的sys将称为sysidcomp将称为compidmsg将称为msgid

官方的介绍如下图:



由于图片上传量到达上限,将在接下去的博客中继续介绍mavlink协议。下节主要介绍mavlink里消息的种类和如何看懂开始时提到的那个官方的mavlink消息介绍。






本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mavlink协议理解Pixhawk APM(一) 的相关文章

  • ros机器人搭建总纲

    author xff1a superDeveloper date 2017 11 29 type note 近期准备搭建一个ROS机器人平台 xff0c 建立此博客记录搭建过程以及相关问题的解决办法 xff0c 作为笔记 xff0c 亦供相
  • ros gmapping 运行错误:Assertion 'beams<LASER_MAXBEAMS' failed>

    在使用真实激光器发布数据的时候 xff0c 出现了 Laser is mounted upward警告 xff0c 以及slam gmapping tmp buildd ros hydro openslam gmapping 0 1 0 2
  • realloc():invalid next size....错误

    Author SuperDeveloper Date 2018 1 2 在程序中使用了realloc函数 xff0c 更改结构体数组的大小 xff0c 错误代码如下 xff1a struct point span class hljs su
  • git简单命令笔记

    这是一篇关于git的使用笔记 xff0c 刚刚开始使用git 1 创建git本地仓库 xff1a 在你需要版本控制的项目Project根目录下右键点击Git Bash here执行git init 然后在该目录下生成 一个 git的隐藏文件
  • 源码编译Boost库的正确姿态

    源码编译Boost库的正确姿态 写在前面step 1 step 2 step 3 step4 写在前面 项目需要编译pcl库到arm平台 xff0c 交叉编译Boost xff0c Eigen3 Flann 之后再编译pcl库的时候总是报错
  • 第一讲、四旋翼的整体控制方案

    各位朋友 xff0c 我们工作室以后会长期更新一些飞行器干货 xff0c 本部分先介绍四旋翼的整体控制方案及相关设计 控制系统的框架如下 xff0c 借鉴网上来源图片 xff0c 传感器主要是姿态传感器 xff0c 对于大四轴而言 xff0
  • 网页中屏蔽鼠标右键、Ctrl+N、Shift+F10

    lt script language 61 34 Javascript 34 gt 屏蔽鼠标右键 Ctrl 43 N Shift 43 F10 F5刷新 退格键 屏蔽F1帮助 function window onhelp return fa
  • asp.net上一页下一页的部分代码

    lt asp linkbutton id 61 34 btnFirst 34 nclick 61 34 PagerButtonClick 34 runat 61 34 server 34 CommandArgument 61 34 0 34
  • Visual C# 编程操作Excel

    Visual C 编程操作Excel 2004 08 20 作者 xff1a 邵回祖 出处 xff1a ahcit http www yesky com SoftChannel 72342380468109312 20040819 1844
  • C#保存图片到IMAGE字段

    byte FileByteArray System IO MemoryStream ImageStream this sqlConnection1 ConnectionString 61 strConn try if this sqlCon
  • Android-蓝牙sco通话

    APP调用AudioManager startBluetoothSco frameworks base media java android media AudioManager java public void startBluetoot
  • Docker启动时的报错汇总

    八个Docker常见故障 https mp weixin qq com s 2GNKmRJtBGHhUyVBRbRgeA 八个Docker常见故障 报错一 xff1a error initializing graphdriver Docke
  • 利用JAVA操作EXCEL文件

    利用JAVA操作EXCEL文件 转载自 xff1a www csdn net 2003 年 1 月 在开源世界中 xff0c 有两套比较有影响的API可供使用 xff0c 一个是POI xff0c 一个是jExcelAPI 其中jExcel
  • 网站不能更新,错误 '80004005'

    网站数据转移到了另一台服务器 后台数据不能更新 因为程序原因也无错误信息报出 数据库为ACCESS数据库 初步估计是不是数据库只读或是NTFS的权限问题 对数据库目录添加EVERYONE和IIS的来宾帐户写入和修改权限 还是不能更新数据 最
  • vb6实现程序延时的几种方法

    VB6在开发发贴机时 提交数据要用到延时程序 让程延时和等待 从网上找了三种方法 三种方法以最后一种最好用 第一种如果不DOEVENTS的话 会使人感觉程序无反应一样 有以下方法 xff1a 1 使用Windows API函数Sleep 新
  • 初识SEO,SEO学习笔记一

    SEO 是一种方法 更是一种思想 如果只是为了关键字 那他就只是一种工具 一种方法 工具和方法总有过时的时候 而思想 则可以通达 可以明朗 可以提升层次 应当明的有关SEO的几个概念 目标关键词和长尾关词 一直以来 对这个概念都是只能意会
  • 【信号分析与处理】Matlab运算带有冲激函数的积分

    syms t span class token punctuation span span class token comment 定义变量 span span class token keyword int span span class
  • 【计算方法】Python二分法求解方程

    span class token comment 二分法求方程零点 span span class token keyword from span math span class token keyword import span span
  • 【信号分析与处理】-离散信号分析-MATLAB stem函数的使用

    1 stem xff08 y xff09 1 1如果y是向量 xff0c 则从1开始每隔单位长度描点 行向量列向量描点效果相同 e g x 61 1 2 3 4 3 3 2 1 5 stem x 1 2如果y是一个n m矩阵 xff0c 则
  • 基于Shape From Shading(SFS)原理的侧扫声呐海底三维重建项目进度记录

    quad 本文主要用于记录 海底三维重建算法研究 课题毕业设计的进度与内容概括 quad 2021 12 24

随机推荐