Post

齐次变换矩阵

齐次变换矩阵相关笔记

平移

将点$\left(x, y, z\right)$平移$t_x$,$t_y$,$t_z$单位

\[T = \begin{bmatrix} 1 & 0 & 0 & t_x \\ 0 & 1 & 0 & t_y \\ 0 & 0 & 1 & t_z \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

旋转

旋转正负与右手定则一致:如果右手的拇指指向旋转轴的正方向,四指的弯曲方向表示正角度的旋转方向。即在右手坐标系下,逆时针旋转为正

绕x轴旋转角度$\theta$

\[R_x = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta & 0 \\ 0 & \sin\theta & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

绕y轴旋转角度$\theta$

\[R_y = \begin{bmatrix} \cos\theta & 0 & \sin\theta & 0 \\ 0 & 1 & 0 & 0 \\ -\sin\theta & 0 & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

绕z轴旋转角度$\theta$

\[R_z = \begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

组合旋转

如果一个物体绕多个轴旋转,可以通过矩阵乘法将这些旋转矩阵组合起来。例如,如果一个物体先绕 z轴旋转角度$\alpha$,再绕y轴旋转角度$\beta$,最后绕x轴旋转角度$\gamma$,总的旋转矩阵R可以表示为:

\[R = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta & 0 \\ 0 & \sin\theta & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} \cos\theta & 0 & \sin\theta & 0 \\ 0 & 1 & 0 & 0 \\ -\sin\theta & 0 & \cos\theta & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \\ \sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

矩阵乘法的顺序是从右到左,即最先旋转的矩阵在最右边

即坐标系$\textbf{B}$的初始位姿与坐标系$\textbf{A}$重合,首先$\textbf{B}$相对于$\textbf{A}$的z轴顺时针旋转30度,再沿$\textbf{A}$的x轴正方向移动12个单位,并沿$\textbf{A}$的y轴正方向移动6个单位,点$\textbf{p}$在$\textbf{B}$的描述为$^{B}\textbf{p}=[3, 7, 0]^T$,则在$\textbf{A}$的描述$^{A}\textbf{p}$为

\[^{A}_{B}R = R_{(z, 30^{\circ})} = \begin{bmatrix} \cos(30^{\circ}) & -\sin(30^{\circ}) & 0 & 0 \\ \sin(30^{\circ}) & \cos(30^{\circ}) & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\] \[^{A}P_{B_o} = \begin{bmatrix} 12 \\ 6 \\ 0 \end{bmatrix}\] \[^{A}P = ^{A}_{B}R^{B}\textbf{p} + ^{A}P_{B_o} = \begin{bmatrix} -0.902 \\ 7.562 \\ 0 \end{bmatrix} + \begin{bmatrix} 12 \\ 6 \\ 0 \end{bmatrix} = \begin{bmatrix} 11.098 \\ 13.562 \\ 0 \end{bmatrix}\]

翻转

绕xy平面的翻转(翻转z轴)

\[F_z = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

绕xz平面的翻转(翻转y轴)

\[F_y = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & -1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

绕yz平面的翻转(翻转x轴)

\[F_x = \begin{bmatrix} -1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]

缩放

将点$\left(x, y, z\right)$的x,y,z坐标值分别缩放$s_x$,$s_y$,$s_z$倍

\[S = \begin{bmatrix} s_x & 0 & 0 & 0 \\ 0 & s_y & 0 & 0 \\ 0 & 0 & s_z & 0 \\ 0 & 0 & 0 & 1 \\ \end{bmatrix}\]
This post is licensed under CC BY 4.0 by the author.