4. 机器人正运动学---理解变换矩阵

目录

1. 引言

2. 旋转矩阵的几个性质

2.1 旋转矩阵是座标轴的投影

2.2 旋转矩阵是正交矩阵

2.3 旋转矩阵的每一列都是单位向量

3. 举例

4. 总结


1. 引言

在上一篇文章中我们介绍了座标系及其变换关系,但是我们过分依赖了公式推导,导致在实际应用中缺少可操作性。想一下给定旋转轴和旋转角你要怎样得到相应的变换矩阵呢?比如绕x轴旋转45度对应的变换矩阵怎么得到?如果每次写一个变换矩阵都要把前面的推导过程进行一遍,想来都很恐怖。因此我们需要更为直观和简洁的理解。

2. 旋转矩阵的几个性质

首先我们需要澄清一点,旋转矩阵只描述了座标系之间的旋转关系,因此在这一篇文章中我们讨论的两个座标系原点是重合的。透过前面一篇文章的陈述我们已经了解到两个原点重合的座标系{A}和{B}的姿态关系可以利用下面这个3x3的变换矩阵来表达。

                                  \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=\begin{bmatrix} cos<i_B, i_A> & cos<j_B, i_A>& cos<k_B, i_A>\\ cos<i_B, j_A> & cos<j_B, j_A>& cos<k_B, j_A>\\ cos<i_B, k_A> & cos<j_B, k_A>&cos<k_B, k_A> \end{bmatrix}\begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix}=R\begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix}

这个等式左侧是某空间点在座标系{A}中的座标,等式的右侧是一个变换矩阵乘以同一个空间点在座标系{B}中的座标。

2.1 旋转矩阵是座标轴的投影

那么我们尝试把一些特殊的点代入到等式中看看会发生什么。首先我们把座标系{B}的x轴单位矢量[1 0 0]代入到等式中,座标系{B}的x轴单位适量在座标系{B}的表达形式如下:

                                                                                          \begin{bmatrix} x_{B}\\ y_{B}\\ z_{B} \end{bmatrix} = \begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix}

把它代入到上面的等式中,得到:

                                            \begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}=\begin{bmatrix} cos<i_B, i_A> & cos<j_B, i_A>& cos<k_B, i_A>\\ cos<i_B, j_A> & cos<j_B, j_A>& cos<k_B, j_A>\\ cos<i_B, k_A> & cos<j_B, k_A>&cos<k_B, k_A> \end{bmatrix}\begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix}

在这个等式中我们只从矩阵乘法的角度出发,等式右侧的结果是矩阵R的第一列。好,我们把前面的过程梳理成一句话那就是旋转矩阵R的第一列代表了座标系{B}的x轴在座标系{A}中座标。而我们又知道所谓的座标那就是向量在参考座标系各个轴上的投影。因此,更为清晰一点的阐述应该是旋转矩阵R的第一列代表了座标系{B}的x轴在座标系{A}的三个轴上的投影。你可以直接观察一下R的第一列的具体形式,发现确实如此。

同理我们得到旋转矩阵的第二列代表座标系{B}的y轴单位向量在座标系{A}的投影,第三列代表座标系{B}的z轴单位向量在座标系{A}的投影。我大多数时候列写旋转矩阵都是通过这一条结论。

2.2 旋转矩阵是正交矩阵

如果你去观察矩阵的每一行你会发现恰恰相反,比如旋转矩阵的第一行是座标系{A}的x轴单位向量在座标系{B}中的投影。说到这里请思考一个问题,如果我把这个矩阵的每一行变成每一列,也就是对这个矩阵取转置,那么矩阵的三列是不是就分别代表座标系{A}的三个单位矢量在座标系{B}中的投影呢。用等式来表达那就是:

                                                                                   \begin{bmatrix} x_B\\ y_B\\ z_B \end{bmatrix}=R^{T}\begin{bmatrix} x_A\\ y_A\\ z_A \end{bmatrix}

从这个等式中我们得到了另外一个结论:转置即逆。因此旋转矩阵是正交阵。另外一点因为旋转矩阵的每一列代表的都是某个座标系x,y或者z轴的单位矢量在另一个座标系下的表示。我们知道笛卡尔座标系的三个座标轴是相互正交的。从这一点上我们也可以得到转置即逆这个结论。

2.3 旋转矩阵的每一列都是单位向量

这个结论其实也不难得出,因为旋转矩阵的每一列都代表了某个座标系的三个轴的单位矢量在其他座标系下的投影。而实际上单位矢量是矢量本身的性质,与这个矢量在哪个座标系下表达无关。因此旋转矩阵的每一列都是单位矢量。

如果你对这种解释不放心其实可以回到矩阵R的具体表达,以第一列为例,它分别是座标系{B}的x轴单位矢量在座标系{A}中的投影。如下图所示,我绘制了一些辅助线用于更好的理解。

座标系{B}的x轴单位矢量Xb的长度为1,也就是l = 1。而cos<i_B, i_A> = \frac{x}{l} = x,同理cos<i_B, j_A> = \frac{y}{l} = ycos<i_B, k_A> = \frac{z}{l} = z。那么旋转矩阵的第一列三个元素的平方和为:

                                                                                     x^{2}+y^{2}+z^{2}=l^{2}=1

从这一点上我们也可以说旋转矩阵的每一列都是单位向量(你会发现每一行也是单位向量)。

3. 举例

理解了前面的几个性质之后,我相信我们可以比较轻松的解决这篇文章开头提出的问题了,座标系{B}由座标系{A}绕x轴旋转45度得到,旋转矩阵应该怎么写(座标系{B}与座标系{A}之间的姿态关系)?通过2.1中得出的结论我们可以一列一列地写出这个旋转矩阵。旋转矩阵的第一列代表了座标系{B}的x轴在座标系{A}中的表示。

由于座标系{B}是座标系{A}绕x轴旋转得到,因此两个座标系的x轴是重合的。因此座标系{B}的x轴只在座标系{A}的x轴上有投影,在{A}的另外两个轴上没有投影(座标轴正交的缘故)。因此旋转矩阵的第一列为:

                                                                                             \begin{bmatrix} 1\\ 0\\ 0 \end{bmatrix}

旋转矩阵的第二列代表座标系{B}的y轴在座标系{A}中的投影,如下图所示。

根据简单的三角关系我们就可以得出第二列为:

                                                                                      \begin{bmatrix} 0\\ cos(45^{\circ })\\ sin(45^{\circ }) \end{bmatrix}

同样的道理我们可以推导出第三列为:

                                                                                     \begin{bmatrix} 0\\ -sin(45^{\circ} )\\ cos(45^{\circ} ) \end{bmatrix}

至此我们就完成了旋转矩阵的列写。

这里我们只讨论了绕特殊轴的旋转,至于绕任意轴旋转任意角度的问题,在之后的文章中我们再讨论。

最后我们总结一下旋转矩阵的性质:旋转矩阵的本质是座标轴单位向量的投影;旋转矩阵转置即逆;旋转矩阵的每一行,每一列都是单位向量。

4. 总结

这篇文章主要介绍了旋转矩阵的性质,下一篇文章我们将讨论齐次变换矩阵。由于个人能力有限,所述内容难免存在疏漏,欢迎指出,欢迎讨论。

下一篇:5. 机器人正运动学---齐次变换矩阵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章