matlab 角度轉四元數 尤拉角和四元數

2021-10-14 08:37:45 字數 3031 閱讀 6005

用一句話說,尤拉角就是物體繞座標系三個座標軸(x,y,z軸)的旋轉角度。

尤拉角將方位(角位移)分解為繞三個互相垂直軸的旋轉。任意三個軸和任意順序都可以,但最有意義的是使用笛卡爾座標系並按一定順序所組成的旋轉序列。

最常用的約定是所謂的」heading-pitch-bank」約定。它的基本思想是讓物體開始於」標準」方位–就是物體座標軸和慣性座標軸對齊。在標準方位上,讓物體作heading、pitch、bank旋轉,最後物體到達我們想要描述的方位。

heading-pitch-bank,分別物體表示繞y軸x軸和z軸的旋轉。

慣性座標軸,慣性參照系(inertial frame of reference) 牛頓運動定律在其中有效的參考係,又稱慣性座標系,簡稱慣性系。這個定義我並不能看懂。關於更通俗的一種說法是這樣的。

為了簡化世界座標系到物體座標系的轉換,人們引入了一種新的座標系,稱作慣性座標系.意思是在世界座標系到物體座標系的」半途」.

慣性座標系的原點與物體座標系的原點重合,但是慣性座標系的軸平行於世界座標系的軸.

為什麼引入慣性座標系?因為從物體座標系轉換到慣性座標系只需要旋轉,從慣性座標系到世界座標系只需要平移.分開考慮這兩件事比糅合在一起容易的多。

尤拉角可分為兩種情況:

1,靜態:即繞世界座標系三個軸的旋轉,由於物體旋轉過程中座標軸保持靜止,所以稱為靜態。

2,動態:即繞物體座標系三個軸的旋轉,由於物體旋轉過程中座標軸隨著物體做相同的轉動,所以稱為動態。

對於分別繞三個座標軸旋轉的情況,下述定理成立:

物體的任何一種旋轉都可分解為分別繞三個軸的旋轉,但分解方式不唯一。如:

假設繞y軸旋轉為heading,繞x軸旋轉為pitch,繞z軸旋轉為bank,則先heading45°再pitch90°等價於先pitch90°再bank45°。

對於動態尤拉角,即繞物體座標系旋轉。(靜態不存在萬向鎖的問題)無論heading和bank為多少度, 

只要pitch為±90°(即繞第二個軸的旋轉),就會出現萬向鎖現象。

為了對這一現象有乙個感性的認識,請拿起自己的手機(沒有?不會吧)和一支筆(用作旋轉軸), 

親手做如下的幾個旋轉。 

首先確定手機的物體座標系朝向,為了方便記憶,我們假設z軸與手機螢幕垂直(手機平放於桌面)指向上方, 

手機較短的一條邊為x軸,較長的一條邊為y軸(方向由手機尾部指向頭部),物體座標系的原點是手機左下角的頂點。(注意旋轉順序為zyx) 

繞z軸旋轉任意角度(注意x和y軸也跟著一起旋轉),再繞y軸旋轉90°,再繞x軸旋轉任意角度。通過多次嘗試, 

你會發現乙個共同點:z軸永遠是水平的,通俗的說,手機永遠也不會立起來!本來我們以為手機會指向任何方向,但實際上手機好像是被鎖在桌面上,只能指向水平的某個方向,這個現象就稱為萬向鎖。 

而如果繞y軸旋轉不等於90°(1°也好89°也好),只要選擇適當的繞x和z的角度,就可以讓手機指向三維空間中的任何乙個方向,手機是自由的,也就不會遇到萬向鎖現象。

萬向鎖的避免問題:限制旋轉的角度範圍 

heading-pitch-bank 

heading 繞y軸 限制範圍在±180° 

pitch 繞x軸 限制範圍在±90° 

bank 繞z軸

在計算機圖形學中,四元數用於物體的旋轉,是一種較為複雜,但是效率較高的旋轉方式。在三種座標變換:旋轉,平移,縮放當中,旋轉應該算是比較複雜的存在。平常我們接觸的比較多的是矩陣變換和尤拉變換。 

對於乙個物體的旋轉,其實我們只需要知道四個值:乙個旋轉的向量 + 乙個旋轉的角度。而四元數也正是這樣的設計:

其中x,y,z 代表的是向量的三維座標,w代表的是角度;同時我們也可以寫成以下的形式方便我們計算和分析: 

其實,四元數本質上是乙個超複數,q = xi + yj + zk + w , i^2 = j^ 2 = k^2 = -1; 

現在我們對四元數的概念應該有了一定的了解了,那麼四元數是怎樣體現在旋轉上面呢?

現在我們先來看乙個簡單的例子:乙個向量(1,1,0)繞z軸(0,0,1)旋轉90度,得到的旋轉後的向量是多少?相信很多同學一看就知道答案:(-1,1,0)。 

那我們用四元數來做應該怎麼做呢?(注:繞某軸旋轉是指面對某軸然後順時針旋轉)

這裡簡單的說一下利用四元數來做旋轉的方式: 

現在我們有乙個向量:v1,要讓它繞 v2 旋轉 θ 度,我們先把這個向量寫成乙個四元數:p = (v1, 0); 那麼旋轉的四元數則是:q = ( v2 * sin(θ/2) , cos(θ/2) ) ;旋轉後的四元數為(得到的四元數實部為0,虛部為新的座標): 

相乘:四元數的共軛:

取模:取逆:

在使用四元數旋轉之前要注意: 

1、用於旋轉的四元數必須是單位四元數(即模為1) 

2、實際參與旋轉的四元數有兩個:p 和 p的逆

嘗試訓練:把點p(1, 0, 1)繞旋轉軸u = (0, 1, 0)旋轉90°,求旋轉後的頂點座標。首先將p擴充到四元數,即p = (p, 0)。而q = (u*sin45°, cos45°)。求p′=qpq−1的值。建議大家一定要在紙上計算一邊,這樣才能加深印象。最後的結果p` = ((1, 0, -1), 0),即旋轉後的頂點位置是(1, 0, -1)。

// 四元數轉尤拉角// q0 q1 q2 q3// x,y,z 代表的是向量的三維座標,w代表的是角度void quaternion_2_euler(float quat[4], float angle[3])

// 尤拉角轉四元數// q0 q1 q2 q3// w x y zvoid euler_2_quaternion(float angle[3], float quat[4])
資源收集與網路,侵權聯刪

長按 掃一掃

關注我工控碼農zero

尤拉角與四元數

尤拉角是表達旋轉的最簡單的一種方式,形式上它是乙個三維向量,其值分別代表物體繞座標系三個軸 x,y,z軸 的旋轉角度。第一張 pitch,航空領域表示飛機的俯仰角。繞x軸轉動結果 第二張 yaw,表示飛機的偏航角,繞y軸轉動結果 第三張 roll,表示飛機的翻滾角,繞z軸轉動結果。四元數是由愛爾蘭數...

四元數和尤拉角

1.尤拉角 我們這裡談論尤拉角只討論在笛卡爾座標系下,不考慮飛機座標系 我不確定正規是不是叫這個名字 那種。也就是右手定則確定的笛卡爾座標系。可以把x和y放在水平面,z軸朝上,這樣想象一下。然後,很顯然存在三種旋轉方式,也就是分別繞x,繞y和繞z旋轉。我們分別把三種旋轉稱為roll 繞x軸旋轉 pi...

四元數與尤拉角

尤拉角與四元數都被用來處理影象學中的旋轉。兩者各有優劣,下面我們對它們做詳細的比較。尤拉角是表示朝向的最簡單最直觀方法,只需儲存繞 x y z 軸旋轉的角度,非常容易理解。你可以用vec3來儲存乙個尤拉角 vec3 eulerangles rotationaroundxinradians,rotat...