搜索
bottom↓
回复: 44

四元数与欧拉角个人理解

  [复制链接]

出0入0汤圆

发表于 2013-5-27 14:37:13 | 显示全部楼层 |阅读模式
发这个帖子,主要是来源与之前思考的两个问题:
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之间没有必然的联系。

其实也不难想象,同样的欧拉角,以不同的旋转顺序旋转,得到的刚体姿态之间没有什么联系。(基本不一样,可能会有巧合一样)
----------------------------------------------------------------------------------------------------------------------

[q0 q1 q2 q3]
刚体四元数,表征了刚体的旋转信息。

我们已知一个V--->V’的旋转:
旋转轴向量[L        M        N]
绕旋转轴的旋转角度a
得到一个四元数:
[q0                q1                q2                q3]
=
[cos(a/2)                L*sin(a/2)        M*sin(a/2)        N*sin(a/2)]

已知q0、q1、q2、q3得到一个坐标变换矩阵C3.
V’ = C3*V
其中C3 = C2 = C1

这样我求出四元数,就可以得到刚体的旋转信息。
不同的旋转方式,只要是V---V’,旋转信息就是一样的,我们通过四元数得到的变换矩阵C,都是一样的,但是由于旋转方式不同,所以求得的欧拉角套用的方程不一样,得出的欧拉角也不一样。
根据之前的设想,不同旋转方式下的欧拉角之间,本来就没有什么联系。

所以我们程序和书里面,欧拉角更新方程,不管是以什么方式旋转都是相同的。
----------------------------------------------------------------------------------------------------------------------

那为什么四元数的初始化会不一样呢?
假设四元数初始化用同意的代码,V--->V’,旋转顺序不一样,旋转顺序不一样,得到的欧拉角会不一样、欧拉角不一样,用同意的公式进行四元数初始化,就会得到不同的四元数。但都是V--->V’,只是旋转方式不一样,旋转信息都是一样的,四元数应该是一样的这一条件想矛盾。



以上只是小生对近日的总结,是一种复习,也希望对其他同仁有所帮助,更希望大神可以对我理解有误的地方委婉拍砖。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-5-27 18:11:18 | 显示全部楼层
       对于第一个问题,我的理解是,四元数其实就是轴-角表达式演变过来的,  所谓轴-角表达式,就是任何姿态的物体, 都可以表示为绕一根过地理坐标系原点的轴旋转一定的角度,  那这样看来,对于一个姿态来说就只存在一根轴和一个角度,   所以四元数与姿态是一一对应的。   而由于欧拉角的定义的缘故,所以在变回欧拉角时, 公式上就会有不一样。

出0入0汤圆

 楼主| 发表于 2013-5-27 18:33:14 | 显示全部楼层
zouyf12 发表于 2013-5-27 18:11
对于第一个问题,我的理解是,四元数其实就是轴-角表达式演变过来的,  所谓轴-角表达式,就是任何 ...

我也是这么理解的。

对于同一个姿态,欧拉角旋转顺序不一样,那么对应的欧拉角之间并没有什么联系、

出0入0汤圆

发表于 2013-5-27 18:38:29 | 显示全部楼层
我研究过工业机器人关节旋转问题,跟你这个很像。
得出的结论是:不管旋转轴线是否交于一点,不管旋转顺序如何,最终得到的姿态是一样的。
我理论计算过,计算机仿真也验证了我的结论。

出0入0汤圆

 楼主| 发表于 2013-5-27 18:51:33 | 显示全部楼层
kmani 发表于 2013-5-27 18:38
我研究过工业机器人关节旋转问题,跟你这个很像。
得出的结论是:不管旋转轴线是否交于一点,不管旋转顺序 ...

旋转顺序不管如何 得到的姿态相同。
是指的欧拉角不同的时候吧?

出0入0汤圆

发表于 2013-5-27 18:59:43 | 显示全部楼层
lologame 发表于 2013-5-27 18:51
旋转顺序不管如何 得到的姿态相同。
是指的欧拉角不同的时候吧?

我指的是每个关节不管哪个先转后转,只要相对转的角度一样,结果就一样。

出0入0汤圆

发表于 2013-5-27 23:16:03 | 显示全部楼层
牛!!顶!!

出0入0汤圆

发表于 2013-5-28 00:03:16 | 显示全部楼层
貌似不错的说。,大多数人都是直接复制代码,调通了就发视频庆贺,很少有人静下心思考这些原理性的问题。赞一个

出0入0汤圆

 楼主| 发表于 2013-5-28 08:48:40 | 显示全部楼层
sgzzour 发表于 2013-5-28 00:03
貌似不错的说。,大多数人都是直接复制代码,调通了就发视频庆贺,很少有人静下心思考这些原理性的问题。赞 ...

嗯,现在感觉单纯用别人的东西感觉意思不大了,我想在惯导领域有所发展,就要有理论基础、、

感觉这东西技术含量颇高.....

虽然现在还有一些疑惑的地方,但我还是会尽力解决、、

出0入0汤圆

发表于 2013-5-28 11:28:40 | 显示全部楼层
好深奥啊。关注中。。。

出0入0汤圆

发表于 2013-5-28 13:28:05 | 显示全部楼层
lologame 发表于 2013-5-28 08:48
嗯,现在感觉单纯用别人的东西感觉意思不大了,我想在惯导领域有所发展,就要有理论基础、、

感觉这东西 ...

好样的,支持你,榜样。

出0入0汤圆

发表于 2013-8-14 08:48:54 | 显示全部楼层
LZ
四元数可以根据起始位置不断更新姿态,然后转化为欧拉角,而实际上如果转化不同顺序的欧拉角,则欧拉角值不相同,但是按不同顺序不同的值转动结果相同。

如果我们直接用角速度传感器对角度积分可以直接得到欧拉角,但是欧拉角的转动顺序不同就会导致结果不同,但是陀螺仪的积分值却是相同的,也就是说这个轴仍然转动了这么个角度,只是欧拉
旋转方向顺序不同,所以,所有的欧拉旋转顺序如果可以任意调用的话,就可以避免gimbal lock,但是实际是不可能的,所以就引入了四元数来解决,所以四元数根据陀螺仪的积分无论旋转顺序,都是一个值

出0入0汤圆

发表于 2013-8-17 20:57:33 | 显示全部楼层
都是牛人 顶了

出0入0汤圆

发表于 2013-8-21 11:35:54 | 显示全部楼层
我也在努力学习理论

出0入0汤圆

 楼主| 发表于 2013-8-24 14:26:08 | 显示全部楼层
tinymilk 发表于 2013-8-14 08:48
LZ
四元数可以根据起始位置不断更新姿态,然后转化为欧拉角,而实际上如果转化不同顺序的欧拉角,则欧拉角 ...

意思是,不同的旋转顺序,相同的欧拉角,仍然是相同的位置吗?

出0入0汤圆

 楼主| 发表于 2013-8-24 16:59:57 | 显示全部楼层
这几日又用到惯导,我重新想象了下

欧拉角数值相等,就算是以不同的旋转顺序旋转,仍然会得到相同的姿态!

但是还不知道为啥,还没用从数学上去理解。

不同的旋转顺序,但是有相同的姿态变换矩阵C。
而得到不同旋转顺序的欧拉角时,使用的的矩阵中的系数不一样,然而得到的角度却是一样的??

出0入0汤圆

 楼主| 发表于 2013-8-24 20:21:19 | 显示全部楼层
晕死了,以前没有搞错,

相同的姿态,不同的旋转方向,得到的欧拉角,是不一样的!

出0入0汤圆

发表于 2013-8-24 22:49:47 | 显示全部楼层
好深奥啊,没有深究,只是复制了代码。

出0入0汤圆

发表于 2013-8-31 21:35:24 | 显示全部楼层
真心晕了。。。楼主有研究精神       很想认识你

出0入0汤圆

发表于 2013-11-6 18:57:40 | 显示全部楼层
至今未懂。。

出0入0汤圆

发表于 2013-11-11 17:54:46 | 显示全部楼层
其实四元数根本不关心坐标系是怎么旋转的,它只关心起始坐标系和目标坐标系,只要这两个确定了四元数的旋转轴和旋转角就确定了,而目标坐标系到底在哪里才是由欧拉角大小和旋转顺序决定的,所以两者的关系只是用一个变换矩阵联系起来,其实没什么太大联系。

出0入0汤圆

发表于 2013-11-11 18:15:18 | 显示全部楼层
看公式没看懂,哎

出0入0汤圆

发表于 2014-3-5 13:26:06 | 显示全部楼层
kmani 发表于 2013-5-27 18:59
我指的是每个关节不管哪个先转后转,只要相对转的角度一样,结果就一样。 ...

额,你这个是多刚体运动,相互之间有约束,只要运动学上没有达到奇异点,必然是一一对应的~~这里说的是单刚体的转动,不太一样哦~~

出0入0汤圆

发表于 2014-3-8 15:13:45 | 显示全部楼层
mark学习中

出0入0汤圆

发表于 2014-3-11 14:37:32 | 显示全部楼层
lologame 发表于 2013-8-24 16:59
这几日又用到惯导,我重新想象了下

欧拉角数值相等,就算是以不同的旋转顺序旋转,仍然会得到相同的姿态! ...

不同的旋转次序,得到的每个(三次旋转对应三个旋转矩阵)旋转矩阵中的角度是不一样的。比如若按照XYZ旋转,第一次旋转X轴得到的γ角度,和按照ZYX第三次旋转X轴得到的γ角度是不一样的,但是他们三次旋转矩阵的乘积是一样的。

出0入0汤圆

发表于 2014-7-20 20:12:56 | 显示全部楼层
                 学习了

出0入0汤圆

发表于 2014-7-20 21:11:51 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2014-7-25 13:53:13 | 显示全部楼层
mark  四元数与欧拉角个人理解

出0入0汤圆

发表于 2014-9-6 10:40:27 | 显示全部楼层
楼主两次否定了自己的看法,,,,,,不过还是学习了,顶12楼

出0入0汤圆

发表于 2014-11-7 20:01:40 | 显示全部楼层
你好,我想问一下9150内置DMP出来的四元数可否用来将加速度从机体坐标系转到地理坐标系?

出0入0汤圆

发表于 2015-9-8 18:55:24 | 显示全部楼层
标记,谢谢楼主分享,不懂呢,还得看呢。

出0入0汤圆

发表于 2015-9-8 19:51:54 | 显示全部楼层

出0入0汤圆

发表于 2015-9-8 20:57:20 | 显示全部楼层
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表示姿态的方式大概有这个四种,欧拉角、四元数、方向余弦矩阵DCM、旋转矢量!
这里面最直观、最易理解的就是欧拉角了,欧拉角也是控制中常用的姿态表示方式。
对于欧拉角来说XYZ三个轴的旋转顺序是非常重要的!因为不同的旋转顺序会得到不一样的DCM,这就说可以用欧拉角来表示DCM,这也就是不同描述方式下姿态的互相转化了。
欧拉角能够表示DCM,同样的四元式肯定也是可以表示出DCM,将物体的姿态比喻成一个人的话,这四种姿态描述方式,不过是这个人身上所穿的不同衣服而已,他还是他。
因此欧拉角和四元数之间的关系就可以通过DCM互相转化了。
因此这里不同的DCM表达方式,联系欧拉角与四元数之前的桥梁就不一样了!
因此在姿态解算过程中,如果没有严格按照某一旋转顺序,四元数转化到欧拉角肯定是错误。
本人亲历姿态解算定义欧拉角旋转顺序的重要性,目前所有开源飞控欧拉角旋转顺序都是Z->Y->X,也称为航空顺序角。
因此,LZ所说的不同的旋转顺序,对应结果没有区别,是不靠谱的。估计楼主没自己写过姿态解算的算法。

出0入0汤圆

发表于 2015-11-18 17:45:09 | 显示全部楼层
小憨不傻 发表于 2015-9-8 20:57
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表 ...

想问一下,如何将四元数表示的姿态矩阵和不同顺序的方向余弦矩阵对应起来?四元数姿态矩形式是固定的啊 那么求解欧拉角的时候,旋转顺序不同,方向余弦表达式也不同,用到的元素就不一样,这一点一直没搞明白。。。

出0入0汤圆

发表于 2016-1-14 21:10:25 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2016-3-3 01:41:52 | 显示全部楼层
不错的讨论

出0入0汤圆

发表于 2016-3-3 03:36:52 | 显示全部楼层
MARK                              

出0入0汤圆

发表于 2016-3-6 09:09:59 | 显示全部楼层
MARK,谢谢楼主,,,,,,,,,,,,,,,,,

出0入0汤圆

发表于 2016-3-7 15:08:25 | 显示全部楼层
小憨不傻 发表于 2015-9-8 20:57
一看帖子已经是2013年的帖子了,好久了,大概LZ现在应该明白了吧!
我就随便说说自己的看法吧!
第一点,表 ...

我最近也在看这方面的东西,想请问一下您这里谈到的航空顺序角是不是指先绕Z轴旋转ψ,再绕X轴旋转θ,再绕Y轴旋转γ
ψ是航向角,θ是俯仰角,γ是横滚角

出0入0汤圆

发表于 2016-3-7 18:00:21 | 显示全部楼层
cchwhk 发表于 2016-3-7 15:08
我最近也在看这方面的东西,想请问一下您这里谈到的航空顺序角是不是指先绕Z轴旋转ψ,再绕X轴旋转θ,再 ...

旋转顺序是Z->Y->X

出0入0汤圆

发表于 2016-3-8 09:53:02 | 显示全部楼层

对对,是Z-Y-X

出0入0汤圆

发表于 2016-3-8 17:11:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2016-8-17 15:57:28 | 显示全部楼层
厉害,顶一下

出0入0汤圆

发表于 2016-8-17 20:59:05 | 显示全部楼层
不明觉厉,学习了 。

出0入0汤圆

发表于 2016-8-17 22:12:05 | 显示全部楼层
学习了,谢谢楼主~
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 07:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表