本文總結了包括旋轉矩陣、旋轉向量、歐拉角、四元數在內的四種旋轉方式及他們之間的轉換關係。
參考資料:
http://mathworld.wolfram.com/RodriguesRotationFormula.html
http://blog.csdn.net/scudz/article/details/8284666
http://www.cnblogs.com/wqj1212/archive/2010/11/21/1883033.html
目錄:
0、基本概念準備
一、旋轉矩陣
二、旋轉向量
三、歐拉角
四、四元數
五、相互關係
5.1 旋轉向量與旋轉矩陣
5.2 旋轉矩陣與歐拉角
5.3 四元數與旋轉矩陣
5.4 四元數與歐拉角
0、基本概念準備
(若對以下概念很清楚此部分可跳過)
笛卡爾座標系:我們中學時就學過的平面直角座標系又被稱爲笛卡爾直角座標系。
歐拉角:用來確定定點轉動剛體位置的一組獨立的角參量,用三個角度表示。
旋轉變換:歐式空間中,對剛體元素繞固定點或固定軸進行旋轉,以獲得變換後元素位置座標。
旋轉矩陣:矩陣左乘某元素,可實現對其進行旋轉變換的操作。具有正交特性。
旋轉向量:描述旋轉變換的另一種方式,有些地方又叫旋轉的軸角表示法,即向量的模值爲旋轉角弧度值,單位化後向量爲選擇軸。
四元數:同樣用作旋轉變換的一種表示。旋轉軸與旋轉角分開寫出。
另外,滾轉角,俯仰角,航向角(roll, pitch, yaw)這三個慣性導航中經常出現的姿態角,可以與我們這裏的歐拉角統一起來看。Roll爲圍繞x軸旋轉,pitch爲圍繞y軸旋轉,yaw爲圍繞z軸旋轉。
需要注意的是我們這裏討論的所有座標系均爲右手座標系。
一、旋轉矩陣
在視覺幾何中,旋轉矩陣是很重要的一個數學工具,此矩陣左乘某元素,可實現對其進行旋轉的操作。 根據羅德里格旋轉公式,過原點的旋轉軸[x,y,z]旋轉θ角的旋轉矩陣爲:
二維情況下簡單的推導如下: (圖片來自百度百科)
此時旋轉變換矩陣爲:
其中旋轉中心爲原點,逆時針旋轉角 θ 。
寫成齊次形式就是:
上圖的變換表示爲:R * X = X',齊次形式中,R(1,3) 和 R(2,3) 可表示旋轉中心。
若已知變換前後的點座標,想反解出 R,默認旋轉中心在原點時,由於二維情況下的 R 只有一個自由度,已知一對 X 和 X’ 即可求解出 R;否則,R(1,3) 和 R(2,3) 要看作變量,需要增加兩個自由度,共需要兩對點。
三維情況下,剛體繞三個座標軸旋轉的旋轉矩陣分別爲(非齊次):
最終,一次旋轉的結果爲,將這三個矩陣按照轉動順序,依次左乘。三維情況下旋轉矩陣共有三個自由度,求解需要三對對應點。
如果一次變換過程中不僅考慮旋轉,還考慮平移,那麼同二維情況,拿出齊次矩陣,加入三維座標平移量即可。
另外,旋轉矩陣具有正交特性,即 。
二、旋轉向量
旋轉向量有時又叫旋轉的軸角表示,顧名思義就是用繞某軸旋轉某角度的方式表示旋轉。旋轉向量的模爲物體旋轉的歐拉角(弧度),旋轉軸爲將旋轉向量單位化後的單位向量。
設旋轉向量爲 ,則旋轉角爲 ,旋轉軸爲 。
這裏旋轉的方向定義爲,延旋轉軸向原點看,選轉方向是逆時針則爲正,順時針則爲負。
旋轉向量與旋轉矩陣可以通過羅德里格斯(Rodrigues)變換進行轉換:
設旋轉向量爲 ,則旋轉角爲 ,於是可將向量單位化 ,最終旋轉向量到旋轉矩陣的變換公式爲:
反變換公式爲:
5.2 旋轉矩陣與歐拉角
歐拉角到旋轉矩陣變換公式上文已給出,反變換請看下文四元數部分。
5.3 四元數與旋轉矩陣
設旋轉矩陣爲:
則由旋轉矩陣到四元數q的變換公式爲:
不過存在一些特殊情況,此時w等於或接近0,這時候對求解方式做調整:
若r11最大,則:
若r22最大,則:
若r33最大,則:
由四元輸到旋轉矩陣的變換公式,只需要將四元數表示法帶入旋轉矩陣公式即可:
5.4 四元數與歐拉角
使用四元數可以有效的解決因歐拉角旋轉順序的制約關係而有可能出現的不合理旋轉現象(萬向鎖)。
歐拉角轉換爲四元數:剛體按照Z-Y-X順序依次旋轉的歐拉角分別爲ψ-θ-φ,則轉換公式爲:
若座標軸,即旋轉順序發生變換,則直接交換向量各行的值即可。
四元數轉爲歐拉角:
其中函數atan2(x,y)的作用是,當x的絕對值比y的絕對值大時使用atan(y/x),反之使用 atan(x/y)。
====================================
如有錯誤,歡迎指正;如果哪裏寫的不清楚,歡迎留言