有關萬向節死鎖(Gimbal Lock)的問題

2021-05-06 07:03:05 字數 1412 閱讀 8293

什麼是尤拉角(eular angles)?

尤拉角是瑞士數學家萊昂哈德·尤拉(leonhard euler)用來描述剛體在三維空間中取向的方法。簡單來說,就是任何乙個物體的取向,都可以用3個有次序的旋轉角度來表示。

尤拉在三維空間中定義了乙個靜止不動的參考係,即慣性系。還定義了乙個運動的座標系,即物體座標系。慣性系與物體座標系的區別在於,當物體取向發生改變之後,物體座標系也隨之改變,而慣性系卻不變。

例如,我們認為北極星的位置對於地球上的任意觀察點都是不變的,因此可以看作乙個靜止的參考係。而基於公路上一輛行駛的汽車的座標系,因為汽車的轉彎而不斷改變,是乙個物體座標系。

尤拉角的三個旋轉是繞物體座標系的三個軸復合形成。為何不使用慣性系?因為物體座標繫在數學處理上是簡單的。為了描述一架飛機的取向,定義航偏角為yaw, 俯仰為pitch, 橫滾為roll。假如分別使用矩陣i1, i2, i3來表示這三個角度,那麼飛機繞自身先轉yaw角,再繞pitch角,最後繞roll角的結果可用i3*i2*i1來表示。 有關矩陣,看這裡

。通常來說,乙個物體的取向用尤拉角來表示是簡單有效的。但是在某種特殊的情況下,尤拉角將失效,形成所謂的「萬向節死鎖」。

乙個簡單直觀的例子是炮塔模型。假設地面上的乙個炮塔有兩個旋轉軸:y垂直於地面,使炮塔可以平行地面360度旋轉(正北設為0度);x平行於地面,使炮口可以繞著它上下90度旋轉(平行地面使設為0度)。現在,天空中的任意一點就可以使用兩個座標的度數來表示了!

這時,一架敵機從正東面飛來,我們轉動炮塔對準它,目前的座標是(10,90)。因為飛機飛行方向不變,所以y固定為90,而x由於飛機距離的接近而增大。當飛機恰好飛到炮塔頂端時,即x的角度也達到90度時,飛機忽然向南飛行!我們必須立即改變炮塔朝向,否則即將都丟失目標。但是我們發現,無論是轉動x軸還是y軸,我們都無法讓炮塔轉向南方了,即炮塔在此時丟失了乙個自由度!

為什麼不把y轉動到180度的位置繼續跟蹤呢?注意此時炮塔的狀態: 炮口已經對準炮台的正上方, 平行於y軸,無論y軸怎樣轉動,炮口都改變不了朝向的, 即炮台的物體座標系不會變化了。能轉動的只有x軸,但是這樣一來,炮口又回到東面了。

尤拉角的萬向節死鎖就是這樣:我們依次繞物體座標系的x軸、y軸、z軸旋轉,當y軸旋轉了90度之後,z就會指向原來的x軸。這樣一來,我們事實上只繞了x軸和y軸兩個軸旋轉,第三根軸的自由度就丟失了!(值得指出的是,我們在描述的時候使用的是世界座標系的x, y, z軸,但是旋轉的時候卻是使用繞物體的)

萬向鎖的乙個有趣實驗是當先把飛機yaw 45度,再pitch 90度,與先pitch 90度,再roll 45度的結果完全相同。 這個現象也叫尤拉角的別名現象(同乙個慣性系下同乙個值有不同的表示方法),這也是很糟糕的。

正因為尤拉角在三維空間中有死鎖的問題,所以科學家尋找了新的表示空間取向的方法。以後再詳細說明。

參考資料:http://blog.donews.com/wanderpoet/archive/2005/07/04/453608.aspx

萬向節死鎖 萬向節死鎖 gimbal lock

如下圖一,把灰色箭頭想象成是一架飛機,紅,綠藍三個圈看作是三個外圍控制器,外圈帶動所有裡圈運動,裡圈的運動不影響外圈。1,首先,繞y軸旋轉 旋轉綠圈 來確定前進的方向。這時紅圈與藍圈都跟著旋轉。2,然後,繞x軸旋轉 旋轉紅圈 讓飛機仰視或俯視。這時藍圈跟著一起旋轉,綠圈不動。3,最後,繞z軸旋轉 旋...

萬向節死鎖 Gimbal Lock

第一次繞 x轉 角度 第二次繞y轉 xx角度 完後的z軸可能已經和第一次旋轉的x軸重合 第三次繞z轉 角度 重合了 再繞z轉其實相當於第一步的操作 也就是說著步的操作其實是無用的 圖1 物體的初始朝向 現在開始旋轉物體,先繞物體座標系x軸 xl 旋轉30度 這裡我規定沿著軸向軸的負方向看去,順時針旋...

萬向節死鎖 Gimbal Lock

萬向節死鎖 gimbal lock 在學習計算機動畫課程的時候,書中提到固定角和尤拉角朝向表示法有一定的侷限性,它們無法避免gimbal lock現象。在網路上蒐集了很多有關gimbal lock有用的資料,對我很有幫助,在這裡列出乙個索引,以方便其他有需要的朋友檢視 1.維基百科 首先有必要理解一...