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. 機器人正運動學---齊次變換矩陣

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