ELBE
電話:021-58780503 微信:18017854633 郵箱:sales_fullyear@126.com 地址:上海市浦東新區城南路168弄3號峰匯商務廣場B座911室上海富業通貿易有限公司 創立于2003年,我們在迅速擴展業務的同時,亦致力于提高顧客的得益。我們了解客戶的需要,并以優秀人才為他們提供高科技產品。
繼往開來,我們會不斷將優質,價格合理的自動化元件帶給廣大客戶,各區同事都朝氣蓬勃,積極進取,以“做到最好—誠信為本,以義制利”的理念作為達到成功目標。我們對中國及海外地區業務的發展增長充滿信心,同時我們相信憑著各區同事的努力,在可見將來將成為“優秀團隊”。 我們深信,成功全賴您們的支持!
萬向節目錄
1.歐拉角2.萬向節鎖-2.1 什么是Gimbal ----2.2 Pitch、Yaw、Roll----2.3 萬向節死鎖--------2.3.1 橫滾--------2.3.2 俯仰--------2.3.3 偏航--------2.3.4 死鎖的產生--------2.3.5 重現萬向節鎖問題(不看)-2.3.6 若2.3.不懂就看這個(不看)3 總結
與其他形式相比,四元數的優勢大致如下:
解決萬向節死鎖只需4個浮點,比矩陣更輕,無論求逆、串聯等操作,都比矩陣更高效
本文簡要分析了萬向節死鎖的原因。
1、歐拉角
歐拉角用來表示剛體的當前姿勢。
思想:將剛體繞某一軸旋轉,分解為依次繞X、Y、Z軸的三次旋轉。這三個軸的旋轉角度是一組三個歐拉角。
圖為上述三次旋轉(實際上可以繞一個軸,一次旋轉可以達到最終位置)
具體旋轉過程的例子如圖所示:
圖中有兩組坐標系,我們定義為:
:世界坐標系(固定不動) :剛體坐標系(與剛體同步運動)
具體旋轉步驟如下:
1.繞世界系 軸,旋轉 二、繞剛系統 軸,旋轉 角。3.繞剛系統 軸,旋轉 角。
下面是一個直觀的動圖展示( 對應 , 對應 , 對應 )。圖片來源gfycat。
以上旋轉步驟 按順序標記 ,角度是一個完整的歐拉角:
———下面是休息線的第二部分,萬向節鎖(Gimbal Lock)
萬向節死鎖發生在歐拉角形式下,是由歐拉旋轉定義本身造成的。
參考:萬向節死鎖(Gimbal Lock)問題。
2.1 什么是Gimbal
平衡環架(英語:Gimbal),它是一種具有樞紐的裝置,可以使物體以單軸旋轉。由垂直樞紐軸組成的一組三個平衡環框架可以保持最內部環框架的物體的旋轉軸不變,并應用于陀螺儀、羅盤、飲料杯框架,不受波浪振動和船體轉向的影響。-百度百科全書
如圖:
靜態圖:
上圖就是一Gimbal該裝置是陀螺儀。中間有一個垂直軸,穿過一個金屬圓盤。金屬圓盤稱為轉子,垂直軸稱為旋轉軸。轉子由金屬制成,以提高質量和慣性。垂直軸的外側是三個嵌套環,它們相互交叉,帶來三個方向的自由旋轉。
叫陀螺儀。
2.2 Pitch、Yaw、Roll
陀螺儀分別繞X、Y、Z旋轉三個軸時的旋轉角。直接等同于歐拉角。如圖所示:
繞機身右方 軸旋轉,稱為pitch,俯仰。繞機頭上方 軸旋轉,稱為Yaw,偏航。繞機頭前方 軸旋轉,稱為Roll,橫滾。
可見與歐拉角形式基本相同。
2.3 萬向節死鎖
陀螺儀是用來測量平衡和速度的工具。當載體高速旋轉時,陀螺儀應始終通過自我調節保持轉子原有的平衡。
為了幫助理解,以下是一個簡單的陀螺儀示意圖(省略金屬圓盤)。
把三個Gimbal用不同的顏色標記,底部有三個軸向,RGB分別對應XYZ。假設陀螺儀現在被放在船上,船頭的方向沿著 Z軸,即右前方。
2.3.1 橫滾
現在假設船體在前面搖晃,也就是橫向滾動。由于轉子和旋轉軸的慣性較大,只要不直接施加扭矩,就會保持原來的姿勢。由于上圖中的綠色活動連接器可以靈活旋轉,因此會發生相對旋轉,導致以下情況:
2.3.2 俯仰
再假設船體發生了pitch搖晃,也就是俯仰。同樣,轉子和旋轉軸將保持平衡,因為有相應方向的相對旋轉接頭(紅色接頭),如下圖所示:
2.3.3 偏航
最后,假設船體發生了yaw搖晃,即偏航,此時船體水平旋轉。藍色連接器發生相對旋轉。如下圖所示:
最后,發生在船體上Pitch、Yaw、Roll陀螺儀可以通過自身的調節來平衡轉子和旋轉軸。
2.3.4 死鎖的產生
上述陀螺儀一切正常,在船體任何方向搖晃都可以通過自身調節來處理。
若船體發生劇烈變化,此時船首抬起(抬頭)90度,此時陀螺儀調整狀態如下圖所示:
此時,船體再次轉動,沿著當前世界坐標 Z軸(藍軸,應該指向船底)旋轉,看看發生了什么。
現在,轉子不平衡,陀螺儀的三板斧不起作用。它失去了自己的調節能力。那為什么呢? 陀螺儀之所以能通過自身調節保持平衡,是因為有一個可以相對旋轉的連接器。在這種情況下,沒有相對旋轉的連接器。 連接器呢?去了哪里?顯然,它還在那里,但連接器可以旋轉的相對方向不是現在需要的 Z軸方向。從上圖中,我們可以清楚地看到:
紅色連接器:可以給予相對俯仰的自由。綠色連接器:可以給予相對偏航的自由。藍色連接器:可以給予相對偏航的自由。
是的,三個連接器提供的自由度只對應于俯仰和偏航,桶滾自由度丟失。這是陀螺儀上的萬向鎖問題。
2.3.5 用小程序重現萬向節鎖問題(不看)
首先,預設下一個歐拉角變化順序。見下圖:
在上圖中,紅色框中的部分列表記錄了下一個歐拉角的增長和變化過程。也就是說,它將從(0、0、0)變為(90、0、0)、(90、90、0)、(90、180、0)、(90、180、90)、90、180、180)。下圖是變化的過程演示。
現在可以看到: - X軸首先旋轉90度,此時執行Pitch(俯仰)變化。 - 然后在Y軸上變化0-180度,此時執行相對自身的Roll(桶滾)變化。 - 然后Z軸變化0-180度,此時仍在執行相對本身Roll(桶滾)變化。
這里提到的俯仰、桶滾、偏航都是相對于自己的局部坐標系。這和上述陀螺儀中的問題是一樣的,萬向鎖。也就是說,盡管歐拉角在那里XYZ三行三個軸向(持續增長或減少),但影響最終結果的只對應兩個軸向。
2.3.6 若“2.3.5不懂,看下面這個(不看)
我們不考慮Y軸和Z軸,假設它總是0。先說X軸,然后在X軸周圍移動,最終的影響是預期的俯仰變化。如下圖所示:
然而,當Z軸為90度時,X軸周圍的進動變為偏航,如下圖所示:
也就是說,歐拉角的X軸進動導致最終的變化結果,受到預執行的Z軸進動的影響,仍然會導致相對自身的軸向變化,但結果不是唯一的;同樣,歐拉角的Y軸進動也受到Z軸和X軸的影響,結果更加獨特。
然而,上述過程嚴格遵守歐拉角的順序和軸向定義。在某些時候,這種不確定性可能會導致軸向自由度的喪失。 以下圖為例:
首先執行歐拉角Z軸的進動,導致桶滾,沒問題。 根據定義,歐拉角Y軸的執行,導致Y軸沿歐拉旋轉,這也是根據定義執行的。然而,這種沿Y軸旋轉也反映了物體的桶滾動變化。
3 總結
綜上所述,歐拉角的萬向節鎖問題是由歐拉旋轉定義本身造成的。這種固定軸在選擇旋轉前固定Z、再X、Y的旋轉操作并不一定是一對一的映射,而不是預期的三個軸可以旋轉。在某些情況下,它是多對一的映射,導致一些缺乏旋轉自由,即死鎖。
在編程中很難避免死鎖,所以現在更多的四元表示和旋轉。
解決四元數姿態的文章,幾天后開始更新。