四元数与欧拉角个人理解
发这个帖子,主要是来源与之前思考的两个问题:1.不同的欧拉角旋转顺序,为什么四元数更新方程都一样,但是得到的欧拉角仅仅只是更改欧拉角输出方程。
2.不同的欧拉角旋转顺序,四元数更新方程一样,为什么初始化方程却不一样,它们之间有什么联系。
以下是我这段时间对这两个问题的解释,我不能保证是对的,如果是错的,希望高人指出。
以免小生一错再错。
已知一个刚体V,通过旋转到V’。
V--->V’用旋转方式1进行旋转,得到roll1、pitch1、yaw1三个欧拉角。
V--->V’用旋转方式2进行旋转,得到roll2、pitch2、yaw2三个欧拉角。
我们知道,已知欧拉角后,可以得到方向余弦矩阵。
两种旋转方式,得到方向余弦矩阵C1与C2.
得到矩阵后,已知V的向量坐标,可以得到V’的向量坐标
V’ = C1*V;
V’ = C2*V;
由以上可知,C1 = C2,也就是说,V--->V’,不管是以何种旋转方式旋转,所得到的方向余弦矩阵都是相同的。也就是,让V--->V’,两种不同的旋转方式下的 roll,pitch,yaw,没有必然联系。
换一句话说,用同样的欧拉角进行两种不同的旋转顺序将刚体V进行旋转,得到刚体向量V1 与 V2,V1与V2之间没有必然的联系。
其实也不难想象,同样的欧拉角,以不同的旋转顺序旋转,得到的刚体姿态之间没有什么联系。(基本不一样,可能会有巧合一样)
----------------------------------------------------------------------------------------------------------------------
刚体四元数,表征了刚体的旋转信息。
我们已知一个V--->V’的旋转:
旋转轴向量
绕旋转轴的旋转角度a
得到一个四元数:
=
已知q0、q1、q2、q3得到一个坐标变换矩阵C3.
V’ = C3*V
其中C3 = C2 = C1
这样我求出四元数,就可以得到刚体的旋转信息。
不同的旋转方式,只要是V---V’,旋转信息就是一样的,我们通过四元数得到的变换矩阵C,都是一样的,但是由于旋转方式不同,所以求得的欧拉角套用的方程不一样,得出的欧拉角也不一样。
根据之前的设想,不同旋转方式下的欧拉角之间,本来就没有什么联系。
所以我们程序和书里面,欧拉角更新方程,不管是以什么方式旋转都是相同的。
----------------------------------------------------------------------------------------------------------------------
那为什么四元数的初始化会不一样呢?
假设四元数初始化用同意的代码,V--->V’,旋转顺序不一样,旋转顺序不一样,得到的欧拉角会不一样、欧拉角不一样,用同意的公式进行四元数初始化,就会得到不同的四元数。但都是V--->V’,只是旋转方式不一样,旋转信息都是一样的,四元数应该是一样的这一条件想矛盾。
以上只是小生对近日的总结,是一种复习,也希望对其他同仁有所帮助,更希望大神可以对我理解有误的地方委婉拍砖。{:smile:} 对于第一个问题,我的理解是,四元数其实就是轴-角表达式演变过来的,所谓轴-角表达式,就是任何姿态的物体, 都可以表示为绕一根过地理坐标系原点的轴旋转一定的角度,那这样看来,对于一个姿态来说就只存在一根轴和一个角度, 所以四元数与姿态是一一对应的。 而由于欧拉角的定义的缘故,所以在变回欧拉角时, 公式上就会有不一样。 zouyf12 发表于 2013-5-27 18:11 static/image/common/back.gif
对于第一个问题,我的理解是,四元数其实就是轴-角表达式演变过来的,所谓轴-角表达式,就是任何 ...
我也是这么理解的。
对于同一个姿态,欧拉角旋转顺序不一样,那么对应的欧拉角之间并没有什么联系、 我研究过工业机器人关节旋转问题,跟你这个很像。
得出的结论是:不管旋转轴线是否交于一点,不管旋转顺序如何,最终得到的姿态是一样的。
我理论计算过,计算机仿真也验证了我的结论。 kmani 发表于 2013-5-27 18:38 static/image/common/back.gif
我研究过工业机器人关节旋转问题,跟你这个很像。
得出的结论是:不管旋转轴线是否交于一点,不管旋转顺序 ...
旋转顺序不管如何 得到的姿态相同。
是指的欧拉角不同的时候吧? lologame 发表于 2013-5-27 18:51 static/image/common/back.gif
旋转顺序不管如何 得到的姿态相同。
是指的欧拉角不同的时候吧?
我指的是每个关节不管哪个先转后转,只要相对转的角度一样,结果就一样。 牛!!顶!! 貌似不错的说。,大多数人都是直接复制代码,调通了就发视频庆贺,很少有人静下心思考这些原理性的问题。赞一个 sgzzour 发表于 2013-5-28 00:03 static/image/common/back.gif
貌似不错的说。,大多数人都是直接复制代码,调通了就发视频庆贺,很少有人静下心思考这些原理性的问题。赞 ...
嗯,现在感觉单纯用别人的东西感觉意思不大了,我想在惯导领域有所发展,就要有理论基础、、
感觉这东西技术含量颇高.....
虽然现在还有一些疑惑的地方,但我还是会尽力解决、、 好深奥啊。关注中。。。 lologame 发表于 2013-5-28 08:48 static/image/common/back.gif
嗯,现在感觉单纯用别人的东西感觉意思不大了,我想在惯导领域有所发展,就要有理论基础、、
感觉这东西 ...
好样的,支持你,榜样。 LZ
四元数可以根据起始位置不断更新姿态,然后转化为欧拉角,而实际上如果转化不同顺序的欧拉角,则欧拉角值不相同,但是按不同顺序不同的值转动结果相同。
如果我们直接用角速度传感器对角度积分可以直接得到欧拉角,但是欧拉角的转动顺序不同就会导致结果不同,但是陀螺仪的积分值却是相同的,也就是说这个轴仍然转动了这么个角度,只是欧拉
旋转方向顺序不同,所以,所有的欧拉旋转顺序如果可以任意调用的话,就可以避免gimbal lock,但是实际是不可能的,所以就引入了四元数来解决,所以四元数根据陀螺仪的积分无论旋转顺序,都是一个值
都是牛人 顶了 我也在努力学习理论 tinymilk 发表于 2013-8-14 08:48 static/image/common/back.gif
LZ
四元数可以根据起始位置不断更新姿态,然后转化为欧拉角,而实际上如果转化不同顺序的欧拉角,则欧拉角 ...
意思是,不同的旋转顺序,相同的欧拉角,仍然是相同的位置吗? 这几日又用到惯导,我重新想象了下
欧拉角数值相等,就算是以不同的旋转顺序旋转,仍然会得到相同的姿态!
但是还不知道为啥,还没用从数学上去理解。
不同的旋转顺序,但是有相同的姿态变换矩阵C。
而得到不同旋转顺序的欧拉角时,使用的的矩阵中的系数不一样,然而得到的角度却是一样的?? 晕死了,以前没有搞错,
相同的姿态,不同的旋转方向,得到的欧拉角,是不一样的! 好深奥啊,没有深究,只是复制了代码。 真心晕了。。。楼主有研究精神 很想认识你 至今未懂。。 其实四元数根本不关心坐标系是怎么旋转的,它只关心起始坐标系和目标坐标系,只要这两个确定了四元数的旋转轴和旋转角就确定了,而目标坐标系到底在哪里才是由欧拉角大小和旋转顺序决定的,所以两者的关系只是用一个变换矩阵联系起来,其实没什么太大联系。 看公式没看懂,哎 kmani 发表于 2013-5-27 18:59
我指的是每个关节不管哪个先转后转,只要相对转的角度一样,结果就一样。 ...
额,你这个是多刚体运动,相互之间有约束,只要运动学上没有达到奇异点,必然是一一对应的~~这里说的是单刚体的转动,不太一样哦~~ mark学习中 lologame 发表于 2013-8-24 16:59
这几日又用到惯导,我重新想象了下
欧拉角数值相等,就算是以不同的旋转顺序旋转,仍然会得到相同的姿态! ...
不同的旋转次序,得到的每个(三次旋转对应三个旋转矩阵)旋转矩阵中的角度是不一样的。比如若按照XYZ旋转,第一次旋转X轴得到的γ角度,和按照ZYX第三次旋转X轴得到的γ角度是不一样的,但是他们三次旋转矩阵的乘积是一样的。 学习了 学习一下 mark四元数与欧拉角个人理解 楼主两次否定了自己的看法,,,,,,不过还是学习了,顶12楼 你好,我想问一下9150内置DMP出来的四元数可否用来将加速度从机体坐标系转到地理坐标系? 标记,谢谢楼主分享,不懂呢,还得看呢。 {:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表示姿态的方式大概有这个四种,欧拉角、四元数、方向余弦矩阵DCM、旋转矢量!
这里面最直观、最易理解的就是欧拉角了,欧拉角也是控制中常用的姿态表示方式。
对于欧拉角来说XYZ三个轴的旋转顺序是非常重要的!因为不同的旋转顺序会得到不一样的DCM,这就说可以用欧拉角来表示DCM,这也就是不同描述方式下姿态的互相转化了。
欧拉角能够表示DCM,同样的四元式肯定也是可以表示出DCM,将物体的姿态比喻成一个人的话,这四种姿态描述方式,不过是这个人身上所穿的不同衣服而已,他还是他。
因此欧拉角和四元数之间的关系就可以通过DCM互相转化了。
因此这里不同的DCM表达方式,联系欧拉角与四元数之前的桥梁就不一样了!
因此在姿态解算过程中,如果没有严格按照某一旋转顺序,四元数转化到欧拉角肯定是错误。
本人亲历姿态解算定义欧拉角旋转顺序的重要性,目前所有开源飞控欧拉角旋转顺序都是Z->Y->X,也称为航空顺序角。
因此,LZ所说的不同的旋转顺序,对应结果没有区别,是不靠谱的。估计楼主没自己写过姿态解算的算法。 小憨不傻 发表于 2015-9-8 20:57
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表 ...
想问一下,如何将四元数表示的姿态矩阵和不同顺序的方向余弦矩阵对应起来?四元数姿态矩形式是固定的啊 那么求解欧拉角的时候,旋转顺序不同,方向余弦表达式也不同,用到的元素就不一样,这一点一直没搞明白。。。 感谢楼主分享 不错的讨论 MARK MARK,谢谢楼主,,,,,,,,,,,,,,,,, 小憨不傻 发表于 2015-9-8 20:57
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表 ...
我最近也在看这方面的东西,想请问一下您这里谈到的航空顺序角是不是指先绕Z轴旋转ψ,再绕X轴旋转θ,再绕Y轴旋转γ
ψ是航向角,θ是俯仰角,γ是横滚角 cchwhk 发表于 2016-3-7 15:08
我最近也在看这方面的东西,想请问一下您这里谈到的航空顺序角是不是指先绕Z轴旋转ψ,再绕X轴旋转θ,再 ...
旋转顺序是Z->Y->X 小憨不傻 发表于 2016-3-7 18:00
旋转顺序是Z->Y->X
对对,是Z-Y-X mark{:smile:}{:smile:}{:smile:} 厉害,顶一下 不明觉厉,学习了 。 学习了,谢谢楼主~{:smile:}
页:
[1]