劉鋒 李國平



【摘要】本文首先介紹了歐拉角的定義及其在不同學科的應用,然后分析了歐拉角作為表達剛體姿態方法的優缺點.
【關鍵詞】歐拉角;姿態;偏航角;滾動角;俯仰角
【基金項目】湖南工學院教研教改項目(JY201841)
一、旋轉矩陣
描述剛體在空間中的姿態,我們可以用旋轉矩陣.假設參考坐標系(固定坐標系)為坐標系{A},固連于剛體的坐標系為{B},則剛體相對于參考坐標系的姿態可表示為
ABR=r11 r12 r13r21 r22 r23r31 r32 r33
其中ABR是正交矩陣,構成矩陣的每一列都是一個單位向量,且各列向量是互相正交的.對于右手坐標系,還有BAR=1.可以證明行列式等于1的所有3×3正交矩陣以矩陣乘法作為群運算構成一個群,稱為特殊正交群,記為SO(3),SO(3)的最簡表示需要3個參數.
旋轉矩陣的9個元素,有6個約束,實際上只有3個自由變量.這就表示只需要3個獨立的參數就可描述剛體在空間中的姿態.而且用旋轉矩陣表示剛體的位姿,不直觀,沒有明顯的物理意義.如果機器人操作人員要輸入9個元素的矩陣來控制機器人到達預期的位置,這也是極不方便的事情.
鑒于旋轉矩陣的缺點,我們介紹用含有三個角度參數的廣義坐標來描述剛體位姿.
二、歐拉角的定義
1.歐拉定理
歐拉定理:有一不動點的剛體的一般位移是繞某一軸線的轉動.
若把固連于剛體的坐標系的原點作為不動點,則剛體的位移不會包含坐標系的平移運動,只涉及坐標系的方向(剛體位姿)的變化.旋轉運動有一個特征,就是旋轉軸的方向不受旋轉運動影響.因此,沿旋轉軸方向的任何向量,在初始坐標軸和最終坐標軸上的分量相同,只要能夠證明某個向量在初始坐標系和最終坐標系中坐標相同,就可證明歐拉定理.
歐拉定理實際上也給我們提供了一種表示剛體姿態的方法:等效軸角坐標系法.我們把歐拉定理中的旋轉軸稱為等效軸,繞軸的轉角稱為等效轉角.這樣剛體的任意姿態都可以選擇適當的軸和角得到.物體繞軸旋轉時姿態的變化,可用角位移描述.剛體的定點運動可看作剛體繞連續變化的轉軸的轉動過程,它對應一個角位移序列.所以,歐拉定理也可以表述為角位移序列等價于單個角位移.這樣,角位移序列就可以表示任意旋轉,從而歐拉角就誕生了.
2.歐拉角
歐拉角的基本思想是將角位移分解為繞三個互相垂直軸的三個旋轉組成的序列.三個相互垂直的軸一般選笛卡兒坐標系的三個坐標軸,順序是任意順序.但不能繞連續同一旋轉軸兩次,這個很容易理解.比如,先繞x軸轉α角,再繞x軸轉β角,根據復合旋轉變換可知等價于一次繞x軸旋轉(α+β)角,所以,一般要求不能繞同一軸連續轉兩次.歐拉角的定義方式不是唯一的,根據坐標系繞其軸的旋轉順序不同,存在多種定義方式:首先,繞三個坐標軸中的任意軸轉動,有三種情形;其次,繞除第一次轉軸之外的任意一軸轉動,有兩種情形;最后,繞除第二次轉軸之外的任意一軸轉動,又有兩種情形.因此,總計存在3×2×2=12種定義方式.一般給出歐拉角參數表示坐標系旋轉時,都需要指出歐拉角的定義方式.
這12種不同順序的歐拉角可分為兩類:歐拉式和卡爾丹式,分別以歐拉和卡爾丹的名字命名.歐拉式是可以繞同一軸旋轉兩次,但不是連續的:X-Y-X,X-Z-X,Y-X-Y,Y-Z-Y,Z-X-Z或Z-Y-Z.卡爾丹式的特點是繞三個不同的軸旋轉:X-Y-Z,X-Z-Y,Y-Z-X,Y-X-Z,Z-X-Y,Z-Y-X.要強調的是,這里的坐標軸是指固連于剛體的坐標系的,習慣上稱為動坐標系.
一般來說,歐拉角的順序是任意選擇的,但在特定領域,都有其獨特的約定.在經典力學、天體力學、應用力學、分子物理學和固態物理學中經常采用Z-X-Z順序來設定歐拉角.
首先,我們設參考(全局)坐標系為{G}(O-XYZ),剛體坐標系為{B}(O-xyz).為了找到從坐標系{G}到坐標系{B}的旋轉矩陣,我們首先使用剛體坐標系B′(O-x′y′z′),在第一次旋轉之前,坐標系B′與{G}重合,現在B′繞z′軸旋轉角φ(如圖1),因為這時Z軸和z′軸重合,故B′相對于{G}的姿態為:
GB′R=Rot(Z,φ)=cos φ-sin φ0sin φcos φ0001
圖1
圖2
經典力學中把繞Z軸旋轉的角稱為進動(precession)角,第一次繞Z軸轉動的角φ就是進動角.
其次,考慮以坐標系B′為新的參考坐標系,現在引入坐標系B″(O-x″y″z″).在第二次旋轉前B″和B′重合,現在考慮繞x″軸旋轉θ角(如圖2所示),因為x″軸和x′軸重合,所以B″相對于B′的旋轉矩陣為:
B′B″R=Rot(x′,θ)=1000cos θ-sin θ0sin θcos θ
經典力學中把繞x軸旋轉的角稱為章動(nutation)角,第二次繞x″軸旋轉的角θ就是章動角.
圖3
最后,再考慮以B″作為新的參考坐標系,在第三次旋轉前,{B}(O-xyz)和B″重合.現在{B}坐標系繞z″軸旋轉ψ角(如圖3所示),則{B}相對于B″的姿態為:
B″BR=Rot(z″,ψ)=cos ψ-sin ψ0sin ψcos ψ0001
經典力學中把繞z軸旋轉的角稱為自轉(spin)角,第三次繞z″旋轉的ψ角即為自轉角.
由旋轉矩陣的復合運算,我們可得剛體坐標系相對于參考坐標系的姿態矩陣:
GBR=GB′RB′B″RBB″R=cos φ-sin φ0sin φcos φ00011000cos θ-sin θ0sin θcos θcos ψ-sin ψ0sin ψcos ψ0001?????? =cos φcos ψ-cos θsin φsin ψ -cos φsin ψ-cos θcos ψsin φ sin θsin φcos ψsin φ+cos θcos φsin ψ -sin φsin ψ+cos θcos φcos ψ -cos φsin θ??? sin θsin ψ? ???????sin θcos ψ????? cos θ
根據上面的討論知,這種歐拉角定義方式為Z-X-Z順序.上式給出了用歐拉角表示剛體姿態的矩陣,可以證明此矩陣仍然是正交矩陣,只要證明:GBRGBRT=E.
cos φcos ψ-cos θsin φsin ψ -cos φsin ψ-cos θcos ψsin φ sin θsin φcos ψsin φ+cos θcos φsin ψ -sin φsin ψ+cos θcos φcos ψ -cos φsin θ??? sin θsin ψ???????? sin θcos ψ????? cos θ
仍然是正交矩陣,它和剛體某個姿態對應的旋轉矩陣相等,也就是說,知道Z-X-Z定義的三個歐拉角φ,θ,ψ,就可以寫出對應的旋轉矩陣.現在考慮它的逆問題,也就是知道旋轉矩陣,求出Z-X-Z定義的三個歐拉角.假設旋轉矩陣為:
R=r11 r12 r13r21 r22 r23r31 r32 r33
則有
cos φcos ψ-cos θsin φsin ψ -cos φsin ψ-cos θcos ψsin φ sin θsin φcos ψsin φ+cos θcos φsin ψ -sin φsin ψ+cos θcos φcos ψ -cos φsin θ??? sin θsin ψ???????? sin θcos ψ????? cos θ=r11 r12 r13r21 r22 r23r31 r32 r33.
由兩矩陣相等,對應元素相等,可得
r11=cos φcos ψ-cos θsin φsin ψ, r12=-cos φsin ψ-cos θcos ψsin φr13=sin θsin φ, r21=cos ψsin φ+cos θcos φsin ψr22=-sin φsin ψ+cos θcos φcos ψ, r23=-cos φsin θ,r31=sin θsin ψr32=sin θcos ψ, r33=cos θ
在經典力學中,通常假設
0≤φ≤2π,0≤θ≤π,0≤ψ≤2π.
當sin θ≠0(θ=0或π)時,由r33=cos θ,得θ=arccos r33.由r13=sin θsin φ和
r23=-cos φsin θ,得
φ=-arctanr13r23或φ=π-arctanr13r23.
由r31=sin θsin ψ及r32=sin θcos ψ,得
ψ=arctanr31r32或ψ=π+arctanr31r32.
這樣由r13r23確定的φ的正切值,利用反正切函數求出的φ有兩個,不能確定哪一個是我們需要的φ.同理,求ψ時也會遇到這種情況.為了解決這個問題,我們需要知道sin φ和cos φ的符號.由正弦和余弦符號確定角所在象限的規則如下:
(1)sin φ為正,cos φ為正,φ在第一象限,且φ=arctansin φcos φ;
(2)sin φ為正,cos φ為負,φ在第二象限,且φ=π+arctansin φcos φ;
(3)sin φ為負,cos φ為負,φ在第三象限,且φ=π+arctansin φcos φ;
(4)sin φ為負,cos φ為正,φ在第四象限,且φ=arctansin φcos φ.
在matlab計算軟件中,用雙變量反正切函數atan 2(sin φ,cos φ)來計算arctansin φcos φ,這樣做的好處就在于可以根據sin φ,cos φ的符號來確定φ所在的象限.例如,atan222,22=45°,而atan2-22,-22=-135°,利用單變量反正切函數計算結果一樣,都是45°,不能區分這兩個角.
在這里求歐拉角φ,θ,ψ時,我們也采用雙變量反正切函數.因為已知r33=cos θ,
現在需要求出sin θ,由r312+r322=sin 2θsin 2ψ+sin 2θcos 2ψ=sin 2θ,得sin θ=r312+r322,所以
θ=atan 2r312+r322,r33.
因此,sin φ=r13r312+r322,cos φ=-r23r312+r322,所以
φ=atan 2r13r312+r322,-r23r312+r322.
同樣可得,sin ψ=r31r312+r322,cos ψ=r32r312+r322,所以
ψ=atan 2r31r312+r322,r32r312+r322.
在求sin θ時,之所以取r312+r322的正平方根,是因為要求0≤θ≤π.若θ=0°或180°時,用上邊的公式就不能求出φ和ψ了,這種情況稱為解退化.這時,只能求出φ和ψ的和或差:
當θ=0°時,cos θ=1,由r11=cos φcos ψ-sin φsin ψ=cos (φ+ψ)和
r21=cos ψsin φ+cos φsin ψ=sin (φ+ψ),得φ+ψ=atan 2(r21,r11).
當θ=180°時,cos θ=-1,由r11=cos φcos ψ+sin φsin ψ=cos (φ-ψ)和r21=cos ψsin φ-cos φsin ψ=sin (φ-ψ),得φ-ψ=atan 2(r21,r11).
根據前面的旋轉圖可知,當θ=0°時,Ox′y′坐標平面和OXY坐標平面重合,x′軸的位置不確定,φ和ψ不確定,表明歐拉角在幾何上具有奇點.當θ=180°時,Ox′y′坐標平面和OXY坐標平面也重合,只是y′軸和z′軸的正向與Y軸和Z軸正向相反.
基于Z-X-Z順序歐拉角的特點,經常用來描述章動角θ不變,而進動角速度φ·和自轉角速度ψ·為勻速運動的剛體.
在量子力學、核物理學和粒子物理學中,習慣上采用Z-Y-Z順序定義的歐拉角,它和Z-X-Z順序的區別在于第二次旋轉是繞中間軸y″旋轉的.對應的旋轉矩陣為:
GBR=cos φ-sin φ0sin φcos φ0001cos θ0sin θ010-sin θ0cos θcos ψ-sin ψ0sin ψcos ψ0001 =cos φsin θcos ψ-sin φsin ψ -cos φcos θsin ψ-sin φcos ψ cos φsin θsin φcos θcos ψ+cos φsin ψ -sin φcos θsin ψ+cos φcos ψ sin φsin θ?? -sin θcos ψ?????? sin θsin ψ??????? cos θ
同樣假設
r11 r12 r13r21 r22 r23r31 r32 r33=cos φsin θcos ψ-sin φsin ψ -cos φcos θsin ψ-sin φcos ψ cos φsin θsin φcos θcos ψ+cos φsin ψ -sin φcos θsin ψ+cos φcos ψ sin φsin θ?? -sin θcos ψ?????? sin θsin ψ??????? cos θ
則和Z-X-Z順序類似,可以得到:
θ=atan 2(r132+r232,r33)
φ=atan 2r23r132+r232,r13r132+r232
ψ=atan 2r32r132+r232,-r31r132+r232
當θ=0°或180°時,也是無法求出φ和ψ角.
上面這兩種順序的歐拉角,當θ→0°時,即z軸接近Z軸時,φ和ψ角就無法區分開了.為了解決這個問題,可以使三次轉動繞不同的軸轉動.在航空、航天及航海領域,采用的就是繞三個不同軸旋轉的歐拉角,即卡爾丹式歐拉角,也稱泰特-布萊恩角或導航角.對于飛行器或地面車輛,通常定義x軸方向為前進方向,z軸方向為垂直向下方向,y軸方向為右手方向.飛機的坐標系如圖4.
圖4
圖5
地理坐標系采用北-東-地坐標系,如圖5.
我們采用Z-Y-X順序的歐拉角描述飛機坐標系{B}相對于地理坐標系{G}的姿態.初始狀態{B}和{G}重合,然后{B}坐標系繞zb軸旋轉ψ角,接著再繞yb軸旋轉θ角,最后繞xb軸旋轉φ角.ψ,θ,φ習慣上稱為偏航角、俯仰角和滾轉角.則飛機坐標系{B}相對于地理坐標系{G}的姿態為:
GBR=cos ψsin ψ0
-sin ψcos ψ0
001cos θ0-sin θ
010
sin θ0cos θ100
0cos φsin φ
0-sin φcos φ
=cos θcos ψ sin φsin θcos ψ-cos φsin ψ cos φsin θcos ψ+sin φsin ψ
cos θsin ψ sin φsin θsin ψ+cos φcos ψ cos φsin θsin ψ-sin φcos ψ
-sin θ???? sin φcos θ???????? cos φcos θ
同樣給出一個姿態矩陣,可以確定相應的歐拉角,當cos θ≠0時,有:
θ=atan 2(-r31,r112+r212)
φ=atan 2r32r112+r212,r33r112+r212
ψ=atan 2r12r112+r212,r11r112+r212
當θ=±π2時,解不唯一,在幾何上稱為奇異點.當飛機在做垂直翻筋斗飛行時,該動作可以用俯仰角在-π<θ≤π范圍內連續變化來表示,滾轉角和偏航角都為0.實際上,我們可限制俯仰角在-π2≤θ≤π2內,因為在實際飛行中,飛機很少達到或超過這個范圍飛行,在地面車輛和艦船中更不可能出現大的俯仰角.當飛機俯仰角達到π2時,允許滾轉角和偏航角突然從0變為π弧度,這時飛機顛倒并且反向飛行.當飛機俯仰角達到π2時,機頭豎直向上,通過姿態零點之后,俯仰角逐漸減小,當機頭豎直向下時,俯仰角達到-π2,滾轉角和偏航角又變回0.這樣一來,除了俯仰角為±π2以外,歐拉角都是唯一確定的.
在描述機械手姿態時,也可使用RPY角,其中繞接近軸a 軸旋轉稱為滾動,繞方向軸o軸旋轉稱為俯仰,繞法線軸n軸旋轉稱為偏航.
除了上邊介紹的繞剛體坐標系的坐標軸旋轉的歐拉角之外,還有繞參考坐標系的坐標軸旋轉的角坐標系.比如,X-Y-Z固定角坐標系,也就是固定RPY角坐標系.
歐拉角應用廣泛,除了前邊所提到的之外,它還可以用來描述3D游戲軸物體的姿態、導彈及衛星的姿態,是慣性導航中描述載體姿態的一種很重要的方法.
三、結 論
從前邊的討論知,歐拉角在描述姿態時有很多優點,它使用最少的參數,三個角度,而且具有明顯直觀的物理意義,符合人們思考姿態的方式.在使用計算軟件計算時,也只要輸入三個角度,很方便.但歐拉角也有表達方式不唯一,有奇點,當兩連續旋轉軸共線時還會出現萬向節死鎖類似的問題.另外,在進行歐拉角插值時也會出現很多問題.這些問題有些可以通過對歐拉角取值范圍進行限制來解決,有些是采用這種最簡表示法的一種不幸的后果,需采用其他方法描述姿態,才能避開這種問題.
【參考文獻】
[1]Herbert Goldstein,Charles Poole,John Safko.經典力學:第3版[M].北京:高等教育出版社,2005.
[2]布賴恩·L.史蒂文斯,弗蘭克·L.劉易斯.飛機控制與仿真:第2版[M]. 唐長紅,等譯.北京:航空工業出版社, 2017.
[3]Fletcher Dunn,Ian Parberry.3D數學基礎:圖形與游戲開發[M]. 史銀雪,陳洪,王榮靜,譯.北京:清華大學出版社, 2005.