- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
四元数解算姿态完全解析与资料汇总
四元数完全解析及资料汇总
本文原帖出自匿名四轴论坛,附件里的资源请到匿名论坛下载:
HYPERLINK /forum.php /forum.php
感谢匿名的开源分享,感谢群友的热心帮助。
说什么四元数完全解析其实都是前辈们的解析,小弟真心是一个搬砖的,搬得不好希望大神们给以批评和指正,在此谢过了。因为本人是小菜鸟一枚,对,最菜的那种菜鸟······所以对四元数求解姿态角这么一个在大神眼里简单的算法,小弟我还是费了很大劲才稍微理解了那么一点点,小弟搬砖整理时也是基于小弟的理解和智商的,有些太基础,有些可能错了,大牛们发现了再骂过我后希望能够给与指正哈。
好,废话到此为止,开始说主体。四元数和姿态角怎么说呢?先得给和我一样的小菜鸟们理一理思路,小鸟我在此画了一个“思维导图”(我承认我画的丑),四元数解算姿态首先分为两部分理解:第一部分先理解什么是四元数,四元数与姿态角间的关系;第二部分要理解怎么由惯性单元测出的加速度和角速度求出四元数,再由四元数求出欧拉角。
图1 渣渣思维导图
在讲解什么是四元数时,小弟的思维是顺着说的,先由四元数的定义说起,说到四元数与姿态角间的关系。但在讲解姿态解算时,小弟的思维是逆向的,就是反推回来的,从欧拉角一步步反推回到惯性器件的测量数据,这样逆向说是因为便于理解,因为实际在工程应用时和理论推导有很大差别。
实际应用时正确的求解顺序应该为图1中序号顺序,即1-2-3-…….
但在笔者讲解姿态求解时思路是如图2的。
图2 逆向讲解思路
大家在看四元数时最好结合着代码一块看,小弟看的是匿名四轴的代码,感觉写的非常好也非常清晰,粘出来大家一块观摩。红色部分是核心代码,总共分为八个步骤,和图1中的八个步骤是一一对应的。讲解介绍时也是和代码对比起来讲解的。代码可以去匿名官网上下载,都是开源的,不是小弟的,所以小弟不方便加在附件中。
//四元数更新姿态
#define Kp 2.0f //加速度权重,越大则向加速度测量值收敛越快
#define Ki 0.001f //误差积分增益
void ANO_IMU::Quaternion_CF(Vector3f gyro,Vector3f acc, float deltaT)
{
Vector3f V_gravity, V_error, V_error_I;
//1.重力加速度归一化
acc.normalize();
//2.提取四元数的等效余弦矩阵中的重力分量
Q.vector_gravity(V_gravity);
//3.向量叉积得出姿态误差
V_error = acc % V_gravity;
//4.对误差进行积分
V_error_I += V_error * Ki;
//5.互补滤波,姿态误差补偿到角速度上,修正角速度积分漂移
Gyro += V_error * Kp + V_error_I;
//6.一阶龙格库塔法更新四元数
Q.Runge_Kutta_1st(Gyro, deltaT);
//7.四元数归一化
Q.normalize();
//8.四元数转欧拉角
Q.to_euler(angle.x, angle.y, angle.z);
}
好的,下面搬砖开始!。。。。。。。。嘿咻嘿咻!!!!
什么是四元数?
关于四元数的定义摘自秦永元的《惯性导航》,里面有非常好的讲解,大家可以直接看绪论和第九章就可以。下面我粘贴了部分原文,粘贴的比较多比较详细,应为本人比较笨还爱较真,所以按本人的风格就要详尽一点,大牛们都可以自动忽略。
四元数定义、表达方式及运算方法——摘自《惯性导航》-秦永元P289-292
好,关于四元数定义就搬这么多,其他的大家去附件下载《惯性导航》的pdf自己看吧。
下面开始搬四元数与姿态解算关系的。。。。。。嘿咻嘿咻~~~~
二、四元数与姿态阵间的关系
从上面我们知道了四元数的定义,可这四个数和我们要求的三个姿态角有什么关系呢?下面是详细的推导,同样摘自《惯性导航》-秦永元P292-297。
四元数与姿态阵间的关系——摘自《惯性导航》-秦永元P292-297
呃,粘了这么多其实就是为了想知道推导过程小伙伴好理解,真正有用的就是(9.2.34)这个公式。▲这个公式把四元数转换成了方向余弦矩阵中的几个元素,再用这几个元素转换为欧拉角。就求解除了姿态!
先从四元数q0~q3转成方向余弦矩阵:
x
再从方向余弦矩阵转换为欧拉角:
θ
θ
θ
好的,公式原理都讲清楚了,下面来看一下匿名的代码:
//四元数转欧拉角,这里四元数是q1~q4 和公式里q0~q3相对应。
void Quaternion::to_euler(float *roll, float *pitch, float
您可能关注的文档
最近下载
- PLC编程手册.pdf VIP
- 注册环保工程师之注册环保工程师专业基础题库及答案【各地真题】.docx VIP
- 2025春议题式导与学道德与法治七年级下册04-第四单元 生活在法治社会(教用).docx
- 存储架构优化方案.docx VIP
- 中医在抑郁焦虑调理中的思路.pptx VIP
- 住院患者走失应急预案.pptx VIP
- 脾梗死护理个案.pptx VIP
- GB∕T 40685-2021 信息技术服务 数据资产 管理要求.pdf
- 变配电所二此设备应急故障处理—变配电所保护误动和拒动故障查找处理(高铁变电设备检修).pptx
- 部编人教版六年级上册《道德与法治》全册知识点归纳、考点整理,复习必备.docx VIP
文档评论(0)