第九章 PX4-pixhawk-姿态估计解析 
这一章节我们对姿态估计进行解析,这一章节涉及到算法,主要涉及到的还是DCM(方向余弦)算法。首先我们还从启动文件开始进行讲解。 
我们找到rc.mc_apps中,我们可以找到SYS_MC_EST_GROUP的参数为0,所以我们对attitude_estimator_q.cpp进行讲解  。 
回到attitude_estimator_q.cpp文件中,这里提一下这个文件应该知道是怎么编译的吧,在cmake文件中找到的。找到入口函数attitude_estimator_q_main中。我们可以知道参数只有start,这个怎么解析的不用说了吧,前几章节都说到过了。  
这里面没有什么好说的,new这个就不用说了吧,我们找到start函数  这里就创建了任务task_main_trampoline  再找到task_main函数。 
首先还是先订阅相关数据,包括传感器、视觉、空速计、参数、定位信息并且更新参数  ,这里的更新各个参数的函数就不用多说了吧,主要是滤波权重、偏移量和模式选择等等。 
接着到wihile中,首先还是poll函数来防止阻塞,这个用法直接去度一下poll就有说明。首先进行参数更新检测  ,这个没什么好说的,如果不懂那我也没办法了哦。然后就是更新传感器数据  ,这个更新里面有加速度计和加速度计的更新,而且这里还对它们进行了一个二阶低通滤波,这种滤波器比较普遍也比较容易,有兴趣的同学去研究一下,不懂得邮件我也行,如果大家有更高明的滤波算法也可以分享一下,我也可以代劳来编写一下。接着对磁力计更新。接下来的几个更新我们不做细去说明。视觉更新 动作捕捉更新  空速计数据更新  GPS数据更新  这里的GPS的更新数据主要还是计算磁偏角用来修正电子罗盘用的,这个的计算主要是利用经纬度通过查表发进行查找磁偏角。接着就是利用从GPS中获取的NED坐标系的速度来计算加速度  这里有个利用四元素来进行坐标系的转换_q.conjugate_inversed这个就是将数据转换成机体坐标系中,至于这个函数的如何去解析,我们待会去一起解析。 
然后就是进入到最重要的函数update,这个函数就涉及到姿态解算了。我们进入到这个函数中  。函数开始会对是否初始化进行判断,如果是第一次运行就会运行init函数,运行一次后就不会运行了。这里的初始化主要是构建旋转矩阵,然后通过旋转矩阵转换为四元素。这里主要是运用了较多的矢量运算和旋转矩阵的一些知识。 
首先要做的是加速率的偏移调整,这里我们不用视觉和动作捕捉,所以不对它们进行讲解,这些主要是对航向角进行修正。接下来是利用电子罗盘数据进行航向修正,这里的到的修正量是yaw。 
 
这里讲一下_q.conjugate函数这里是坐标系的转换也就是b系转R系也就是机体坐标系转大地坐标系,这里的_q是四元素,首先我们看看这个系的转换公式(四元素法)  ,这里利用的是C++中的vector这里我们去看看conjugate函数  这里的理解一下其实就date数据就是_q.conjugate中的_q赋过来的,而v.date就是conjugate后面的数据这个我不知道讲清楚了没,我们看到conjugate后面的参数是_mag,其实这个参数也是有mag(0)、mag(1)、mag(2)所以这个就不难理解了吧!然后就是利用转换后的X、Y进行转换得到mag_err,最后通过conjugate_inversed函数再次转换到机体坐标,转换公式贴出来自己去看。 
 
然后进行四元素的归一化处理,这个normalize函数不难理解吧,平方求根后作商。接着利用accl进行陀螺仪数据修正这个貌似不难,跟inint立面差不多。然后进行PI调节 这个理论性很强哦。主要是利用PI调节对姿态进行估计 ,大家去看看姿态解算的论文就会明白的。同样最后对四元素进行归一化处理并且对四元素进行数据判别。那么这个update就基本讲完了。 
我们回到att_estimator_q_main中,接着就是利用四元素转换为欧拉角。  这个的理论公式如下  自己对照看吧!然后对这些数据进行赋值到att结构体中接着利用四元素转换为方向余弦矩阵中最后赋值到date中。然后就是发布att的数据  同时也将数据赋值到控制状态中再进行发布数据。说到这里姿态估计这章节就讲完了。又不懂的还是那句话大家互相交流可以邮件给我或直接qq给我都行。

第九章 PX4-pixhawk-姿态估计解析相关推荐

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

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

  2. 第一章 PX4-Pixhawk-程序编译过程解析

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

  3. PX4程序编译过程解析

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

  4. 3D姿态估计——ThreeDPose项目简单易用的模型解析

    前言 之前写过tensorflow官方的posenet模型解析,用起来比较简单,但是缺点是只有2D关键点,本着易用性的原则,当然要再来个简单易用的3D姿态估计.偶然看见了ThreeDPose的项目,感 ...

  5. 慕课软件质量保证与测试(第九章.程序中隐藏错误数量估计)

    慕课金陵科技学院.软件质量保证与测试.第九章.软件质量与质量保证.程序中隐藏错误数量估计 0 目录 9 软件质量与质量保证 9.2 程序中隐藏错误数量估计 9.2.1 课堂重点 9.2.2 测试与作业 ...

  6. 姿态估计2-08:PVNet(6D姿态估计)-源码无死角解析(4)-RANSAC投票机制

    以下链接是个人关于PVNet(6D姿态估计) 所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了你什么,一定要记得点赞!因为这 ...

  7. 使用Python分析姿态估计数据集COCO的教程

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 当我们训练姿势估计模型,比较常用的数 ...

  8. Anchor-free新思路,统一目标检测、实例分割、姿态估计三种任务

    点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:https://zhuanlan.zhihu.com/p/366651996(授权转载) 作者:小马哥,编辑: ...

  9. 姿态估计:人体骨骼关键点检测综述(2016-2020)

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨七酱@知乎 来源丨https://zhuanlan.z ...

最新文章

  1. Java exception handling best practices--转载
  2. DOTA2:IG实力不如Nigma?解说:错了,让门票给他们自己回家训练
  3. 网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页
  4. mysql修改工资字段_mysql- 修改字段
  5. 5个最受欢迎的大数据可视化软件
  6. kettle中的switch_kettle 教程(三):条件判断 Switch Case
  7. 蓝桥杯python青少年_让孩子参加蓝桥杯大赛好吗
  8. 曾国藩修身十三条,值得学习
  9. 支付宝和微信支付用户付款码条码规则
  10. 手机mstsc远程工具_如何通过手机远程控制计算机
  11. qq文件服务器怎么用,怎样使用qq文件助手功能图文教程
  12. echarts饼状图
  13. IMU标定——椭球拟合
  14. Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
  15. c语言求出现次数最多的字符,保证你看懂
  16. 计算机搜索没办法打汉字,电脑只能输入拼音不能输入汉字怎么办
  17. QWT坐标刻度设置时的2个细节
  18. 2022开年第一个爆款凭什么是山东蓝翔?如何实现破圈传播?
  19. nginx负载均衡两台服务器文件,Nginx之负载均衡 :两台服务器均衡(填坑)
  20. ORACLE的保留小数或整数函数

热门文章

  1. Introduction to Cryto Crptocurrencies Lecture 1
  2. nfs+inotify
  3. UVa11729 - Commando War(贪心)
  4. 类与类之间关系,用C#和JavaScript体现
  5. 简单的FTP应用程序
  6. [笔试题目] 腾讯2015年9月基础研究笔试题
  7. Python之每个人都应该知道的30个一行代码程序
  8. 对于一颗具有n个结点,度为4的树来说,( )
  9. Django设计理念
  10. 127. Word Ladder 单词接龙