版权声明:本文为博主原创文章,未经博主允许不得转载。



第七章 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-Mavlink解析相关推荐

  1. dockerfile如何运行镜像内的脚本_第七章 Dockerfile文件解析(一)

    七 Dockerfile文件解析-1 7.1 定义:Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本 7.2 Dockerfile内容基础知识: 1.每条保留字指令 ...

  2. 《IBM-PC汇编语言程序设计》(第2版)【沈美明 温冬婵】——第七章——自编解析与答案

    7.1 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作.字符区首地址及其长度为变 元. 答:宏定义如下: CLRB MACRO N, CFIL MOV CX, N CLD MOV A ...

  3. 华文慕课北大操作系统陈向群第七章课后习题解析

    1.(5分) 为了保证CPU执行程序指令时能正确访问存储单元,需要将用户进程中的逻辑地址转换为运行时可由CPU直接寻址的物理地址,这一过程称为: A. 地址映射 B. 地址分配 C. 地址计算 D. ...

  4. 第七章 PX4-Pixhawk-Mavlink解析

    第七章 PX4-Mavlink解析 首先我们是还是来说一说mavlink吧.Mavlink协议是无人机的一种开源通信协议.可以理解就是按照一定的格式来发送数据. 这一章节涉及到了消息的打包发送和接收解 ...

  5. 第一章 PX4程序编译过程解析

    版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...

  6. 怎么证明建立了存储过程_【Filecoin源码仓库全解析】第七章:了解PoRep与PoSt并参与复制证明游戏

    欢迎大家来到第七章,经过前章<[Filecoin源码仓库全解析]第六章:如何单机部署多节点集群及矿池设计思路>的介绍,我们分享了如何在单机部署多节点集群的知识以及矿池设计的一些思路. 我们 ...

  7. 内涝预测过程的噪音_第七章噪声解析

    第七章 环境噪声影响评价 1 .教学内容 ( 1 ) 噪声和噪声评价量: ( 2 ) 噪声的衰减和反射效应: ( 3 ) 噪声环境影响评价的技术工作程序和要求: ( 4 ) 噪声环境影响预测: ( 5 ...

  8. 《信号与系统》(吴京)部分课后习题答案与解析——第七章(PART1)(ZT)

    第七章(PART1)(ZT) 题 7.1 确定下面每个序列的Z变换.画出其零极点图,并指出收敛域. (2) δ ( n + 1 ) \delta (n+1) δ(n+1<

  9. 课本学习笔记5:第七章 20135115臧文君

    第七章 链接 注:作者:臧文君,原创作品转载请注明出处. 一.概述 1.链接(linking):是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载或被拷贝到存储器并执行. 2 ...

最新文章

  1. 使用mint-ui开发项目的一些所得
  2. MySQL中update修改数据与原数据相同会再次执行吗?
  3. 因为在此系统上禁止运行脚本。有关详细信息_在弃用11年后微软终于允许IT管理员禁用IE中的JScript脚本引擎...
  4. luogu P3786 萃香抱西瓜
  5. OpenCV用代码解释单应性的基本概念
  6. (1) 自定义分页采用jsp和Java实现
  7. 信息学奥赛C++语言:旗手
  8. debian修改密码
  9. 备忘--简单比较SPSS、RapidMiner、KNIME以及Kettle四款数据分析工具
  10. 玩转位图(bitmap)
  11. R语言学习笔记(三)
  12. GPUGraphicsGame tools
  13. 腾讯应用宝正式开放 手游渠道争抢首发
  14. C语言计算数字乘积根,C 乘积根
  15. 【考研数学】琴生不等式
  16. tsp问题——遗传算法解决
  17. C语言实现,古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)
  18. C语言--if…if…和if…else if的区别
  19. 逆向工程实验_lab0(密码学算法逆向)
  20. 爬取QQ音乐——新手不知道的那些坑 之 中英文(全/半角)冒号坑

热门文章

  1. 在Myeclipse中没有部署jeesite项目,但是每次运行其他项目时,还是会加载jeesite项目...
  2. spring 之 init-method InitializingBean
  3. hihocoder #1388 : Periodic Signal NTTFFT
  4. JavaScript学习笔记——BOM_window对象
  5. Redis:安装、配置、操作和简单代码实例(C语言Client端)[转]
  6. C语言经典算法100例-022-乒乓球比赛名单问题
  7. windows剪切板暂存
  8. /*3.使用二维数组存储班上五个学生三门功课的考试成绩,要求输出每一个学生的总分、平均分、最高分、最低分。
  9. python123电脑登录不了_Python-用户登陆,密码失败3次,账户将被锁住(login)
  10. 你不会真的以为自己懂得计算机网络吧?