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