四元數歐拉角解算,姿態解算中要用到的
- 評估一個物體在空間的姿態,一般都會想到通過該物體與參考平面的傾斜角,就是斜面與斜面之間的夾角。但是計算起來實際上我們要把這個過程分解成很多個矢量。所以解算姿態的時候可以把剛體旋轉分解成三個軸上的歐拉角
- 首先稍微說一下,歐拉角就是剛體繞三個軸的旋轉角度。歐拉角與旋轉角度和旋轉軸的旋轉順序有關。但是標準上規定XYZ軸為旋轉軸順序。歐拉旋轉與外界的參考系并沒有關系。平時6050得出來的Yaw(繞Z軸)、Pitch(繞X軸)、Roll(繞Y軸)這三個是以地球作為參考系(一般以東、北、天三個方向為參考初始點),所以要區分的是歐拉角本身是以剛體本身為坐標軸的概念。
 - 下面介紹一下歐拉角的致命缺點 Gimbal Lock(萬向節死鎖)
這個先用一句話囊括一下:不同的坐標值對應空間同一個位置,多個坐標值對應同一個位置的不一致性是造成死鎖的根源。
然后就舉個例子:
假如我們有一個望遠鏡和一個用來放望遠鏡的三腳架,(我們將)三腳架放在地面上,使支撐望遠鏡的三腳架的頂部是平行于地平面(參考平面)的,以便使得豎向的旋轉軸(記為 x 軸)是完全地垂直于地平面的。現在,我們就可以將望遠鏡饒 x 軸旋轉 360 度,從而觀察(以望遠鏡為中心的)水平包圍圈的所有方向。通常將正北朝向方位角度記為 0 度方位角。第二個坐標軸,即平行于地平面的橫向的坐標軸(記為 y 軸)使得望遠鏡可以饒著它上下旋轉,通常將地平面朝向的仰角記為 0 度,這樣,望遠鏡可以向上仰+90 度指向天頂,或者向下-90 度指向腳底。好了,萬事俱備。現在,天空中(包括地面上)的每個點只需要唯一的一對 x 和 y 度數就可以確定。比如 x=90 度,y=45 度指向的點是位于正東方向的半天空上。
現在,看看萬向節死鎖是怎么發生的。一次,我們探測到有一個飛行器貼地飛行,位于望遠鏡的正東方向(x=90 度,y=10 度),朝著我們直飛過來,我們跟蹤它。飛行器飛行方向是保持 x 軸角度 90 度不變,而 y 向的角度在慢慢增大。隨著飛行器的臨近,y 軸角增長的越來越快且當 y 向的角度達到 90 度時(即將超越),突然它急轉彎朝南飛去。這時,我們發現我們不能將望遠鏡朝向南方,因為此時 y 向已經是 90 度,造成我們失去跟蹤目標。這就是萬向節死鎖!
為什么說不能將望遠鏡朝向南方呢,讓我們看看坐標變化,從開始的(x=90 度,y=10度)到(x=90 度,y=90 度),這個過程沒有問題,望遠鏡慢慢轉動跟蹤飛行器。當飛行器到達(x=90 度,y=90 度)后,坐標突然變成(x=180 度,y=90 度)(因為朝南),x 由 90突變成 180 度,所以望遠鏡需要饒垂直軸向 x 軸旋轉 180-90=90 度以便追上飛行器,但此時,望遠鏡已經是平行于 x 軸,我們知道饒平行于自身的中軸線的的旋轉改變不了朝向,就象擰螺絲一樣,螺絲頭的指向不變。所以望遠鏡的指向還是天頂。而后由于飛行器飛遠,坐標變成(x=180 度,y<90 度)時,y 向角減小,望遠鏡只能又轉回到正東指向,望’器’興嘆。這說明用 x,y 旋轉角(又稱歐拉角)來定向物體有時并不能按照你想像的那樣工作,象上面的例子中從(x=90 度,y=10 度)到(x=90 度,y=90 度),按照歐拉角旋轉確實可以正確地定向,但從(x=90 度,y=90 度)到(x=180 度,y=90 度),再到(x=180 度,y<90 度),按照歐拉角旋轉后的定向并非正確。我的理解是坐標值的變化和飛行器空間的位置變化一一對應,但是從(x=90 度,y=90 度)到(x=180 度,y=90 度),再到(x=180 度,y<90度)這個變化,飛行器位置是連續的變化,但坐標值的變化卻不是連續的(從 90 突變到180),其原因在于(x=90 度,y=90 度)和(x=180 度,y=90 度)甚至和(x=任意度,y=90 度)這些不同的坐標值對應空間同一個位置。。。
同樣對于2維或者3維都是一樣的(例子是抄的、、、) - 現在介紹一下方向余弦,為什么類?一方面方向余弦可以表示矢量在坐標軸中的位置,二是可以簡化運算。詳見下。。
剛剛說過可以用方向余弦表示矢量在坐標軸的位置,也就是說可以得出載體坐標軸xyz分別與參考坐標軸XYZ的方向余弦。形成余弦矩陣
第i行、第j列的元素表示參考坐標系i軸和載體坐標系j軸夾角的余弦。
回過頭來再比較一下歐拉角和方向余弦其實沒有什么區別,就是用方向余弦表示歐拉角。這兩個的坐標變換在《慣性導航》里面都有相應的推導。(此處略)
三個坐標軸的變換用矩陣表示就是這樣
此處再說明一下矩陣的意義。
C 表示坐標系1到坐標系2的變換矩陣
在線性代數中兩復雜矩陣的變化可通過有限的矩陣相乘的運算獲得,當然在坐標系中同樣也適用。兩坐標系任何復雜的角位置關系都可以看做有限次基本旋轉的組合
按上面推論,此矩陣的下面三個就是三軸對應的方向余弦,γ、θ、ψ就是歐拉角。 不管怎么說,要做到表示三維空間的矢量就要用到四元數。。。。原因的話就不扯了,具體可以看看百度了解一下。。。 - 四元數的表示方式:
- 下面說一下四元數是如何表示旋轉的。。。。
這個過程可以大概給一個定義:一個單位四元數可以表示一個旋轉
大概意思就是:從一個坐標系轉換到另一個坐標系可以通過繞一個定義在參考坐標系中的矢量u的單次轉動來實現。
設 Q = a + bi + cj +dk ,我們可以寫成[w,v],其中 w=a,v=bi + cj +dk。那么,v 是矢量,表示三維空間里的旋轉軸。w 標量,表示旋轉角度。所以,一個四元數可以表示一個完整的旋轉。但要注意只有單位四元數才可以表示旋轉,這個是約束條件。
- 這個就是表示參考坐標系繞矢量u旋轉w度可以轉換到載體坐標系。
還有一種變法就是是旋轉載體坐標系可以轉換到參考坐標系。這兩種都是一樣的意思
其中 是繞旋轉軸旋轉的角度, 為旋轉軸在 x,y,z 方向的分量,就是方向余弦也就確定了旋轉軸 - 利用四元數進行矢量變換
- 8、歐拉角、方向余弦、四元數的關系
先配個公式
通過上圖可知四元數可以通過歐拉角或者方向余弦表示。反之,也一樣。看下圖。
歐拉角直接表示四元數:
方向余弦表示歐拉角:
對補償傳感器的PID還沒看懂,第一次寫。。多擔待
完整的Word格式文檔51黑下載地址:
四元數歐拉角解算.docx
(390.69 KB, 下載次數: 67)
2019-12-25 13:52 上傳
點擊文件名下載附件
姿態解算要用到的算法 下載積分: 黑幣 -5
|