用一句話說,尤拉角就是物體繞座標系三個座標軸(x,y,z軸)的旋轉角度。
在這裡,座標系可以是世界座標系,也可以是物體座標系,旋轉順序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一種,甚至可以是xyx,xyy,xzz,zxz等等等等。。。。。。
所以說尤拉角多種多樣。尤拉角可分為兩種情況:
1,靜態:即繞世界座標系三個軸的旋轉,由於物體旋轉過程中座標軸保持靜止,所以稱為靜態。
2,動態:即繞物體座標系三個軸的旋轉,由於物體旋轉過程中座標軸隨著物體做相同的轉動,所以稱為動態。
對於分別繞三個座標軸旋轉的情況,下述定理成立:
物體的任何一種旋轉都可分解為分別繞三個軸的旋轉,但分解方式不唯一。如:
假設繞y軸旋轉為heading,繞x軸旋轉為pitch,繞z軸旋轉為bank,則先heading45°再pitch90°等價於先pitch90°再bank45°。
前面曾提到過,heading-pitch-bank系統不是惟一的尤拉角系統,繞任意三個互相垂直軸的任意旋轉序列都能定義乙個方位。所以,多種選擇導致了尤拉角約定的多樣性:
1)heading-pitch-bank系統有兩個名稱,當然,不同的名字並不代表不同的約定,這其實並不重要,一組常用的術語是roll-pitch-yaw,其中的roll對應與bank,yaw對應於heading,它定義了從物體座標系到慣性座標系的旋轉順序
2)任意三個軸都能作為旋轉軸,不一定必須是笛卡爾軸,但是用笛卡爾軸最有意義
3)也可以選用右手座標規則
4)旋轉可以以不同的順序進行
3,優點:1)容易使用;2)表達簡潔;3)任意三個角都是合法的
4,缺點:1)給定方位的表達方式不唯一;2)兩個角度間求插值非常困難
採用限制尤拉角的方法來避免以上問題的出現:heading限制在+-180,pitch為+-90。
以上為尤拉角的定義。旋轉的方法如下:
從尤拉角向量轉換很容易,困難的部分是轉換回來。xna提供了乙個方法可以建立旋轉矩陣,但它並沒有提供轉換回來的方法,因此我們將不得不自己實現。
首先,我們轉換為旋轉矩陣,matrix.createfromyawpitchroll()方法可以做到這一點。如果這裡使用尤拉角,我們需要以以下順序提供座標:
yaw(偏航):尤拉角向量的y軸
pitch(俯仰):尤拉角向量的x軸
roll(翻滾): 尤拉角向量的z軸
想象一下飛機,yaw指水平方向的機頭指向,它繞y軸旋轉。pitch指與水平方向的夾角,繞x軸旋轉。roll指飛機的翻滾,繞z軸旋轉。
除尤拉角以外,常用的還有四元素法和旋轉矩陣法。簡而言之,三種方法的特點如下:
1)尤拉角最直觀、最容易理解、儲存空間少,但是尤拉角存在萬向節死鎖現象、插值速度不均勻等缺點,而且不可以在計算機中直接運算;
2)四元素不存在萬向節死鎖問題、利用球面插值可以獲得均勻的轉速、儲存空間也較少,但是不好理解、不直觀;
飛控 姿態誤差 一 尤拉角做差
在設計控制器之前,有個重要的問題要解決,就是如何計算期望姿態的誤差?因為大部分控制器都需要你告訴我這個誤差,然後才可以去調整,去減小這個誤差直到沒有誤差。求誤差可太簡單了,不就是個減法嗎?看起來很有道理,但是騙騙小孩子可以,騙我和我的讀者朋友們還差一點。我有幾個問題代表大家問一下,首先姿態本質是旋轉...
Dlib姿態估計 旋轉矩陣與尤拉角互轉
在這篇文章中,我將分享將乙個3 3旋轉矩陣轉換成尤拉角的 反之亦然。3d旋轉矩陣可以讓你的頭旋轉。我知道這是乙個壞的雙關語,但真相有時可能是非常小的!乙個旋轉矩陣有三個自由度,數學家已經行使了他們的創造自由,以每個想象的方式來表示3d旋轉 或使用三個數字 或使用四個數字 或使用乙個3 3矩陣。還有很...
三維姿態捕捉 什麼是動作捕捉?
動作捕捉?什麼是動作捕捉?字面意思可以直觀地理解為通過各種技術手段記錄被觀察物件 人或物,或是動物 的動作,並做有效的處理。從專業角度來看,動作捕捉是一項能夠實時地準確測量 記錄運動物體在實際三維空間中的各類運動軌跡和姿態,並在虛擬三維空間中重構這個物體每個時刻運動狀態的高新技術。既然是一項技術,那...