歐拉角和旋轉變換:易混淆概念區分&MATLAB計算

關於用歐拉角表示的座標系姿態旋轉變換,大多數教科書和博客上的講解不甚明晰,自己多方研究分析後,根據自己的理解做如下記錄,一方面幫助自己加深鞏固,另一方面歡迎各位方家指正。

1. 概念定義

在這裏插入圖片描述
在這裏插入圖片描述
繞座標系單軸旋轉的矩陣:
在這裏插入圖片描述

2 描述座標系旋轉變換的兩種形式:

在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

內在旋轉與外在旋轉的轉換關係:互換第一次和第三次旋轉的位置則兩者結果相同。例如Z-Y-X旋轉和內部旋轉和X-Y-Z旋轉的外部旋轉的旋轉矩陣相同。詳見文章的 “6. 附錄:兩種旋轉標準對應的24種旋轉矩陣” 部分。

關於內旋和外旋這兩個概念,只不過是對於兩種旋轉方式的歐拉角的簡稱。

多數教科書中少有提及“內旋”和“外旋”這兩個名詞,但是對於相應的兩種情況都會進行詳細介紹,例如本博客中第4點引用的《機器人學導論》(John J. Craig版)中內容所示。這兩種情況都屬於歐拉角的範疇,兩者不同之處是旋轉的參考對象和旋轉順序不同,但是最終變換後的結果是相同的,所謂殊途同歸,可參見本博客第6點【附錄:兩種旋轉標準對應的24種旋轉矩陣】,發現兩種情況下的矩陣乘積結果是相同。

至於以下問題:

默認情況下,即在不指定說明“內旋”或“外旋”情況下,歐拉角的解算屬於其中的一種呢?

答案是:在航空、航海和工業機器人末端姿態描述中,通常默認採用的歐拉角形式是“XYZ固定角座標系”,即“外旋”形式;又稱“RPY角“,分別先後按照X軸偏轉(Yaw)、Y軸俯仰(Pitch)和繞Z軸滾動(Roll),對應的矩陣變換形式爲 Rxyz=R(Z)*R(Y)*R(X)。在實際應用中,選用哪種形式要根據對象的特點(固定工位機器人or 移動機器人or無人機)和計算方便性選擇合適的歐拉角。

內旋和外旋的區分方法是:根據矩陣相乘順序與旋轉順序是否一致,兩者一致的爲內旋,不一致的爲外旋。

3 基於旋轉軸分類的歐拉角:

在這裏插入圖片描述在這裏插入圖片描述

4 文獻引用說明:

以下內容選自《機器人學導論》(John J. Craig版)的第31~34頁。
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

5 常見誤區:

下面內容摘自博客:歐拉角轉旋轉矩陣(Matlab內部函數&公式實現)
在這裏插入圖片描述
該博客作者混淆了歐拉角的兩種不同轉換標準,文章中寫的

“S表示旋轉順序,我習慣上將‘XYZ’定義爲“先旋轉X,再旋轉Y,最後旋轉Z”,所以最後的R=RzRyRx(特別注意這裏!不同的地方表示的含義不一樣,有些工具(比如Matlab)裏面’XYZ’,表示的是“先旋轉Z,再旋轉Y,最後旋轉X”,所以最後的R=RxRyRz)”

這一部分,作者的旋轉命名習慣(R=RzRyRx)是按照【歐拉角外旋】標準中的順序,即每次旋轉的軸是固定座標系中的軸(繞固定座標系旋轉),所以R(XYZ)=RzRyRx;而MATLAB中計算歐拉角和旋轉矩陣選用的是【歐拉角內旋】標準,即每次旋轉圍繞的軸是上次旋轉之後座標系的某個軸(繞動座標系中的軸旋轉),所以R(XYZ)=RxRyRz。

具體可通過MATLAB官方help文檔中的案例來證明其錯誤,具體如下:
在這裏插入圖片描述
MATLAB官方help文檔中計算歐拉角與旋轉矩陣的函數說明:
由歐拉角計算旋轉矩陣:eul2rotm
在這裏插入圖片描述
由旋轉矩陣計算歐拉角:rotm2eul
在這裏插入圖片描述

6. 附錄:兩種旋轉標準對應的24種旋轉矩陣

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

參考文獻:

  1. 歐拉角 圖解釋

  2. [Matlab科學計算] 1.歐拉角和座標變換個人總結

  3. 歐拉角轉旋轉矩陣(Matlab內部函數&公式實現)

  4. JohnJ.Craig. 機器人學導論[M]. 2006.

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