機器人學中的旋轉矩陣怎麼理解?
初學機器人,看了機器人學導論這本書,但是卻不理解旋轉矩陣,旋轉矩陣到底想表達什麼
本人應用數學,不請自來。
題主可能要了解這樣一個事實:矩陣就是變換。
所以,旋轉矩陣就是用來做旋轉操作的變換。
旋轉矩陣一般分 3 個理解, ,分別對應繞 軸旋轉 角。先寫出來如下:
然後,我們把機器人的手臂位置,用向量
表示,然後我們把機器人的手臂繞著 軸旋轉 ,旋轉之後的手臂位置是多少呢?
正是用矩陣乘法表達的:
又比如,我們想要在上面的基礎上,繼續將機器人的手臂做一系列繞 軸,繞 軸旋轉指定角度的操作,也只需要繼續在左邊乘相應的矩陣,比如
等等。
Euler 發現,剛體的任何一個旋轉都有旋轉軸,而且都可以僅僅靠上面 3 種繞軸旋轉的反覆操作有限次實現。
題主可能是本身對機器人比較有興趣所以去看的這本書。
但是冒昧提醒一下,您現在可能需要看的是高等代數,線性代數一類的基礎書,把矩陣的知識基礎打好。
最後祝題主學習愉快。
旋轉矩陣是用來描述三維空間中兩個不同笛卡爾坐標系之間姿態(不含位置)關係的一個3×3矩陣。
1.矢量與坐標
我們常常用矢量 來描述一個物體的線速度,矢量是一個抽象概念,要讓計算機處理矢量,就需要將矢量用相應的坐標來表示。要找到矢量的坐標,必須先選定一個坐標系,在三維空間下,若我們選取一個符合右手法則的笛卡爾坐標系,那麼對於矢量 就有:,其中 是三維空間中的一組基(準確說應該是一組標準正交基),該坐標系可以用原點 和這組基 唯一確定。在該坐標系下,矢量 對應的坐標由三個實數 表示,為與矢量區分記作 .
所以連接矢量與坐標的橋樑就是坐標系(或者說是一組基),然而坐標系的選取是不唯一的,所以與矢量對應的坐標也是不唯一的,同一個矢量在不同坐標系 、 下對應不同的坐標 、 。雖然坐標系不同,坐標就會不同,但它們表示的都是同一個矢量,所以不同坐標之間是有一定關係的,也就是說可以找到 、 等表達同一矢量的不同坐標之間的關係,而旋轉矩陣 就能完成這一任務: 。
註:1)由於題主是看過《機器人學導論》的,這裡就沿用該書中上下角標等符號規則;
2)由於問題是旋轉矩陣,故不討論不同坐標系坐標原點不重合的情況,只討論如下圖所示的坐標原點重合的兩個坐標系之間的姿態關係。
2.旋轉矩陣
當只討論坐標系姿態不同時,坐標與坐標系的一組基的線性組合就是矢量:
顯然,相對於A坐標系的旋轉變換矩陣其實就是B坐標系的一組基在A坐標系基上的投影,因此可以記作 , 表示B坐標系的 軸在A坐標系中的坐標。具體的例子就不舉了,你可以假設B坐標系相對於A坐標系的z軸旋轉了90°,畫張圖結合上式驗證一下。
3.多說幾句
旋轉矩陣有九個元素,但這九個元素不是線性獨立的。所以描述三維空間中的兩個笛卡爾坐標系之間的姿態關係,除了旋轉矩陣 ,還有別的方法。
1)一個旋轉軸+一個角度。繞A坐標系中的旋轉軸 旋轉 就能得到B坐標系。與旋轉矩陣之間的關係可以應用Rodrigues公式:
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)
※八大類型行列式及其解法
※高等代數筆記整理(三)
※導言&目錄