概念解析:欧拉角、姿态角、旋转矩阵、方向余弦矩阵、四元数、万向死锁

任意物体绕自己的各个轴旋转,其【姿态的变化】情况可以用旋转矩阵R来表示。所谓【姿态的变化】情况,可以这样理解:

前提:大地坐标系G系与大地固连,物体坐标系B系与飞机固连(X轴的方向为机头方向,Y轴的方向为左翼,Z轴方向朝天),初始状态下,令两个坐标系完全重合。

问题:现在我在飞机上任取一点A,该点在大地系的坐标为A0=(x0,y0,z0),(显然此时该点在机体系的坐标是一模一样的),那么当飞机绕自己的X轴旋转θ弧度后,问该点在大地系的新坐标A1?

答:A1=Rx * A0,这就是【旋转矩阵】所代表的【姿态变化】情况。而且,如果飞机先绕自己的X轴转(横滚Roll),再绕自己的Y轴转(俯仰Pitch),再绕自己的Z轴转(航向Yaw),想求点A在大地系的新坐标,只需把坐标A0依次左乘3个旋转矩阵即可,,也即A1 = Rz*Ry*Rx*A0。如果旋转顺序不同,这3个R矩阵的连续左乘的结果,肯定是不同的(因为矩阵乘法不满足交换律,除了一类特殊矩阵以外,显然旋转矩阵几乎不存在满足交换律的情形),这就是所谓的【欧拉角】的旋转是有顺序的。Roll、pitch、yaw三次旋转的角度就叫欧拉角。

连续3轴的旋转对应的3个旋转矩阵的有序乘积,称为方向余弦矩阵DCM(direction cos matrix),以下简称D矩阵。实际上DCM还可以从不同的理解角度来构造,请自行百度这篇文章《方向余弦矩阵(DCM)简介》,这篇文章是老外的论文翻译,已经在网上被转载了无数次,很容易找到(不过我要提醒一点的是,文章的第5小节关于磁力计矫正的部分是错误的,只有在赤道地区才能应用他这套理论。文章的其余部分没问题)。

欧拉角存在的一个问题是,旋转顺序会影响人的直觉感知,举个例子,本来Z轴的旋转代表航向YAW动作,但是,如果你先让飞机俯仰90读,令机头朝下,此时不管你让飞机的Z轴旋转多少度,机头的航向并不会发生任何变化。

其实,更符合人类直觉的姿态定义是:【姿态角】,定义是这样的,机头X轴与水平面的夹角称为俯仰角pitch,左翼Y轴与水平面的夹角称为横滚角Roll,机头X轴在水平面的投影与正北(或者正东,这个由你的喜好决定)的夹角称为航向角Yaw。你会发现,原来【姿态角】和【欧拉角】都有roll、pitch、yaw三个角,但是这3个角的定义根本不是一个东西!

尤其再提一点,航向,这个词实际山有3个,其对应的英文分别为:yaw、heading、course,这3个航向值的定义完全不同,请自行搜索学习这3个词的概念(比较坑的是,这3个词的中文翻译都叫航向,实际上却是完全不同的定义)

很多人都觉得欧拉角描述物体的姿态很直观,实际上是错把【姿态角】当成了【欧拉角】而已,大多数情况下欧拉角很不直观!

【欧拉角】最适合直观描述的东西,我只想到一个非常好的例子,那就是求三关节机械臂末梢的姿态,每个关节都是一个舵机,可以顺次用三个舵机的转角的旋转矩阵乘积来表出,这三次转角恰好就是【欧拉角】。

欧拉角的万向死锁问题,网上流行的那个老外做的陀螺动画,相信这篇文章的读者你也看过,我看了100遍硬是没看懂。

最后在公式推导中才搞明白,要理解这个问题需要一些公式,博客打公式不方便,我直接在word里写好,贴图了,如下:

以上

一旦把欧拉角、DCM理解通透之后,再去学习四元数就会如鱼得水,四元数的推导与证明过程,较为复杂,也是该领域最值钱的知识,在飞控EKF中被广泛运用。大体思路就是从三维空间的轴角旋转公式,一步步联系到四元数乘法,很有意思。

有这方面需求的朋友可联系我,在本网页内搜索【联系方式】或者【群号】即可找到我。

### 刚体旋转矩阵方向余弦矩阵的关系 在三维空间中,刚体的旋转可以通过旋转矩阵来描述。此矩阵不仅用于表示不同坐标系间同一向量坐标的转换关系,还具体描绘了旋转的本质[^2]。 #### 定义与性质 方向余弦矩阵由两组不同的标准正交基之间基底向量的方向余弦构成。假设存在两个直角坐标系 \( OXYZ \) \( Ox'y'z' \),其中每一轴都有对应的单位矢量作为各自的标准正交基,则这两个坐标系之间的相对姿态可通过一个3×3阶方阵表示出来,这个矩阵就是所谓的方向余弦矩阵\[ R=\begin{bmatrix} l_{xx'} & m_{xy'}& n_{xz'} \\l_{yx'} &m_{yy'} &n_{yz'}\\l_{zx'} &m_{zy'} &n_{zz'}\end{bmatrix}\][^4]。 这里, - \( l, m, n \) 表示的是原坐标系中的某条轴线(\(X\) 或者 \(Y\) 或者 \(Z\))投影到新坐标系相应轴上的分量; - 下标分别代表旧坐标系新坐标系对应轴名; 因此,当考虑从原始坐标系转至目标坐标系的过程时,上述矩阵实际上起到了桥梁作用,它能够将任意向量按照新的参照框架重新表述。 #### 数学推导过程 给定任意初始状态下的向量 \(V_0=a_i+b_j+c_k\) ,经过一次旋转变换后变为 \(V'=a'_i'+b'_j'+c'_k'\)。此时有: \[ V' = RV_0 \] 这意味着通过乘以旋转矩阵 \(R\) 可实现对原向量 \(V_0\) 坐标的更新操作。而为了构建这样的变换规则,就需要计算每一对相互垂直且长度相等的基础向量间的夹角余弦值并填入相应的行列位置形成最终的形式化表达式。 对于单次绕固定轴转动的情况来说,比如仅围绕 \(Z\) 轴发生角度变化 θθ 的情形下,其具体的 DCM 形态如下所示: ```matlab % 绕 Z 轴旋转的角度为 theta theta = pi / 4; % 示例取 π/4 即 45 度 DCM_z_rotation = [cos(theta), -sin(theta), 0; sin(theta), cos(theta), 0; 0, 0, 1]; ``` 同样的逻辑适用于其他两种情况(即沿 \(X\) 或 \(Y\) 轴),只是内部元素排列有所区别而已[^3]。 综上所述,无论是称为“旋转矩阵”还是“方向余弦矩阵”,本质上都是指同一个概念的不同称呼方式,在实际应用当中二者是可以互换使用的[^1]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值