前面曾經討論了幾種不同的旋轉姿態表示法,我們需要將它們與平移變換相結合,創造出一個完整的相對位姿表示方法。兩種最實用的表示方法是:四元數向量對和 齊次變換矩陣。
對於向量-四元數的情況,有
,其中
是坐標系原點相對於參考坐標系的笛卡兒位置,
是坐標系相對於參考坐標系的姿態。其加法定義如下:
取負數為
一個點坐標向量通過下式在坐標系之間變換:
齊次變換矩陣法
另一種辦法是可以使用一個齊次變換矩陣來表示旋轉和轉換。推導方法與二維空間位姿描述描
述的情況類似,但因為增加了
軸,所以進行了擴展:
坐標系原點之間的笛卡兒平移向量是
,姿態的變化由一個
正交子矩陣
表示,其余向量都表示成齊次形式,這樣可以寫成
是一個
階齊次變換。這個矩陣有一個非常特殊的結構,屬於特殊的三維歐幾里得群,記作
。
三維空間的位姿代數和二維空間有相似性,這里略過。
機器人工具箱中的齊次變換
>> T = transl(1, 0, 0) * trotx(pi/2) * transl(0, 1, 0)
T =
1.0000 0 0 1.0000
0 0.0000 -1.0000 0.0000
0 1.0000 0.0000 1.0000
0 0 0 1.0000
函數transl
創建了一個有平移但無旋轉的相對位姿,而函數trotx
則返回一個繞
軸旋轉
的
齊次變換矩陣:旋轉部分與rotx(pi/2)
相同,平移部分為零。我們可以將以
上函數組合對應的坐標系變化描述如下:首先沿着
軸方向前進一個單位長度,然后繞x軸旋轉
,接着再沿新的
軸,也就是原來的
軸前進一個單位長度。所得矩陣的最后一列,表示了沿原坐標系的
軸和
軸各平移一個單位長度的結果。從最終位姿矩陣的姿態部分,則可以看出是繞
軸旋轉的效果。我們可以用如下函數繪制出相應的坐標系:
>> trplot(T)
要提取矩陣T
中的旋轉矩陣部分,可用
>> t2r(T)
ans =
1.0000 0 0
0 0.0000 -1.0000
0 1.0000 0.0000
平移部分是一個向量,可用以下函數獲得:
>> transl(T)
ans =
1.0000
0.0000
1.0000