《視覺slam十四講》之第3講-三維剛體運動
第三講:三維空間剛體運動
旋轉的幾種表達方式
向量
- 關於向量:
注:其中e1,e2,e3為線性空間下的一組基。
- 向量的內積:
注:向量的內積表示向量間的投影關係。
- 向量的外積
注:可以使用外積表示向量的旋轉。
注:^ 記成一個反對稱符號。
旋轉矩陣
假設某個單位正交基(e1; e2; e3) ,經過一次歐式變換,變成了(e′ 1; e′ 2; e′ 3),對於同一個向量 a (注意該向量並沒有隨著座標系的旋轉而發生運動),它在兩個座標系下的座標為 [a1; a2; a3]T 和 [a′ 1; a′ 2; a′ 3]T:
整理可得:
注:旋轉矩陣R是一個行列式為 1 的正交矩陣。反之,行列式為 1 的正交矩陣也是一個旋轉矩陣。
- 特殊正交群
注:SO(n) 是特殊正交群( Special Orthogonal Group)的意思。
注:RT 刻畫了一個相反的旋轉。
變換矩陣和齊次座標
- 特殊歐式群
注:變換矩陣T的逆表示反向的變換
旋轉向量
- SO(3) 的旋轉矩陣有九個量,但一次旋轉只有三個自由度。因此這種表達方式是冗餘的。
- 旋轉矩陣自身帶有約束:它必須是個正交矩陣,且行列式為 1。這些約束會使得優化求解變得更困難。
任意旋轉都可以用一個旋轉軸和一個旋轉角來刻畫。假設有一個旋轉軸為 n,角度為 θ 的旋轉,顯然,它對應的旋轉向量為 θn。由羅德里格斯公式可知:
- 旋轉向量->旋轉矩陣
- 旋轉矩陣->旋轉向量
注:轉軸 n 是矩陣 R 特徵值 1 對應的特徵向量。
尤拉角
尤拉角則提供了一種非常直觀的方式來描述旋轉——它使用了三個分離的轉角,把一個旋轉分解成三次繞不同軸的旋轉。
假設一個剛體的前方(朝向我們的方向)為X 軸,右側為 Y 軸,上方為 Z 軸,見圖 3-3。那麼, ZY X 轉角相當於把任意旋轉分解成以下三個軸上的轉角:
- 繞物體的 Z 軸旋轉,得到偏航角 yaw;
- 繞旋轉之後的 Y 軸旋轉,得到俯仰角 pitch;
- 繞旋轉之後的 X 軸旋轉,得到滾轉角 roll。
注:尤拉角的一個重大缺點是會碰到著名的萬向鎖問題( Gimbal Lock)
四元數
四元數是 Hamilton 找到的一種擴充套件的複數. 它既是緊湊的,也沒有奇異性。
一個四元數 q 擁有一個實部和三個虛部。
人們也用一個標量和一個向量來表達四元數:
注:我們能用單位四元數表示三維空間中任意一個旋轉
四元數與旋轉向量的對應關係
- 旋轉向量->四元數
- 四元數->旋轉向量
注:在四元數中, 任意的旋轉都可以由兩個互為相反數的四元數表示。
四元數的運算
1. 加法和減法
2. 乘法
3. 共軛
4. 模長
5. 逆
6. 數乘與點乘
用四元數表示旋轉
注:p′表示為三維點 p經過四元數 q 旋轉後的三維點。
四元數與旋轉矩陣的關係
- 四元數->旋轉矩陣
- 旋轉矩陣->四元數
關於其他幾種變換
相似變換
相似變換比歐氏變換多了一個自由度,它允許物體進行均勻的縮放,其矩陣表示為:
仿射變換
與歐氏變換不同的是,仿射變換隻要求 A 是一個可逆矩陣,而不必是正交矩陣。仿射變換也叫正交投影。經過仿射變換之後,立方體就不再是方的了,但是各個面仍然是平行四邊形:
射影變換
射影變換是最一般的變換,它左上角為可逆矩陣 A,右上為平移 t,左下縮放 aT。2D 的射影變換一共有 8 個自由度, 3D 則共有 15 個自由度。
從真實世界到相機照片的變換可以看成一個射影變換。