第七章 PX4-Pixhawk-Mavlink解析
第七章 PX4-Mavlink解析
首先我们是还是来说一说mavlink吧。Mavlink协议是无人机的一种开源通信协议。可以理解就是按照一定的格式来发送数据。
这一章节涉及到了消息的打包发送和接收解析。
首先我们还是找到入口函数然后回到脚本启动中找到mavlink的启动 ,这个找到应该不难吧,前面几章都有这个。这里有一个需要提一下,很多人在后台nsh调试出现乱码需要拔掉SD卡就行了,造成这个问题的原因是同时也发送了mavlink消息,这个的启动如图:
回到start函数找到创建的任务start_helper在到else中找到task_main中。首先还是对波特率进行初始化设置速率设置模式设置。然后根据启动参数我们可以知道_daterate=1200,_device_name=/dev/tty1很显然数传用的是串口1,我们对应到硬件确实是串口1哦,这个没什么好说的吧。
然后就是选择控制模式这个也可以找到,在new初始化的时候就可以看到。进入这个if可以看到对串口进行了配置这个没什么好说的跟GPS的配置方式差不多,如果大家不明白去看看GPS这一章节。然后初始化发送是否有冲突。更新mavlink参数所有的参数都是有用的这里贴出一个网站http://mavlink.org/messages/common大家自己去查查看,那些参数如果英文水平还可以的话可以自己去理解。
接着就创建了mavlink消息接收这里面就也创建了一个任务查看这个start_helper函数,首先还是new 然后执行receive_thread函数,在这个函数中一开始获取串口,到while中开始读取串口数据然后就需要解析获取的数据这里有两个一样的我们用的mavlinkV2.0,剩下的就自己找。然后就是获取数据ID 并解析这里的解析需要自己去定义结构体然后去赋值和发布数据(最好是用msg文件)。这里我们举个例子这个消息帧是138,里面就有对接收到的数据赋值然后就是发布数据。
在回到mavlink_main.cpp中继续往下分析,接下来就是数据流的配置和参数的数据流的配置。往下走你可以看到switch语句这里面就有对数据发送频率配置了。如果某些没用的数据或者不是很重要的数据你想传的慢一点或者快一点就在这里修改了哦。。讲到这个configure_stream数据函数,接下来就对这个进行描述一下,熟悉了这个你就可以自己添加数据进行传输了。首先找到这个函数,前面是对数据进行搜索是否存在,然后通过for来找到这个数据流的列表,这里我们需要看一看streams_list列表了这是一个数组都是对这些要发送的数据进行一个初始化。我们随意找一帧数据,我们就找第一个数据帧心跳包的,回到定义的这个类中,首先就是获取这个名字,然后它的ID ,这里的ID我们稍后再讲,然后就是send函数,这里面就有函数,这个函数可以自己编写也可以生成。接下来我们就讲这个ID和这个函数了。
这个ID是唯一的,这个我们只需加入ID然后利用mavlink工具就可以生成相关函数,打包函数和发送函数,这些都不用管。首先我们去找一个文件common.xml,我们用的是2.0的协议,我们在这个文件中的最后加入一个ID和name,这个你只需模仿就行,这里面有field name(参数名字)和type(数据类型)这个不难理解,大家相加多少就加多少。注意哦ID的个数是有限制的不能无限往上加。编辑好这个文件后你就要用mavlink工具了。
先下载工具gitclone https://github.com/mavlink/mavlink mavlink-generator,回到工具目录cd mavlink-generator,执行python mavgenerete.py就会出现一个配置GUI ,将该下的common.xml文件加入,生成文件目录为这个要对应不要搞错了,然后你在该目录下就可以看到你要的.h文件了命名是mavlink_msg_***.h,然后你就可以使用了。如何加入一个新的数据帧就将完了。然后回到mavlink_main中,我们就到while中去执行。这个里面当中就基本上是对定义的消息帧去赋值了,赋值完了调用发送函数就算是完事。
第七章 PX4-Pixhawk-Mavlink解析相关推荐
- 【Laravel-海贼王系列】第七章,Pipeline 类解析
Pipeline Laravel 的中间件是通过管道类来实现的. 通过内核处理请求的过程中管道的作用来解析管道类! protected function sendRequestThroughRoute ...
- 第七章家庭作业——符号解析,重定位绝对引用,重定位相对引用
题一:符号解析 考察可重定位目标文件各个节的内容,本质分类,那就分类: 节 内容 .text 已编译程序的机器代码,函数 .data 已初始化的全局 C 变量,包括已初始化的extend,带stati ...
- 【Laravel-海贼王系列】第十三章,路由控制器解析
路由 一个请求如何跨过山和大海来到控制器的地盘. 注册路由 这块代码是在 Application 的构造函数中加载的 public function __construct($basePath = n ...
- 第七章 PX4-Mavlink解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第七章 PX4-Mavlink解析 首先我们是还是来说一说mavlink吧.Mavlink协议是无人机的一种开源通信协议.可以理解就是按照一 ...
- 第一章 PX4程序编译过程解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...
- 怎么证明建立了存储过程_【Filecoin源码仓库全解析】第七章:了解PoRep与PoSt并参与复制证明游戏
欢迎大家来到第七章,经过前章<[Filecoin源码仓库全解析]第六章:如何单机部署多节点集群及矿池设计思路>的介绍,我们分享了如何在单机部署多节点集群的知识以及矿池设计的一些思路. 我们 ...
- 内涝预测过程的噪音_第七章噪声解析
第七章 环境噪声影响评价 1 .教学内容 ( 1 ) 噪声和噪声评价量: ( 2 ) 噪声的衰减和反射效应: ( 3 ) 噪声环境影响评价的技术工作程序和要求: ( 4 ) 噪声环境影响预测: ( 5 ...
- 《信号与系统》(吴京)部分课后习题答案与解析——第七章(PART1)(ZT)
第七章(PART1)(ZT) 题 7.1 确定下面每个序列的Z变换.画出其零极点图,并指出收敛域. (2) δ ( n + 1 ) \delta (n+1) δ(n+1<
- 课本学习笔记5:第七章 20135115臧文君
第七章 链接 注:作者:臧文君,原创作品转载请注明出处. 一.概述 1.链接(linking):是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载或被拷贝到存储器并执行. 2 ...
最新文章
- c语言常用数据类型转换整理
- C++语言map和unordered_map的下标操作
- 期待着DELPHI的浴火重生
- 服务器 linux mysql5.7修改密码,navicat远程登录不了
- Linux中usb设置burst,Re: 关于IMX6UL第二个USB接口在linux驱动的问题
- maven项目引入sqljdbc4 找不到包的完美 解决方案。
- 如何算三角形的cotangent
- c++,为什么要引入虚拟继承
- CVPR 2021 Visual Transformer 论文合集(附20篇推荐必读ViT论文)
- 怎样设置电脑桌面共享计算机,局域网共享设置,小编教你电脑怎么设置局域网共享...
- 程序员的高效工作环境
- 高淇python400集课堂笔记_2020六年级上第十七课《古诗三首》手抄笔记及图文讲解...
- 每日一题:1.function Person(firstName, lastName) { this.firstName = firstName; this.lastName = lastNa
- python 模仿excel中的‘删除重复项’功能,根据某行删除二维数组的重复项,但不使用drop_duplicates’函数实现
- Class的基本语法
- 【Redis系列】缓存击穿、穿透、雪崩解决方案详解
- 认沽期权长短仓应用法
- C#——Windows程序实现窗体输出九九乘法表
- Spring Boot 集成spring security4
- oracle 日期改字符格式_Oracle时间转换成字符串