各種旋轉方式總結

  本文總結了包括旋轉矩陣、旋轉向量、歐拉角、四元數在內的四種旋轉方式及他們之間的轉換關係。

  參考資料:

    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) 要看作變量,需要增加兩個自由度,共需要兩對點。

    三維情況下,剛體繞三個座標軸旋轉的旋轉矩陣分別爲(非齊次):

    最終,一次旋轉的結果爲,將這三個矩陣按照轉動順序,依次左乘。三維情況下旋轉矩陣共有三個自由度,求解需要三對對應點。

    如果一次變換過程中不僅考慮旋轉,還考慮平移,那麼同二維情況,拿出齊次矩陣,加入三維座標平移量即可。

    另外,旋轉矩陣具有正交特性,即


二、旋轉向量

    旋轉向量有時又叫旋轉的軸角表示,顧名思義就是用繞某軸旋轉某角度的方式表示旋轉。旋轉向量的爲物體旋轉的歐拉角(弧度),旋轉軸爲將旋轉向量單位化後的單位向量

    設旋轉向量爲 ,則旋轉角爲 ,旋轉軸爲

    這裏旋轉的方向定義爲,延旋轉軸向原點看,選轉方向是逆時針則爲正,順時針則爲負。



三、歐拉角

    用來唯一地確定定點轉動剛體位置的三個一組獨立角參量,由章動角θ、旋進角(即進動角)ψ和自轉角j組成,上文已經說過了,與姿態角 roll、pitch、yaw,可統一看成剛體繞座標軸的轉動角度。
    後文會具體介紹與其他表達形式的關係。

四、四元數

    四元數是四維空間中的一個複數:w+xi+yj+zk,其中:
    可將四元數記爲  或 四元數既不是標量,也不是矢量,由一個標量和三個矢量組合而成。
   
    更加清晰的定義形式爲:

    上式表示剛體圍繞某一過原點的旋轉軸旋轉θ角,而旋轉軸爲 ,這裏注意四元數模值爲1。
   
    用四元數表示旋轉,過程如下
    首先,將待旋轉的點 p 表示成四元數的形式(只是寫成這個形式,模不一定滿足爲1這個條件):
    然後,通過四元數叉乘運算計算 p'(即旋轉後的座標位置):
    其中,關鍵的兩步是四元數叉乘和四元數逆變換:
        四元數叉乘公式爲:
 
        四元數的爲:
    最後,根據公式求解即可。

五、相互關係

  5.1 旋轉向量與旋轉矩陣

    旋轉向量與旋轉矩陣可以通過羅德里格斯(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)。


====================================

如有錯誤,歡迎指正;如果哪裏寫的不清楚,歡迎留言


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章