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