欧拉角和万向节死锁
一、什么是歐拉角
? ? ? ? 歐拉角就是物體繞坐標系三個坐標軸(x, y, z軸)的旋轉角度,在這里坐標系可以是世界坐標系,也可以是物體坐標系,旋轉順序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一種,這種繞三個軸旋轉的方式稱為卡爾丹式,或者xyx,yxy,xzx,zxz,zyz,yzy中的任何一種,這種繞兩個軸旋轉的方式稱為歐拉式。
? ? ? ? 歐拉角可以看做一個坐標,此坐標都是相對于同一個初始狀態即(0,0,0)即物體坐標系和世界坐標系重合,且三角度都是0,從此初試狀態開始,按照定義的旋轉順序,按照靜態或動態的方式,旋轉指定的角度,從而得到最終的狀態。
? ? ? ? 1.歐拉角給出旋轉角度的同時也要給出旋轉順序,順序不同結果也不同
? ? ? ? 2.根據旋轉選擇的坐標系,可以分為靜態和動態:
? ? ? ? ? ? ?a. 靜態:即繞世界坐標系三個軸的旋轉,由于物體旋轉過程中坐標軸保持靜止,所以稱為靜態。
? ? ? ? ? ? ?b. 動態:即繞物體坐標系三個軸的旋轉,由于物體旋轉過程中坐標軸隨著物體做相同的轉動,所以稱為動態。使用動態歐拉角會出現萬向鎖現象;靜態歐拉角不存在萬向鎖的問題(參見wiki百科:環架鎖定)。
? ? ? ? 3.航空次序歐拉角,它的旋轉次序為Z-Y-X,為動態歐拉角。(6軸傳感器用到的歐拉角)
? ? ? ? ? ? ? ? 繞Z軸旋轉ψ,代表航向角yaw
? ? ? ? ? ? ? ? 繞Y軸旋轉?,代表俯仰角pitch
? ? ? ? ? ? ? ? 繞X軸旋轉?,代表滾轉角roll
? ? ? ? 飛行器的物體坐標系定義如下圖:
? ? ? ? 轉動方式如下圖:
? ? ? ? 航向角ψ? ?yaw
? ? ? ? 俯仰角? ? pitch
? ? ? ? 滾轉角 ? ? roll
三個角度的示意圖:為世界坐標系,為物體坐標系
? ? ? ? 4.靜態歐拉角和動態歐拉角的關系:
? ? ? ? 對于坐標系E下的歐拉角(α,β,r)和以下哪個旋轉矩陣是等價的
? ? ? ? ? ? ? ?1.繞坐標系E下的x軸旋轉α,繞坐標系E下的y軸旋轉β,繞坐標系E下的z軸旋轉r,三個矩陣的復合
? ? ? ? ? ? ? ?2.繞坐標系E下的x軸旋轉α,繞 坐標系E在繞x軸旋轉α后的新系E'下的y軸旋轉β,繞 坐標系E'在繞y軸旋轉β后的新系? ? ? ? ? ? ? ? ? ? ? ? ? E''下的z軸旋轉r,三個矩陣的復合
? ? ? ? 通俗的講,我們在旋轉時,要不要把坐標系一起轉動?
事實上兩種理解都可以,當然,兩種轉法并不等價,下面我來解釋這個問題,
當我們講到坐標系E下的歐拉角(α,β,r)時,這句話是有歧義的,我們必須定義旋轉順序,因為旋轉順序會影響旋轉結果。
如果假設旋轉順序是先繞x軸再y軸再z軸,x-y-z,那么這個歐拉角對應的旋轉矩陣是指上述的2所表示的旋轉矩陣。
如果假設旋轉順序是先繞z軸再y軸再x軸,z-y-x,那么這個歐拉角對應的旋轉矩陣是指上述的1所表示的旋轉矩陣,等等,你肯定會問,這難道不是把2中的先后順序換一下就行了嗎,"繞坐標系E下的z軸旋轉r,繞 坐標系E在繞z軸旋轉r后的新系E'下的y軸旋轉β,繞 坐標系E'在繞y軸旋轉β后的新系E''下的x軸旋轉α,三個矩陣的復合"難道不是這樣嗎?是的,當然也是這樣。
下面我來證明兩種復合方式是相等的,
為了方便證明我先定義一些記號,
記:
繞坐標系E下的x軸旋轉α的旋轉矩陣為Rx,
繞坐標系E下的y軸旋轉β的旋轉矩陣為Ry,
繞坐標系E下的z軸旋轉r的旋轉矩陣為Rz,
繞坐標系E下的z軸旋轉r的旋轉矩陣為Rr(Rr=Rz),
繞 坐標系E在繞z軸旋轉r后的新系E'下的y軸旋轉β的旋轉矩陣為Rb,
繞 坐標系E'在繞y軸旋轉β后的新系E''下的x軸旋轉α的旋轉矩陣為Ra,
另外,將矩陣R的逆記作R~
求證:Rx*Ry*Rz = Rr*Rb*Ra
證明:
Rr = Rz? 定義就是一樣的,顯然相等
Rb = Rr~*Ry*Rr 要得到繞 坐標系E在繞z軸旋轉r后的新系E'下的y軸旋轉β的旋轉矩陣為Rb,可以先應用Rr~這時可以視作在E下,然后使用E下的旋轉Ry繞舊的y軸旋轉,在應用Rr轉回到E'
Ra = (Rr*Rb)~*Rx*(Rr*Rb) 理由同上
所以 右邊=Rr*Rb * Ra
???????? =Rr*Rb * (Rr*Rb)~*Rx*(Rr*Rb)
???????? =(Rr*Rb)* (Rr*Rb)~*Rx*(Rr*Rb)
???????? =Rx*(Rr*Rb)
???????? =Rx*(Rr*Rr~*Ry*Rr)
???????? =Rx*Ry*Rz =左邊?
#證畢
? ? ? ? 5.環架結構和動態歐拉角以及靜態歐拉角的關系:
? ? ? ? 假設環架結構最外層圓環代表z軸,中間圓環代表y軸,最內層圓環代表x軸,旋轉順序為z-y-x。即旋轉z軸y和x軸都變,旋轉y軸只有x軸變化,旋轉x軸其它軸不變。則,按照z-y-x順序轉動的環架結構就和上述航空次序歐拉角,即為動態歐拉角,但有稍許區別,按照動態歐拉角的定義,物體坐標系在轉動的過程中,先旋轉z軸,y和x軸都變化,再轉動y軸,z軸和x軸都變化,最后轉動x軸,z軸和y軸都變化。但由于每一個歐拉角都相當于一個空間坐標,他都是基于世界坐標系的,而不是基于上一幀中的物體坐標系,所以不會有影響,通俗點說:環架結構旋轉后得到的方位和動態歐拉角定義得到的方位一致,但環架結構旋轉后的形成的新的物體坐標系已經不能滿足軸與軸之間兩兩垂直,甚至可能軸與軸重合,但按照動態歐拉角定義旋轉后所得的新的物體坐標系仍然滿足軸與軸兩兩垂直,但是下一幀物體的動態歐拉角坐標是基于世界坐標系的,而不是此時得到的新的物體坐標系,所以無影響。可以對比環架結構和https://blog.csdn.net/xiaoyink/article/details/84504878中的動態歐拉角定義所得的物體坐標系。
? ? ? ?環架節后若按照x-y-z的順序轉動,則 等同于上述航空次序歐拉角的靜態定義,根據第4點的理論,環架結構的x-y-z和z-y-x順序是等價的,因為x軸旋轉y、z軸不變化,y軸旋轉,z軸不變化,x軸雖然變化,但已經繞x軸旋轉過了,所以不影響最終結果,z軸旋轉同理,所以x、y、z軸可看成世界坐標系的三軸。
二、萬向節死鎖(環架死鎖)
既然歐拉角是從初試狀態是世界坐標系的三個角度都為0,來確定最終方位的,而不是上一幀的物體坐標系來確定最終方位的,那為什么還會出現在死鎖狀態附近不可思議的運動軌跡?我還沒想明白,因為下面動圖演示的萬向節鎖是以上一幀轉動所形成的兩個坐標軸重合的物體坐標系為基準開始轉動的,而不是從世界坐標系開始的。下述環架結構旋轉時,以上述z-y-x的順序為例,當繞y軸旋轉90度時,得到的新的物體坐標系 中z軸和x軸共線,并且下一幀圖像以此新的物體坐標系為參考旋轉到特定的方位時會產生不符合我們需求的軌跡,如視頻https://www.bilibili.com/video/av9140886中所講的。
箭頭在環架中(環架初始位置是上次轉動所形成的的兩軸重合的物體坐標系)要轉動到虛影位置時,不能筆直向下轉動直接到位(最小球面舉例旋轉),而是按照奇怪的弧形路線,這就是萬向節鎖。
也就是鎖,萬向節鎖產生的條件是
1. 動態歐拉角,且是環架結構,保證物體坐標系的三個軸的角度不能固定,保證其中兩個軸可以重合,而不能向動態歐拉角的定義中,物體轉動完成后,形成的新的物體坐標系軸與軸之間仍然是兩兩垂直。
2. 必須以上一次轉動所形成的有兩個軸重合的物體坐標系為基準開始轉動,而不能每次都以世界坐標系為基準
顯然,在實際應用中第二點都是不滿足的,那為什么還會產生奇怪的轉動,如下圖。難道和歐拉角的非平滑插值有關,沒有深入研究
?
一種旋轉狀態可能對應多種歐拉角甚至無數種,可能一個狀態到另一個狀態之間插值時產生了這種效果
總結
- 上一篇: 楼宇控制服务器显示FT,产品 - LOY
- 下一篇: 【赛纳斯】EC Raman电化学拉曼光谱