旋转矩阵与四元数、欧拉角的关系,以及如何通过四元数解算欧拉角,一篇文章讲清楚

本文围绕旋转矩阵、欧拉角和四元数展开。介绍了旋转矩阵是描述坐标系变换的矩阵,欧拉角是对旋转动作的具体分解,二者可相互转换,但欧拉角存在万向节死锁问题。还引入轴角法构建四元数,四元数能消除死锁,且与旋转矩阵也有确定的转换关系。

旋转矩阵

所谓旋转,是指一个坐标系到另一个坐标系的变换。一个坐标系,对应着一种描述世界的“尺度”和“角度”,这里我们描述的对象为向量(vector)。

假定存在目标向量α\alphaαα\alphaα客观存在,客观静止。此时我想要去描述这个向量,那么我可以选定一个参考系(坐标系),以此为基准去描述该向量。假设此时有两个参考系W(大地坐标系)和B(机体坐标系),在W下α\alphaαkw=(x0,y0,z0)k_w=(x0,y0,z0)kw=(x0,y0,z0),而在B下α\alphaαkb=(x1,y1,z1)k_b=(x1,y1,z1)kb=(x1,y1,z1),那么这两个向量其实描述的是一个东西,只是参考系不同。

由于W和B之间存在一个相对位置关系,因此不难理解kw和kb之间也存在着一个“必然”的联系,而这个“联系”就是所谓的“旋转矩阵”。存在这样一个关系:
kb=Cwb∗kw k_b=C_w^b * k_w kb=Cwbkw
CwbC_w^bCwb便是“W坐标系到B坐标系”的旋转变化矩阵,CwbC_w^bCwb只跟W和B的相对位置关系有关,反映了W到B的一个“变化”,可以把它理解为一个“动作”。

那么具体拆解,CwbC_w^bCwb是一个3*3的矩阵∣abcdefghi∣\left|\begin{matrix} a & b & c \\ d & e & f \\ g & h & i \end{matrix} \right| adgbehcfi ,如果更具象一点理解它,该矩阵的每一列分别代表了W坐标系xyz三轴在B系的投影,比如说,原先XwX_wXw在W系下描述为(1,0,0),而XwX_wXw(仍如刚才所说,向量客观静止不变)在B系下的描述就为(a,d,g)。

事实上,正如刚才所说,CwbC_w^bCwb只跟W和B的相对位置关系有关,因此,对于任何一个向量,关于其在W和B下的描述,都存在上述的变换关系。

而想要将向量从B系的描述转为W系的描述,自然也存在一个CbwC_b^wCbw,而CwbC_w^bCwbCbwC_b^wCbw又“恰巧”存在这样一个关系:
Cbw=(Cwb)T C_b^w = (C_w^b)^T Cbw=(Cwb)T

欧拉角

欧拉角在姿态的描述非常的常见,那么它与刚才的旋转矩阵又有什么样的关系呢?还记得刚才提过,旋转矩阵是描述W到B的“动作”,那么这个“动作”的具体分解其实就是欧拉角。

W到B的动作过程中,我们肯定希望动作的过程“有序”,“规范”,而不是“稀里糊涂”就过去了,这样显然更利于我们的理解和描述。自然而然的,我们想到W先绕某个轴旋转若干度,再绕某个轴旋转若干度。。。最后与B重合。这就与我们的欧拉角很接近了。

一般我们如下图建立坐标系,机头方向为X,机翼方向为Y,上下为Z。

在这里插入图片描述

默认地,称绕Z轴旋转的角为偏航角(yaw,ψ\psiψ),绕Y轴旋转的为俯仰角(pitch,θ\thetaθ),绕X轴旋转的角为横滚角(roll,ϕ\phiϕ)。建系的同时也规定了旋转的正方向,即:
从原点向轴的正方向看,顺时针为该轴旋转的正方向 从原点向轴的正方向看,顺时针为该轴旋转的正方向 从原点向轴的正方向看,顺时针为该轴旋转的正方向

那么假定W和B现在都确定了,我现在想要用欧拉角来描述W到B的变换,那么这个“描述”与什么有关呢?假设我有以下两次描述:

第一次:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值