第九章 PX4-pixhawk-姿态估计解析
第九章 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-姿态估计解析相关推荐
- 第一章 PX4程序编译过程解析
版权声明:本文为博主原创文章,未经博主允许不得转载. 第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯 ...
- 第一章 PX4-Pixhawk-程序编译过程解析
第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯.这个项目是苏黎世联邦理工大学的一个实验室搞出来的.该 ...
- PX4程序编译过程解析
第一章 PX4程序编译过程解析 PX4是一款软硬件开源的项目,目的在于学习和研究.其中也有比较好的编程习惯,大家不妨可以学习一下国外牛人的编程习惯.这个项目是苏黎世联邦理工大学的一个实验室搞出来的.该 ...
- 3D姿态估计——ThreeDPose项目简单易用的模型解析
前言 之前写过tensorflow官方的posenet模型解析,用起来比较简单,但是缺点是只有2D关键点,本着易用性的原则,当然要再来个简单易用的3D姿态估计.偶然看见了ThreeDPose的项目,感 ...
- 慕课软件质量保证与测试(第九章.程序中隐藏错误数量估计)
慕课金陵科技学院.软件质量保证与测试.第九章.软件质量与质量保证.程序中隐藏错误数量估计 0 目录 9 软件质量与质量保证 9.2 程序中隐藏错误数量估计 9.2.1 课堂重点 9.2.2 测试与作业 ...
- 姿态估计2-08:PVNet(6D姿态估计)-源码无死角解析(4)-RANSAC投票机制
以下链接是个人关于PVNet(6D姿态估计) 所有见解,如有错误欢迎大家指出,我会第一时间纠正.有兴趣的朋友可以加微信:17575010159 相互讨论技术.若是帮助到了你什么,一定要记得点赞!因为这 ...
- 使用Python分析姿态估计数据集COCO的教程
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 当我们训练姿势估计模型,比较常用的数 ...
- Anchor-free新思路,统一目标检测、实例分割、姿态估计三种任务
点上方计算机视觉联盟获取更多干货 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:https://zhuanlan.zhihu.com/p/366651996(授权转载) 作者:小马哥,编辑: ...
- 姿态估计:人体骨骼关键点检测综述(2016-2020)
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨七酱@知乎 来源丨https://zhuanlan.z ...
最新文章
- Java exception handling best practices--转载
- DOTA2:IG实力不如Nigma?解说:错了,让门票给他们自己回家训练
- 网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页
- mysql修改工资字段_mysql- 修改字段
- 5个最受欢迎的大数据可视化软件
- kettle中的switch_kettle 教程(三):条件判断 Switch Case
- 蓝桥杯python青少年_让孩子参加蓝桥杯大赛好吗
- 曾国藩修身十三条,值得学习
- 支付宝和微信支付用户付款码条码规则
- 手机mstsc远程工具_如何通过手机远程控制计算机
- qq文件服务器怎么用,怎样使用qq文件助手功能图文教程
- echarts饼状图
- IMU标定——椭球拟合
- Android项目:基于安卓Android校园零食配送系统app(计算机毕业设计)
- c语言求出现次数最多的字符,保证你看懂
- 计算机搜索没办法打汉字,电脑只能输入拼音不能输入汉字怎么办
- QWT坐标刻度设置时的2个细节
- 2022开年第一个爆款凭什么是山东蓝翔?如何实现破圈传播?
- nginx负载均衡两台服务器文件,Nginx之负载均衡 :两台服务器均衡(填坑)
- ORACLE的保留小数或整数函数