一文梳理旋轉矩陣,歐拉角,四元數,旋轉向量和齊次變換矩陣之間的聯系和用途


前言

這幾個名詞都是用來描述一個物體的位置和姿態的。它們之間可以相互轉化,而且各有各的優點與缺點。我先把這幾個名詞之間的聯系理清楚,然后再解釋他們各自適合的領域以及為何需要他們。旋轉矩陣的初衷就是人們希望給定一個向量x,然后我對它旋轉,能直接通過矩陣乘法的形式得到旋轉后的向量坐標。也就是說y=Ax。這個方便計算機計算,因此旋轉矩陣常用於編程。旋轉矩陣是一個正交矩陣( A T = A 1 A^T=A^{-1} )而且行列式是1。既然有了旋轉矩陣那么為何還要歐拉角呢?這是因為我給你一個旋轉矩陣,人看不懂它到底轉了多少角度啊。計算機很容易算出來,但是對人來說非常困難。比如飛機駕駛員你讓他以旋轉矩陣的形式給飛機下指令,那人家不得瘋了。而歐拉角那就非常直觀,歐拉角就是我飛機頭抬頭多少(俯仰角pitch),向左拐還是向右拐(偏航角yaw),以及滾筒動作的角度(滾轉角roll)。因此歐拉角一般是方便用戶操作,或者程序員檢查運算結果是否正確。然后有了歐拉角為何還要四元數呢?因為歐拉角有問題,即萬向鎖問題可以看這個解釋萬向鎖視頻。歐拉角的意思是說旋轉可以分解為繞機身,機翼,垂直機身三個軸旋轉。注意了是依次旋轉,每次旋轉后的旋轉軸姿態已經變化。看下圖,比如你先繞機翼那個軸轉90度,然后你會發現原先(第一幅圖)的滾轉角(即繞原先的機身轉)與現在的偏航角(繞垂直機身的那個軸)重合了。也就是說滾轉這個方向等與偏航了,兩個自由度合並成一個了。這樣一個麻煩就是如果一個給定旋轉矩陣可能會計算出多個歐拉角。於是乎,數學家就用四元數來代替歐拉角。
在這里插入圖片描述
在這里插入圖片描述
旋轉向量其實和歐拉角類似也會存在萬向鎖的,任何只用三個變量來描述姿態的方法都會產生萬向鎖。旋轉向量就是方向與旋轉軸相同,模為旋轉角度的一個向量。之所以會用旋轉向量是因為旋轉矩陣用9個元素來描述三維的旋轉,太浪費了。所以想用三個元素的向量來描述三維運動,這個向量就是旋轉向量。齊次變換矩陣就是既包含旋轉又包含平移的變換矩陣(它是4x4),旋轉矩陣只包含旋轉(它是3x3),齊次變換矩陣的左上角是旋轉矩陣,右側那列是平移量

這幾個名詞是可以相互轉換的。我就不講公式,我只講轉換的方法。

旋轉矩陣變換到歐拉角、旋轉向量

旋轉矩陣它本質是把極坐標寫成矩陣的形式,它可以計算出旋轉的角度然后將角度分解得到歐拉角。旋轉矩陣也可以轉換到旋轉向量,旋轉向量的方向是旋轉矩陣特征值為1的那個特征向量。為什么呢?因為旋轉向量的方向是旋轉軸重合也就是說這個向量繞旋轉軸怎么旋轉都不變,即 R n = n Rn=n ,而這剛好是特征值為1時候的表達式。前面提到了旋轉的角度是旋轉向量的模。然后旋轉的角度是根據rodrigues公式兩邊求trace(對角線元素求和)可以算出旋轉的角度。

旋轉向量變換到旋轉矩陣、四元數

旋轉向量變換到旋轉矩陣是利用rodrigues公式.而變換到四元數是直接可以等價變換。接下來講講旋轉向量怎么變換到四元數。
假設旋轉向量的方向向量是 [ n x , n y , n z ] [n_x,n_y,n_z] ,它的模是 θ \theta ,那么變換到的四元數為 [ c o s θ 2 , n x s i n θ 2 , n y s i n θ 2 , n z s i n θ 2 ] [cos\frac \theta 2,n_x sin \frac \theta 2, n_y sin \frac \theta 2,n_z sin \frac \theta 2] 。同樣四元數也很容易可以變換到旋轉向量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM