旋转矩阵与欧拉角
描述两个坐标系间的相对姿态有多种方式,比如:旋转矩阵、欧拉角、四元数、罗德里格参数等。我们很多本科生或研究生课程中都或多或少涉及到坐标系变换,而且有些人还不止听过一遍,但还是感觉云里雾里(在下就是)。尤其是当旋转矩阵和欧拉角结合起来的时候,一听就会,一用就错。
下面我根据自己在使用中碰到的容易混淆的地方梳理一下,希望对各位的理解有些帮助。为了节约篇幅,我就默认大家对旋转矩阵和欧拉角有一些了解,或者看过相关的文献介绍。
坐标变换与旋转矩阵
我们大多数情况下遇到的都是欧氏变化,即同一个向量在各坐标系下的长度和夹角都不发生变化。定义两个坐标系1和2,对应的两组坐标基为
f1=[i1,j1,k1]T
和
f2=[i2,j2,k2]T
,同一个向量在这两个坐标系下的坐标表示分别为
[x1,y1,z1]T
和
[x2,y2,z2]T
。根据坐标系定义,有:
接下来就是可能混淆的地方了,下面我们有两种方式来表示坐标系1和坐标系2之间的旋转矩阵,这取决于方程(1)等式两边左乘哪组坐标基。
如果方程两边同时左乘坐标系1的坐标基:
这里的 C12 表示坐标系1相对于坐标系2的方向余弦矩阵(旋转矩阵),即从坐标系2到坐标系1的旋转矩阵。
如果方程两边同时左乘坐标系2的坐标基:
这里的 C21 表示坐标系2相对于坐标系1的方向余弦矩阵(旋转矩阵),即从坐标系1到坐标系2的旋转矩阵。
由于方向余弦矩阵是正交矩阵,因此 C21 和 C12 之间差一个转置。
欧拉角
欧拉角具有直观、易于理解的特点,能让我们清楚的看到两个坐标系间是怎么转动过去的,虽然欧拉角会碰到万向锁的问题,但它仍然是我们在描述刚体运动学过程中的重要参数。
学过相关内容的同学应该知道,根据旋转顺序不同,描述两个坐标系间转换的欧拉角共有12组。这里只介绍一种比较常见的转换方式,ZYX顺序转动,也就是航空航天领域常用“偏航-俯仰-滚转”(yaw-pitch-roll)方式:
- 绕Z轴旋转,得到偏航角 ψ ;
- 绕旋转之后的Y轴旋转,得到俯仰角 θ ;
- 绕旋转之后的X轴旋转,得到俯仰角 ϕ ;
以卫星或无人机为例,这里的“偏航-俯仰-滚转”指的是本体系
b
相对于参考坐标系
经过ZYX顺序三次旋转得到的旋转矩阵为: