三維空間由3個軸組成,所以一個空間點的位置可以由3個坐標指定。但考慮剛體時,它不僅有位置,還有自身的姿態。借助數學語言,我們可以更好地來描述它。
3.1.1 點和向量,坐標系
點和向量
向量:線性空間中的一個元素,可以把它想象成從原點指向某處的一個箭頭。
注意:不要混淆向量和坐標兩個概念,只有在指定這個三維空間中的某個坐標系時,才可以談論該向量在此坐標下的坐標。
如果確定了一個坐標系,也就是一個線性空間的基(e1,e2,e3),那么就可以談論向量a在這組基下的坐標。
坐標的具體取值,一是和向量本身有關,二是和坐標系的選取有關。
對於a和b∈R3,內積可以寫成:
內積可以描述向量間的投影關系。
外積:
外積的方向垂直於這兩個向量,大小為,是兩個向量張成的四邊形的有向面積。
外積只對三維向量存在定義,我們還能用外積表示向量的旋轉。
坐標間的歐氏變換
與向量間的旋轉類似,同樣可以描述兩個坐標間的旋轉關系,再加上平移,統稱為坐標系間的變換關系。
舉例:
在機器人的運動過程中,常見的做法是設定一個慣性坐標(或者叫世界坐標系),可認為它是固定不動的,如下圖定義的坐標系。同時,相機或機器人則是一個移動坐標系。
相機視野中某個向量p,它的坐標為Pc,在世界坐標系下看,它的坐標是Pw。這兩者轉換:先得到該點針對機器人坐標系的坐標值,再根據機器人位姿轉換到世界坐標系中,這個轉換關系由一個矩陣T來描述。
相機運動是一個剛體運動,它保證了同一個向量在各個坐標系下的長度和夾角都不會發生變化。這種變換稱為歐氏變換。
歐氏變換由一個旋轉和一個平移兩部分組成。
首先,考慮旋轉。
設某個單位正交基(e1,e2,e3)經過一次旋轉變成了。那么,對於同一個向量a(注意:該向量並沒有隨着坐標系的旋轉而發生運動),它在兩個坐標系下的坐標為
。根據坐標的定義,有:
,
為了描述兩個坐標之間的關系,等式兩邊同時左乘,得:
R由兩組基之間得內積組成,刻畫旋轉前后同一個向量得坐標變換關系。矩陣R描述了旋轉本身,因此稱為旋轉矩陣。
旋轉矩陣有一些特別的性質:事實上,它是一個行列式為1的正交矩陣。反之,行列式為1的正交矩陣也是一個旋轉矩陣。因此,旋轉矩陣的集合定義如下:
SO(n)是特殊正交群(Special Orthogonal Group),這個集合由n維空間的旋轉矩陣組成,特別的,SO(3)是三維空間的旋轉。通過這個旋轉可以直接討論兩個坐標系之間的旋轉變換,而
不用再從基談起。換句話說,旋轉矩陣可以描述相機的旋轉。
由於旋轉矩陣是正交矩陣,它的逆(即轉置)描述了一個相反的旋轉,
在歐氏變換中,除了旋轉之外還有平移。考慮世界坐標系中的向量a,經過一次旋轉(用R描述)和一次平移t后,得到了a',把旋轉和平移合到一起,有:
t稱為平移向量。通過上式,用一個旋轉矩陣R和一個平移向量t完整地描述了一個歐氏空間的坐標變換關系。
3.1.3 變換矩陣與齊次坐標
假設進行兩次變換:R1,t1和R2,t2,滿足,
從a 變換到c:
這樣的形式在變換多次后會過於復雜,因此,我們引入齊次坐標和變換矩陣:
這是一個數學技巧:在一個三維向量的末尾添加1,將其變成了四維向量,稱為齊次坐標。
對於這個四維向量,我們可以把旋轉和平移寫在一個矩陣里面,使得整個關系變成線性關系。該式中,T稱為變換矩陣(Transform Matrix)。
關於變換矩陣T,它有比較特別的結構:左上角為旋轉矩陣,右側為平移向量,左下角為0向量,右下角為1。這種矩陣又稱為特殊歐氏群(Special Euclidean Group).
齊次坐標,是射影幾何的概念。通過添加最后一維,我們用4個實數描述了一個三維向量,這顯然多了一個自由度,但允許我們把變換寫成線性的形式。
在齊次坐標中,某個點x的每個分量同乘一個非零常數k后,仍然表示同一個點。因此,一個點的具體坐標值不是唯一的。
但最后一項不為零時,我們總可以除以最后一項,強制最后一項為1,從而得到一個點唯一的坐標表示(也就是轉換為非齊次坐標):