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

第五章 PX4-GPS解析

在上一章节我们对传感器MPU6000做了一个解析,MPU6000所支持的协议是SPI。这一章节我们来解析GPS,GPS使用的是串口通信。这里我们着重讲解UBLOX的解析过程,并且会附带串口的解析说明。这一章节完了之后大家有兴趣可以尝试RTK的数据解析,对于RTK我在前面讲到过。

首先我们还是找到GPS的启动代码,GPS的启动在RCS文件中直接就是

。这里我们回到驱动层

找到文件gps.cpp文件找到入口函数

。这里说明一下PX4的gps驱动是可以支持2套gps的

从这里就可以看出来。首先我们还是来看device_name,这个参数是

驱动层的h文件均在

目录下。很显然这里其实就是串口的名字。既然说到这里我们就来说说“/dev/ttys3”是如何注册到串口的吧。

还记的SPI的驱动吧。这里我们主控是V2板的所以是支持的处理器是stm32的,所以我们就到stm32的驱动中去找,这里一般对stm32库了解的话都知道,串口要么是usart要么是serial,这里我们就可以知道文件是stm32_serial.c,初始化串口程序就是up_serialinit了,至于为什么,你可以去追踪一下,发现这个函数在

文件中调用,stm32是属于arm不是avr哦,

然后一级一级的去追踪你就能发现最终的源头了。回到stm32_serial.c文件的初始那段代码去。你可以看到NSH 后台控制串口注册的是串口7

CONSOLE_UART=7哦,这里你可以去追踪哦,对照deconfig文件,那些define定义在deconfig文件能找到的。并且串口7还注册了DMA控制,接下来的for会对串口一一初始化看到没一开始是复制然后对x值进行改变然后注册了哦,刚才我们找到GPS是ttys3,所以我们查看一下uart_devs[2],这里面的逻辑应该不难理解吧!发现注册的是串口3。我们在来看看硬件的GPS接口

正好是串口3哦,这下对应起来了吧。串口的注册也就讲完了。

这里我们就直接进入start函数,这里的参数是相信也不难理解吧。然后就是产生驱动首先还是以new的方式进行初始,然后成功后进行init函数这里的init函数就是gps的init,这个自己理解一下,所以这个初始化也在本文件中,找到init函数看到的是串口任务同样去追中函数找到task_main函数,首先是打开串口这里的_port在new的时候赋完值了哦。然后就是订阅和初始化数据转存,然后进入while中去执行。首先会判断_fake_gps参数,这个是虚拟的数据,真正场合肯定不会用的,所以我们看else的,这里是一个case语句是对模块的选择,我们今天只讲ublox,所以看到这里也是new GPSDriverUBX.然后是检测配置主要是波特率,这里的configure是一个虚函数,我们使用的ublox所以当然是到ubx.cpp中去找了。这里面的函数都不难,但是要对比手册来看,这里面的处理机制可以值得学习哦,通过轮询的方式来查找ublox的波特率,还有就是配置ublox。

接下来就是复位那些数据了,然后就是要接收数据了。找到ublox的receive函数,进入读取串口数据读取的数据暂存在buf中。这里的read函数大家不妨去找找,这个是一个重载到gps.cpp中的回掉函数,大家也能看到读取数据的case语句这里面就有对串口数据中断读取的函数,大家自己去理解一下。

然后进入数据解析阶段了这里我们贴出ublox的协议格式。

所以从这里就可以看出帧头以0xb5,0x62开头。第一个case就是判断是0xb5和是否为rtcm格式

完成帧头后需要进行校验了,看到没校验是从第三个数据开始的哦,ublox采用的是校验和的然后得到2个数据的长度

这里的_rx_payload_length就是长度了。接着就开始解析相关数据了,这里我们只解析SVINFO信息

看到没通过之前接收到的_rx_msg来判断接收到的是什么数据。首先我们还是来看看ublox的SVINFO数据帧,

进入到解析函数就可以看到这些数据的解析了,这里不做过多说明,只要对照手册就很容易读懂,这帧数据主要是卫星高度角、信噪比了。

解析出数据后就要继续进行校验和了,从刚才ublox的数据帧也可以看出来校验和是占两个字符。


当然校验完成了后还是要解析其他的数据了,这里面就有NAV_PVT、NAV_POSLLH等等,这些数据帧你就看到了经纬度、高度,ecef坐标了,这些解析的就没必要说了吧。

所有的数据在这里就算是接收完了,完了之后当然是要发布出去给需要的机制去订制。

大家也行看到的是_report_gp

http://blog.csdn.net/qq_18112493/article/details/69951128

第五章 PX4-GPS解析相关推荐

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

    5.1 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来. 答:程序段如下: BEGIN: MOV AH, 1 :从键盘输入一个字符的DOS调用 INT 21H CMP AL, 'a ...

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

    1.(5分) 多个进程并发执行时,各个进程应互斥进入其临界区,所谓临界区是指 A. 一段程序 B. 一段数据区 C. 一个缓冲区 D. 一种同步机制 2.(5分) 下列哪一种场景问题只包含进程互斥问题 ...

  3. 华文慕课北大计算机组成原理陆俊林第五章课后习题解析

    1.(5分) 对于第一版乘法器,当乘数寄存器最低位为1时,在该次循环过程中,需要将乘数寄存器向哪个方向移动,需要将被乘数寄存器向哪个方向移动? A. 右.左 B. 不移动,左 C. 不移动,右 D. ...

  4. 第五章 PX4-Pixhawk-GPS解析

    第五章 PX4-GPS解析 在上一章节我们对传感器MPU6000做了一个解析,MPU6000所支持的协议是SPI.这一章节我们来解析GPS,GPS使用的是串口通信.这里我们着重讲解UBLOX的解析过程 ...

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

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

  6. PX4代码解析(6)

    一.前言 上一节介绍了PX4姿态估计调用函数的流程,这一节分享一下我对PX4姿态解算的解读.首先,要理解PX4姿态解算的程序,要先从传感器的特性入手,这里主要介绍的传感器有加速度计,磁力计,陀螺仪. ...

  7. 建高性能ASP.NET站点 第五章—性能调优综述(中篇)

    构建高性能ASP.NET站点 第五章-性能调优综述(中篇) 前言:本篇主要讲述用一些简单的工具来分析一些与站点性能有关的数据,在上一篇文章中,我们讨论了一下性能调优的一般过程,本篇就开始介绍一些方法和 ...

  8. 与http协作的web服务器、http首部(第五章、第六章)

    第五章 与http协作的web服务器 1.用单台虚拟主机实现多个域名 通过域名访问主机,经过DNS解析成ip地址,反向代理,可以代理多台服务器,正向代理则相反,代理客户端 2.通信数据转化程序:代理. ...

  9. c程序设计语言第五章,c程序设计语言第五章第7题答案

    7.\(\sum\limits_{k=1}^{100}k\) +\(\sum\limits_{k=1}^{50}{k}^2\) +\(\sum\limits_{k=1}^{10}{\frac{1}{k ...

最新文章

  1. module是什么类型_nodejs中module.exports和exports的区别
  2. 创建、编辑、删除目录
  3. MyBatis-Plus Day2 Wapper 核心功能 条件构造器 测试
  4. 信捷电子凸轮使用_FM352电子凸轮使用指南
  5. Codeforces Round #516 (Div. 2Div.1)
  6. 互联网 | 逻辑上的黑话才是真正的花里胡哨
  7. java语言发展历程
  8. date工具类 DateUtils.java
  9. 量江湖获数千万元B轮融资,提出人工智能ASM投放解决方案
  10. 常见的C++关键字有哪些?
  11. Layui表单自定义验证规则
  12. laypage分页java例子_laypage分页控件使用实例详解
  13. 进销存小程序(一)项目整体功能和设计
  14. 在同一窗口能显示多个幻灯片_如何让两个PPT文件在电脑屏幕中同时显示
  15. 慧科技:要做小池塘里最大的鱼
  16. net_speeder发双倍包加速
  17. 斐讯天天链N1:分布式数据存储模式能否引领下一代数据中心变革
  18. 缺氧游戏黑科技计算机,《缺氧》怎么生存?缺氧bug黑科技小技巧使用方法一览...
  19. 基于PHP+小程序(MINA框架)+Mysql数据库的篮球、足球、羽毛球等校园运动场地预约小程序系统设计与实现
  20. 阿里和亚马逊的云战争:云计算正在成为新一代商业基础设施

热门文章

  1. Eclipse配置关联Tomcat并运行项目
  2. windows环境wampserver3 切换 php7
  3. JavaScript学习笔记——BOM_window对象
  4. (转)Linux环境变量的设置和查看方法
  5. 利用rman创建standby(一)(转 http://ningoo.itpub.net/post/2149/230943)
  6. 数学、物理算法ActionScript实现(2)
  7. 统计rgb与yuv文件中各分量的熵
  8. [Python图像处理] 四十一.Python图像平滑万字详解(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)
  9. iOS之深入解析Runtime的objc_msgSend“慢速查找”底层原理
  10. iOS之实现图片的压缩、解压缩、模糊、置灰、马赛克、黑白化、调色等处理