旋转矩阵
旋转的表示
在三维坐标系中,有三种表达形式
- 旋转矩阵\[ R = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix} \]
- 旋转角\[ \theta = \begin{pmatrix} \phi & \theta & \psi \end{pmatrix} \]旋转角又称欧拉角,一般情况下旋转角指的是坐标系绕\(x\)轴旋转后,再绕\(y\)轴旋转后,再绕\(z\)轴旋转分别的角度
- 旋转向量\[ r = \begin{pmatrix}r_x & r_y & r_z\end{pmatrix} \\ \theta = norm(r)\]刚体绕旋转轴旋转,\(r\)表示的是旋转轴的方向,\(r\)的长度\(norm(r)\)表示刚体绕轴旋转的角度
旋转向量与旋转矩阵之间的变换
旋转向量与旋转矩阵之间的变换又称为罗德里格斯变换(Rodrigues)
旋转向量变成旋转矩阵
\[ \theta \larr norm(r) \\
r \larr r/\theta
\]
\[ R = \cos{\theta{I}} + (1-\cos{\theta})rr^T + \sin{\theta}
\begin{bmatrix}
0 & -r_z & r_y \\
r_z & 0 & -r_x \\
-r_y & r_x & 0
\end{bmatrix}
\]
旋转矩阵变为旋转向量
\[ \sin{\theta}\begin{bmatrix}
0 & -r_z & r_y \\
r_z & 0 & -r_x \\
-r_y & r_x & 0
\end{bmatrix} = \frac{R-R^T}{2}
\]
\[ \theta = \arccos(\frac{tr(R-I)}{2})
\]
左右手坐标系确定及其旋转正向
这两个问题很容易弄混淆,要确定旋转正向必须先确定是左手坐标系还是右手坐标系。
- 判定坐标系:
- 使用左手,大拇指指向Z轴正向,其余四指由X向Y握起。如果可以达成,则为左手坐标系,否则为右手坐标系。
- 伸出左手,食指朝上,大拇指向右,中指向前,如果X,Y,Z三轴分别与大拇指,食指,中指同向,则为左手坐标系。否则为右手坐标。
- 左手坐标系与右手坐标系的区别仅在:Z轴方向相反。相同点:X向右,Y向上
- 有了坐标系,判断旋转正向:
- 从轴的正方向看向原点,左手坐标系下 :顺序时针方向即是旋转正向,右手坐标系下:逆时针方向即是旋转正向
- 左手坐标,绕Y轴旋转:左手握住Y轴,四指弯曲的方向就是旋转正向,这里就是由Z轴指向X轴。
若绕Z轴旋转:左手握住Z轴,四指弯曲的方向就是旋转方向,这里是由X轴指向Y轴。
内旋是右乘 外旋是左乘吗