有4种表达方式:旋转矩阵SO(3)、四元数、旋转向量和欧拉角。
一、旋转矩阵SO(3)
- 定义:旋转矩阵是一个3×3的正交矩阵,且行列式为1。
- 表示:可逆矩阵,逆矩阵和转置矩阵相同,表示相反的旋转。
- 优点:可以直接应用于向量进行旋转,矩阵乘法简单直接。
- 缺点:表示复杂的旋转时需要9个参数(9个矩阵元素),占用空间较大,且需要保持矩阵的正交性和行列式为1。
二、四元数
- 定义:四元数是一种扩展复数的数学对象,通常表示为 q= a + bi + cj + dk。
- 表示:一个单位四元数 q 可以表示为 q=(w,v)其中 w是实部,v=(x,y,z) 是虚部,需要注意的是只有单位四元数才能表示旋转,使用前需要归一化。
- 优点:避免万向锁问题,计算高效,仅需要4个参数,插值简单(球面线性插值)。
- 缺点:直观性不如其他方法强,不易理解。
三、旋转向量(轴角)
- 定义:用一个旋转轴 u 和一个旋转角度 θ来描述旋转。
- 表示:旋转轴是一个单位向量 u,旋转角度为 θ。旋转矩阵可以通过Rodrigues公式从轴角表示法推导。这个转换过程也对应着李群李代数的映射。
- 优点:直观地描述旋转,适合描述简单的旋转。
- 缺点:进行复杂计算时不如四元数或旋转矩阵方便,而且显而易见他和欧拉角一样也有奇异性,在旋转角度超过2π的时候。
四、 欧拉角
- 定义:欧拉角是一组三个角度,用来描述物体的三个逐次旋转。
- 表示:我们常常提到的row、pitch 、yaw。常见的旋转顺序有XYZ、ZYX等,每个顺序对应不同的一组三个角度(α, β, γ)。
- 优点:容易理解和可视化,适合表示分阶段的旋转。
- 缺点:容易引起万向锁问题。
五、万向锁
- 定义:万向锁是指在使用欧拉角表示旋转时,当两个旋转轴重合时(这种情况是中间旋转的角度是±90°的时候),导致一个自由度的丢失。
- 问题:当两个旋转轴重合时,系统无法区分两个独立的旋转,使得旋转不再能表示所有可能的三维旋转。这在飞行器控制和计算机图形学中会带来实际问题。
- 解决方法:使用四元数或旋转矩阵来表示旋转,因为它们不会出现万向锁问题