機器人學中的旋轉矩陣怎麼理解?

初學機器人,看了機器人學導論這本書,但是卻不理解旋轉矩陣,旋轉矩陣到底想表達什麼


本人應用數學,不請自來。

題主可能要了解這樣一個事實:矩陣就是變換

所以,旋轉矩陣就是用來做旋轉操作的變換

旋轉矩陣一般分 3 個理解, R_x(	heta),R_y(	heta),R_z(	heta) ,分別對應繞 x,y,z 軸旋轉 	heta 角。先寫出來如下:

R_z(	heta)=egin{pmatrix} cos(	heta)-sin(	heta)0\ sin(	heta)cos(	heta)0\ 001 end{pmatrix}

R_x(	heta)=egin{pmatrix} 100\ 0cos(	heta)-sin(	heta)\ 0sin(	heta)cos(	heta) end{pmatrix}

R_y(	heta)=egin{pmatrix} cos(	heta)0sin(	heta)\ 010\ -sin(	heta)0cos(	heta) end{pmatrix}


然後,我們把機器人的手臂位置,用向量

v=egin{pmatrix} v_x\ v_y\ v_z end{pmatrix}

表示,然後我們把機器人的手臂繞著 x 軸旋轉 58^circ ,旋轉之後的手臂位置是多少呢?

正是用矩陣乘法表達的:

R_x(58^circ)v=egin{pmatrix} 100\ 0cos(58^circ)-sin(58^circ)\ 0sin(58^circ)cos(58^circ) end{pmatrix}egin{pmatrix} v_x\ v_y\ v_z end{pmatrix}


又比如,我們想要在上面的基礎上,繼續將機器人的手臂做一系列繞 y 軸,繞 z 軸旋轉指定角度的操作,也只需要繼續在左邊乘相應的矩陣,比如

R_z(77^circ)R_y(32^circ)R_x(58^circ)v

等等。


Euler 發現,剛體的任何一個旋轉都有旋轉軸,而且都可以僅僅靠上面 3 種繞軸旋轉的反覆操作有限次實現。


題主可能是本身對機器人比較有興趣所以去看的這本書。

但是冒昧提醒一下,您現在可能需要看的是高等代數,線性代數一類的基礎書,把矩陣的知識基礎打好。

最後祝題主學習愉快。


旋轉矩陣是用來描述三維空間中兩個不同笛卡爾坐標系之間姿態(不含位置)關係的一個3×3矩陣。

1.矢量與坐標

我們常常用矢量 v 來描述一個物體的線速度,矢量是一個抽象概念,要讓計算機處理矢量,就需要將矢量用相應的坐標來表示。要找到矢量的坐標,必須先選定一個坐標系,在三維空間下,若我們選取一個符合右手法則的笛卡爾坐標系,那麼對於矢量 v 就有:v=ue_{x}+ve_{y}+we_{z},其中 e_{x},e_{y},e_{z} 是三維空間中的一組基(準確說應該是一組標準正交基),該坐標系可以用原點 O 和這組基 e_{x},e_{y},e_{z} 唯一確定。在該坐標系下,矢量 v 對應的坐標由三個實數 u,v,w 表示,為與矢量區分記作 ar{v}=[u,v,w]^T .

所以連接矢量與坐標的橋樑就是坐標系(或者說是一組基),然而坐標系的選取是不唯一的,所以與矢量對應的坐標也是不唯一的,同一個矢量在不同坐標系 {A}{B} 下對應不同的坐標  ^A ar{v} ^B ar{v} 。雖然坐標系不同,坐標就會不同,但它們表示的都是同一個矢量,所以不同坐標之間是有一定關係的,也就是說可以找到  ^A ar{v} ^B ar{v} 等表達同一矢量的不同坐標之間的關係,而旋轉矩陣  _{B}^{A}R 就能完成這一任務:  ^A ar{v}= _{B}^{A}R ^B ar{v}

註:1)由於題主是看過《機器人學導論》的,這裡就沿用該書中上下角標等符號規則;

2)由於問題是旋轉矩陣,故不討論不同坐標系坐標原點不重合的情況,只討論如下圖所示的坐標原點重合的兩個坐標系之間的姿態關係。

2.旋轉矩陣  _{B}^{A}R

當只討論坐標系姿態不同時,坐標與坐標系的一組基的線性組合就是矢量:

v=[e_{x}^A e_{y}^A e_{z}^A] ^A ar{v}

v=[e_{x}^B e_{y}^B e_{z}^B] ^B ar{v}

Rightarrow v=[e_{x}^A e_{y}^A e_{z}^A] ^A ar{v}=[e_{x}^B e_{y}^B e_{z}^B] ^B ar{v}

Rightarrow  ^A ar{v}=[e_{x}^A e_{y}^A e_{z}^A]^{-1}[e_{x}^B e_{y}^B e_{z}^B] ^B ar{v}

Rightarrow  ^A ar{v}=[e_{x}^A e_{y}^A e_{z}^A]^T[e_{x}^B e_{y}^B e_{z}^B] ^B ar{v}

Rightarrow  _{B}^{A}R=[e_{x}^A e_{y}^A e_{z}^A]^T[e_{x}^B e_{y}^B e_{z}^B]

顯然,相對於A坐標系的旋轉變換矩陣其實就是B坐標系的一組基在A坐標系基上的投影,因此可以記作   _{B}^{A}R=[ ^Aar{e}_{x}^B  ^Aar{e}_{y}^B  ^Aar{e}_{z}^B] ,  ^Aar{e}_{x}^B 表示B坐標系的 x 軸在A坐標系中的坐標。具體的例子就不舉了,你可以假設B坐標系相對於A坐標系的z軸旋轉了90°,畫張圖結合上式驗證一下。

3.多說幾句

旋轉矩陣有九個元素,但這九個元素不是線性獨立的。所以描述三維空間中的兩個笛卡爾坐標系之間的姿態關係,除了旋轉矩陣   _{B}^{A}R ,還有別的方法。

1)一個旋轉軸+一個角度。繞A坐標系中的旋轉軸 omega 旋轉 	heta 就能得到B坐標系。與旋轉矩陣之間的關係可以應用Rodrigues公式:

  _{B}^{A}R=R(omega,	heta)=I_{3	imes3}+S(omega)sin	heta +S(omega)^2(1-cos	heta)

  _{B}^{A}R=R(omega,	heta)=cos	heta I_{3	imes3}+S(omega)sin	heta +omega omega^T(1-cos	heta)

2)歐拉角。(24種)

3)四元數。


先理解歐拉角。

理解了歐拉角的三個量之後,再分別以一定順序(沿z軸,沿y軸,再沿z軸)將旋轉矩陣乘以向量矩陣,三次之後,我們得到一個新的坐標系,這個坐標系就是向量矩陣經旋轉後而得到的坐標系,也就是說向量矩陣得到了旋轉。


剛剛看到的維基百科說得很清楚

https://zh.wikipedia.org/wiki/%E5%AE%9A%E5%90%91_(%E5%B9%BE%E4%BD%95)


我給出一種從圖像角度的解釋,讓你先從感性上去認識這些看起來很抽象的矩陣,發現其中的規律,從而理解它的本質和核心。

以下的每一張圖,都有三個圖像:

(1)原圖是一個正方形的圖像,描述這個圖像只需要定義4個點的坐標就可以了。

(2)變換圖是把這4個點與下面的矩陣相乘得到新的點坐標繪製的圖像。

(3)矩陣圖像是由兩條線段組成的圖形,紅色線段代表矩陣的第一列矢量,藍色線段代表矩陣的第二列矢量。

圖1 標準單位矩陣

請看圖1,左邊的正方形的4個點乘以矩陣

【1 0

0 1】

之後得到右邊的變換圖。

結論:標準單位矩陣對圖形沒有任何改變。

圖2 單邊縮小矩陣

圖2對應於矩陣

【0.5 0

0 1】

可以看出正方形的水平方向(x方向)縮小了一半,垂直方向(y方向)沒有變化。

結論:第一列矢量可以改變圖形的水平方向的大小。

圖3 縮小的矩陣

圖3對應於矩陣

【0.5 0

0 0.5】

變換後,正方形的x方向和y方向都縮小了一半。

結論:第二列可以改變圖形的y方向的大小。

圖4 旋轉矩陣的正方向旋轉

圖4對應於旋轉矩陣

【cos? -sin?

sin? cos?】

其中?等於45度,sin(45)=cos(45)=0.707,正方形角度逆時針旋轉了45度,大小沒有變化。

結論:由於2維旋轉矩陣列矢量的長度都是1,所以不會改變圖形的大小,但是可以改變圖形的方向。因此,旋轉矩陣的性質之一是列矢量和行矢量長度為1。

圖5 旋轉矩陣的負方向旋轉

圖5對應於旋轉矩陣

【cos? -sin?

sin? cos?】

其中?等於-45度,正方形角度順時針旋轉了45度,矩陣的夾角等於90度,(即紅色與藍色線段的角度)

為了統一標準,規定逆時針旋轉為正,順時針旋轉為負。

圖6 不是旋轉矩陣的伸長旋轉

圖6的矩陣是把圖5的矩陣的第一列乘以2得到的矩陣

【1.40 0.707

-1.40 0.707】

旋轉的方向沒有變,但是x方向被放大了2倍,矩陣的夾角等於90度,(即紅色與藍色線段的角度)

結論:矩陣的兩個方向(紅色和藍色線段)只要是直角,正方形的相鄰邊的夾角不會改變,但是由於不單位長度,邊長會改變。直角反映的是正交性。

圖7 任意的矩陣

圖7的矩陣是

【0.8 0.3

1.2 1.6】

變換之後,正方形的邊長和夾角同時發生改變,矩陣夾角小於90度。

結論:旋轉矩陣的單位長度保證了邊長不改變,旋轉矩陣的正交性(即紅色和藍色線段的夾角為直角)保證了圖形沒有變形。

圖8 矩陣的矢量重合

圖8的矩陣是

【0.8 0.8

1 1】

這個情況,正方形被壓縮成了一條直線。

結論:如果矩陣的維度由2維壓縮到1維,就是奇異矩陣,這種矩陣沒有逆矩陣,因為你無法由一根直線變換為原來的正方形。

通過這8張圖形,我們可以發現如下的規律:

旋轉矩陣的兩條重要的性質是單位性和正交性,這是因為你在旋轉機械手時,不會改變它的長度,也不會讓它變形,只是改變它的方向(姿態),所以旋轉矩陣又叫做姿態矩陣,它們是一類特殊的矩陣。2維的旋轉矩陣理解了,就可以推廣到3維旋轉矩陣。

d?6?


旋轉矩陣表述的是兩個坐標系之間的姿態變化


我也剛開始看,不理解這個地方,不知道題主解決了嗎??


推薦閱讀:

高等代數複習拾遺(一)
線性代數: 線性空間與線性映射(2)
八大類型行列式及其解法
高等代數筆記整理(三)
導言&目錄

TAG:機器人 | 數學 | 線性代數 | 矩陣 | 高等代數 |