第五章 PX4-Pixhawk-GPS解析

2023-05-16

第五章 PX4-GPS解析

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

首先我们还是找到GPS的启动代码,GPS的启动在RCS文件中直接就是第五章 <wbr>PX4-Pixhawk-GPS解析

。这里我们回到驱动层第五章 <wbr>PX4-Pixhawk-GPS解析

找到文件gps.cpp文件找到入口函数第五章 <wbr>PX4-Pixhawk-GPS解析

。这里说明一下PX4的gps驱动是可以支持2套gps的第五章 <wbr>PX4-Pixhawk-GPS解析

从这里就可以看出来。首先我们还是来看device_name,这个参数是第五章 <wbr>PX4-Pixhawk-GPS解析

驱动层的h文件均在第五章 <wbr>PX4-Pixhawk-GPS解析

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

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

文件中调用,stm32是属于arm不是avr哦,第五章 <wbr>PX4-Pixhawk-GPS解析

然后一级一级的去追踪你就能发现最终的源头了。回到stm32_serial.c文件的初始那段代码去。你可以看到NSH 后台控制串口注册的是串口7第五章 <wbr>PX4-Pixhawk-GPS解析

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

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

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

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

然后进入数据解析阶段了第五章 <wbr>PX4-Pixhawk-GPS解析这里我们贴出ublox的协议格式。

第五章 <wbr>PX4-Pixhawk-GPS解析

所以从这里就可以看出帧头以0xb5,0x62开头。第一个case就是判断是0xb5和是否为rtcm格式第五章 <wbr>PX4-Pixhawk-GPS解析

第五章 <wbr>PX4-Pixhawk-GPS解析

完成帧头后需要进行校验了,看到没校验是从第三个数据开始的哦,第五章 <wbr>PX4-Pixhawk-GPS解析ublox采用的是校验和的第五章 <wbr>PX4-Pixhawk-GPS解析然后得到2个数据的长度第五章 <wbr>PX4-Pixhawk-GPS解析

这里的_rx_payload_length就是长度了。接着就开始解析相关数据了,这里我们只解析SVINFO信息第五章 <wbr>PX4-Pixhawk-GPS解析

看到没通过之前接收到的_rx_msg来判断接收到的是什么数据。首先我们还是来看看ublox的SVINFO数据帧,第五章 <wbr>PX4-Pixhawk-GPS解析

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

第五章 <wbr>PX4-Pixhawk-GPS解析

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

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

所有的数据在这里就算是接收完了,完了之后当然是要发布出去给需要的机制去订制。第五章 <wbr>PX4-Pixhawk-GPS解析

第五章 <wbr>PX4-Pixhawk-GPS解析 大家也行看到的是_report_gps_pos,其实这个不难理解,大家还记得那个new吗?找到ublox的new初始化你能找到原因的。到这里GPS的驱动就基本上是完成了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第五章 PX4-Pixhawk-GPS解析 的相关文章

随机推荐

  • logcat的使用

    参考链接 log信息级别 以下优先级从上往下排序 xff1a V xff1a verbose 显示全部信息 最低优先级 xff0c 对应Log v String tag String msg D xff1a debug 显示调试信息 xff
  • 物联网架构实例—解决Linux(Ubuntu)服务器最大TCP连接数限制

    1 前言 xff1a 在对物联网网关进行压测的时候 xff0c 发现在腾讯云部署网关程序 xff0c 设备接入数量只能达到4000多个长连接 xff0c 之后就再也无法接入终端了 之前在阿里云部署的时候明明可以到达2万左右 xff0c 而且
  • Prometheus从入门到跑路

    1 prometheus框架结构 2 prometheus组件介绍 2 1 Prometheus Server 这是Prometheus的服务端 xff0c 也就是核心 Prometheus本身是一个以进程方式启动 xff0c 之后以多进程
  • ucos-ii学习笔记1 创建任务&&任务调度

    span style font family none font size 12px background color rgb 255 255 255 span span 最近在学习嵌入式系统 xff0c 听说ucos ii是使用最广 xf
  • ucos ii学习笔记2 邮箱&&信息量

    上一篇说了ucos ii的大致运行原理 xff0c 这一篇主要用来说明不同任务之间的数据传递的 有人会说 xff1a 不同任务间的数据传递直接用全局变量不就好了 xff0c 我一开始也有这种疑惑 xff0c 也在简单程序中实验过没什么问题
  • ucos ii学习笔记4 软件定时器

    span span p span style font size 18px span span ucos ii从V2 83版本以后加入了软件定时器 xff0c 软件定时器的最快时钟节拍就等于ucos ii的系统时钟节拍 xff0c 由一个单
  • 时钟源关系初解

    最近发现自己对时钟的各种关系不是很清晰 xff0c 所以在这里初步的顺一下 以STM32F4为例 xff0c 大概都差不多 STM32F4有5个时钟源 xff0c 分别是HSI HSE LSI LSE PLL 从名字上看出HSI和HSE是高
  • up-board

    安装ubuntu16 04 安装board内核 http www eeboard com bbs thread 59222 1 1 html 对管脚的控制 http www eeboard com bbs thread 59257 1 1
  • 【嵌入式软件实习】找实习和电话面试记录与总结

    前言 前一段时间就是非常想找实习 xff0c 这次是接到了一家还算是比较大的公司的面试通知和实习offer 做一下简单的记录给在找实习的大家一个参考吧 主要内容为 xff1a 三连即可提高学习效率0 0 x1f9d1 x1f3fb 作者简介
  • Ubuntu更换apt镜像源

    原文 xff1a Ubuntu更换apt镜像源 在ubuntu中 xff0c 默认使用 ubuntu 的官方源http archive ubuntu com xff0c 但是这个官方源在国内下载的速度太慢 xff0c 甚至只有几十k 于是考
  • JS 闭包 详细说明(教程)

    首先 xff0c 闭包是一个高阶函数 xff0c 高阶函数除了可以接受函数作为参数外 xff0c 还可以把函数作为结果值返回 xff08 不知道高阶函数是啥 xff0c 点击链接 xff09 先通过一个例子来了解一下如何把函数作为结果值返回
  • STVP烧录程序

    STVP介绍 STVD xff1a ST Visual Develop xff0c 可视化开发工具STVP xff1a ST Visual Programmer xff0c 可视化编程工具 xff0c stvp主要打开一些固件 hex s1
  • 传感器标定系列——Kalibr工具

    文章目录 Kalibr介绍安装资源 Kalibr介绍 Kalibr is a toolbox that solves the following calibration problems 多相机标定 Multi Camera Calibra
  • TCP传输图片及多线程

    最终效果图 xff1a 注意 xff1a 图片发送大体流程同 Qt网络编程 TCP IP 一 只是在发送时这里采用 的 数据流QDataStream形式 因为使用摄像进行监控时也是对一帧一帧的图片进 行处理 xff0c 因此掌握了如何用Qt
  • GCC编译过程及基本命令总结

    一 GCC简介 GCC即GNU Compiler Collection xff0c 原本只是针对C语言的编译工具 xff0c 现在已经变成了一个工具集 xff0c 包含了C C 43 43 JAVA等语言的集合体 管理和维护 xff1a 由
  • 第一章 PX4-Pixhawk-程序编译过程解析

    第一章 PX4程序编译过程解析 PX4 是一款软硬件开源的项目 xff0c 目的在于学习和研究 其中也有比较好的编程习惯 xff0c 大家不妨可以学习一下国外牛人的编程习惯 这个项目是苏黎世联邦理工大学的一个实验室搞出来的 该方案是基于 N
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 linux 的 shell 文件 xff0c 如果不知道 shell 文件是什么东西可以理解成是为程序的流程框 xff0c 它是告诉处理器应该怎么样去运行 xff0c 前一章介绍的
  • 第三章 PX4-Pixhawk-SPI底层驱动解析

    第三章 PX4 SPI 底层驱动解析 这一章节我们会对 PX4 的底层驱动进行解析 xff0c 我们这里主要解析的是 SPI 协议 xff0c 因为这个协议是所有传感器的一个协议 xff0c 至于 IIC 和串口就可以类似的读写一下 xff
  • 第四章 PX4-Pixhawk-MPU6000传感器驱动解析

    第四章MPU6000传感器驱动解析 Mpu6000 是一个 3 轴加速度和 3 轴陀螺仪传感器 xff0c 这一章节我们将对 MPU6000 这个传感器进行解析 xff0c 依照这个解析步骤同样可以对 L3GD20 xff08 3 轴陀螺仪
  • 第五章 PX4-Pixhawk-GPS解析

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