旋转矩阵与旋转向量
文章目录
- 两向量间的旋转轴及夹角
-
旋转变换矢量及其性质
-
旋转变换矢量与旋转矩阵间的转换关系
-
由旋转矩阵求取旋转变换矢量的过程
-
求解变换前后向量间的夹角
-
确定变换前后向量的中垂线方向
-
欧拉角
-
四元数
-
参考链接
-
两向量之间的转轴和转角
原始空间中的向量p_{0}与旋转空间中的向量p_{1}之间的夹角即为:
通过计算点积与模长的比例\frac{p_{0} \cdot p_{1}}{|p_{0}| |p_{1}|},
我们能够得到其间的夹角θ
旋转角所在的平面为有p_0和p_1所构成的平面,那么旋转轴必垂直该平面。
设平面向量p_0 = [a_1, a_2, a_3]和p_1 = [b_1, b_2, b_3]其叉乘运算结果即为旋转轴向量\vec{c}其具体计算如下:
\vec{c} = \begin{pmatrix} a_2b_3 - a_3b_2 \\ a_3b_1 - a_1b_3 \\ a_1b_2 - a_2b_1 \end{pmatrix}
旋转向量
任意旋转都可以用一个旋转轴和一个旋转角来刻画。
旋转轴方向向量u,旋转角\theta,即轴角。
旋转向量到旋转矩阵
该旋转向量与旋转矩阵之间的转换关系由罗德里格斯公式(Rodrigues's Formula)所表示:其中,
\mathrm{R=\cos\theta I+(1-\cos\theta)uu^T+\sin\theta u^\wedge}
运算符^的功能是将向量映射至其对应的反对称矩阵。具体而言,在这种运算中,
给定一个三维空间中的单位向量u,
其对应的反对称矩阵记为U= u^。
给定单位旋转向量\mathrm u及其对应的旋转轴\theta后,则其对应的旋转矩阵则可表示为以下形式:
其第一行元素包括\cos\theta加上\mathrm u_x平方乘以(1减去\cos\theta),其中一项为\mathrm u_x乘以\mathrm u_y乘以(1减去\cos\theta),另一项为负的\mathrm u_z乘以sinθ;
同样地,在第二行中包含了类似的组合表达式;
第三行则由类似的计算方式构成。
旋转矩阵到旋转向量
计算旋转角
$\begin{aligned}
&\text{矩阵}\ R\ 的迹运算结果为:
\
&= \cos\theta \cdot \text{单位矩阵迹运算结果}
- (1 - \cos\theta) \cdot 单位向量外积迹运算结果
- \sin\theta \cdot 单位向量反对称矩阵迹运算结果
\
&= 3\cos\theta + (1 - \cos\theta)
\
&= 1 + 2\cosθ.
&endaligned$
推得:
\theta=\arccos\frac{\mathrm{tr}(\mathrm{R})-1}2
计算旋转轴
旋转轴上的向量在旋转过程中保持不变,则满足以下关系式:
\mathrm{Ru=u.}
其中矩阵R的特征值1对应的特征向量即为转轴u。通过求解该方程并将其结果进行单位化处理,则可获得转轴u。
欧拉角
遵循右手坐标系原则,在该系统中当大拇指指向坐标轴的正向时,四指弯曲的方向代表旋转的正向。其中包含三个自由度指标:分别为偏航角(Yaw)、俯仰角(Pitch)和翻滚角(Roll)。
欧拉角理论将任意旋转分为绕三个坐标轴的旋转,并按照特定顺序进行操作。其旋转矩阵可表示为Rot_z(\theta) Rot_y(\beta) Rot_x(\alpha)。
当任意一个坐标轴以90度角度进行旋转变换时,在整体上的旋转变换效果与另一轴保持一致,则这种情况即被定义为"死锁"。
无论绕着x坐标系中的x₁轴向右或向左转动90°,将会使得y₁或z₁坐标系中的点位于同一直线上."失去了一个自由度"也就意味着真正参与该操作的作用体仅有y₁与x₁两个坐标系(或者是z₁与x₁两个坐标系)."因此,不可能围绕原始z₁坐标系中的z₂轴执行任何旋转变换的操作.
为了解决“死锁“的问题,我们要使用四个自由量,这就引出了”四元数“的概念。
四元数
该领域中的三维坐标表示方法较为抽象难以理解;然而该数学模型能够简洁而优雅地描述三维空间中的旋转操作。值得注意的是:不仅能够有效避免欧拉角所导致的运动学奇异(即死锁问题),同时也简化了涉及旋转矩阵的复杂运算。
参考链接
三维空间中刚体运动系列第二篇:旋转向量与罗德里格斯公式的深入解析
