1、慣性測量單元IMU(InertialMeasurement Unit)
姿態航向參考系統AHRS(Attitude and Heading Reference System)
地磁角速度重力MARG(Magnetic, Angular Rate, and Gravity)
微機電系統MEMS(Micro Electrical Mechanical Systems)
自由度維數DOF(Dimension Of Freedom)
無人駕駛飛行器UAV(Unmanned Aerial Vehicle)
擴展卡爾曼濾波EKF(Extended Kalman Filter)
無損卡爾曼濾波UKF(Unscented Kalman Filter)
慣性導航系統INS(Inertial Navigation System)
全球導航衛星系統GNSS(Global Navigation Satellite System)
天文導航系統CNS(Celestial Navigation System)
可垂直起降VTOL(Vertical Take-off and Landing)
2、 常見的導航系統:慣性導航、天文導航、衛星導航、路標導航、無線電導航、推算導航、組合導航。
3、 有兩個基本坐標系:“地理”坐標系和“載體”坐標系。”地理”坐標系指的就是地球上的“東北天(ENU)”坐標系,而“載體”坐標系值的就是四軸自己的坐標系。
4、 在“地理”坐標系中,重力的值始終是(0,0,1g),地磁的值始終是(0,1,x)。這些值就是由放置在四軸上的傳感器測量出來的。
5、 “地理”坐標系和“載體”坐標系是兩個不同的坐標系,需要轉化。轉化的方法就是坐標系的轉換,目前有三種方式:四元數(q0123)、歐拉角(yaw(Z軸)/ pitch(Y軸)/roll(X軸)屬於其中一種旋轉順序Z-Y-Xà航空次序歐拉角)、方向余弦矩陣(9個系數)。
6、 所謂的姿態,就是公式+系數。比如:歐拉角公式和歐拉角的系數(翻滾、傾仰、偏航)
7、 姿態的數據來源有5個:重力、地磁、陀螺儀、加速度計、電子羅盤。其中前兩個來自“地理”坐標系,后三個來自“載體”坐標系。
8、 導航的基本原則就是保證兩個基本坐標系的正確轉化,沒有誤差。只有實現了這個原則,載體才可以在自己的坐標系中完成一系列動作而被轉換到地理坐標系中看起來是正確的。為了達到這個目標,需要對兩個坐標系進行實時的標定和修正。因為坐標系有三個軸,偏航yaw修正由電子羅盤(基於載體)、地磁(基於地理)對比修正誤差補償得到。傾仰pitch和翻滾roll上的修正由加速度計(基於載體)、重力(基於地理)對比修正誤差得到。在完成了基本原則的基礎之后,即保證兩個坐標系的正確轉化后,利用基於載體上的陀螺儀進行積分運算,得到基於載體坐標系的姿態數據,經過一系列PID控制,給出控制量,完成基於載體坐標系上的穩定控制后,反應到地理坐標系上的穩定控制,從而達到我們觀察到的定高、偏航、翻滾、傾仰等動作。
對於上述論述可以看出,導航姿態從理論上講只用陀螺儀是可以完成任務的。但是由於陀螺儀在積分過程中會產生誤差累計,外加上白噪聲、溫度偏差等會造成導航姿態的解算隨着時間的流逝而逐漸增加。所以就需要用加速度計在水平面對重力進行比對和補償,用來修正陀螺儀的垂直誤差。但是對於豎直軸上的旋轉,加速度計是無能為力的,此時用的是電子羅盤。他也可以測量出水平面內的地磁方向用來修正陀螺儀的水平誤差。通過這兩個器件的修正補償,使得陀螺儀更加穩定、可靠的工作。
9、 加速度計在地球上測量的是重力加速度,如果載體沿着z軸旋轉,加速度計是無法感知他的運動的;類似的,電子羅盤測量的是地球上的磁場方向,如果載體沿着y軸旋轉,電子羅盤同樣也是無法感知他的運動的。綜上所述,加速度計和電子羅盤只能得到2維的角度關系,通過某種方式的融合,可以得到正確的三維姿態信息。
10、 在這里要弄清楚一個問題,前面第8條所說的關於地理坐標系和載體坐標系之間的互相轉化。這樣就有兩種轉換方向:一是把B系(載體)轉換到N系(地理);二是把N系轉到B系。當我們在實際控制當中,我們關心的顯然是載體坐標系相對於地理坐標系之間的變化,所以我們通常使用的旋轉矩陣是把N系轉到B系的矩陣(兩者的關系是轉置關系)。比如本次在利用加速度計計算姿態誤差時,可以利用上一次的四元數姿態在N系中的三個軸的垂直分量轉換到B系中垂直分量來算誤差。 式中的右邊為N系到B系的旋轉矩陣的第三列元素(恰好是重力g在B系中的值)
11、 在單位時間內的位移被定義為速度,速度有線速度和角速度之分,分別對應兩種傳感器測量這兩種不同的速度:線速度傳感器(加速度計)、角速度傳感器(陀螺儀)。所以,陀螺儀是用來測量角速度的,用於坐標系的旋轉,也就是導航姿態了。加速度計只能測量線速度,最典型的例子就是重力加速度,如果加上水平坐標系上的加速度,形成合力F產生a。考慮一個導彈,他的飛行速度由加速度計來測量而飛行過程中的轉體姿態由陀螺儀來測量。
12、 當我們把加速度計拿在手上隨意轉動時,我們看的是重力加速度在三個軸上的分量值,無法直觀的觀察到三個軸上的加速度分別是多少。為了實現這樣一個目的(可以看到每個軸上的真實加速度),我們需要一個旋轉矩陣,這個矩陣的作用就是把放置在載體坐標系上的加速度計值轉換到參考坐標系中,在參考坐標系中,三個軸上的值始終都是(0,0,1)。所以當我們把加速度計以任意角度固定在空間中時,無論加速度計的三個軸的值是多少,當經過旋轉矩陣變換后,在參考坐標戲中輸出的值始終都是(0,0,1)-->這表明在參考坐標系中,物體在x和y軸上是沒有加速度的,只有在z軸上存在重力加速度。但是這里又存在一個問題,既然z軸的輸出是1,就是說存在加速度,物體應該運動起來才對。但是這里物體並沒有運動。為什么輸出是1呢?這涉及到加速度計的設計問題:加速度計測量加速度是通過比力來測量,而不是通過加速度。通過想象一個盒子中的小球就就可以明白。加速度計只有在自由落體時,其輸出為0。
13、 便於記憶的一個例子就是如何從青山到黃家湖。對於一個人來講,要從青山到黃家湖,必須滿足兩個要求:1、你必須有張武漢地圖,並且知道黃家湖的位置和青山的位置。2、你必須帶有方向導航系統,實時更新你目前的朝向。對應到飛行導航上面,黃家湖的位置對應“地理”坐標系,青山的位置對應“載體”坐標系。你的目的就是讓這個兩個坐標系被正確轉化和標定。這部分工作交給加速度計和電子羅盤處理。至於你具體是走過去,騎自行車去,乘公交去還是做出租車過去,對應在飛行導航上面的話,利用的陀螺儀通過積分作用確定自己的動態姿態。
14、 單軸融合的最簡單的例子:在這里,K= 控制周期/傳感器采樣周期。
15、 在復數域里面,二維坐標通過對復數的加減乘除運算可以快速方便地表達出來,尤其是旋轉。現在考慮三維空間的復數向量的拉伸和旋轉,或者更高維度。那么就需要一個復數域坐標系,容易想到的形式就是h=a+bi+cj,事實證明在二維復數域里面簡單添加一元j是無法構成三維復數空間的,實際上需要四個參數才能夠構建三維復數空間(兩個變量決定軸的方向,一個變量決定旋轉角度,一個變量決定伸縮比例),即h=a+bi+cj+dk。這就是四元數的基本表達形式(其中i2=j2=k2=-1)。即用四個變量來表達三維空間的位置坐標,這就是復數域和實數域的不同。但是,這樣定義是有前提條件的,即犧牲了乘法的交換律。例如兩個四元數hp≠ph。如此一來,就出現了Q8乘法矩陣表。
16、 對四元數更進一步分析,發現四元數可以寫成一個實數加上一個三維向量的和,即h=d+u(其中d為實數,u為三維向量)。令p=w+v,則
而
其中,實數乘法和內積具有乘法交換律,但是三維向量的外積不同,有 u x v = -v x u。所以,hp-ph就是兩個向量外積的兩倍。如果兩個向量部分外積為0,那么乘法運算就可交換了。
17、 對於四元數的乘法pq,就是在四維空間F上一個線性變換,因此必有兩個互相垂直的二維不變子空間,分別是(1,0,0,0)和u張成的二維平面(這個平面在四維空間中,我們無法看到全貌,只能看到與我們相交的一條直線,即u)和由u1和u2組成的二維平面(u1和u2是在u的三維空間中找到的三者兩兩垂直的符合右手定則的一組基,這個平面我們是可以看到的)。所以四元數的乘法的幾何意義就是在這兩個二維不變子空間中做伸縮旋轉的線性變換。角度。伸縮因子為||p||(從(1,0,0,0)到u旋轉,從u1到u2旋轉)。如果p乘在右邊,第一次旋轉與上述方向相同,但是第二次旋轉方向則與上述相反。本條所述內容全部發生在四維空間中,記住,四元數無法表示四維空間中的所有拉伸旋轉,因為他要求兩個不變子空間上的旋轉角相同。但是他完全可以表示三維空間中的所有拉伸旋轉。如果要討論三維空間,那么四元數是完全可以勝任的。
18、 在三維空間用應用四元數乘法做線性變換時,會存在兩次旋轉,一次從(1,0,0,0)到u的旋轉,第二次從u1到u2的旋轉。前者旋轉發生在四維空間,我們看不到,只看到u這一條交線。但是第二次旋轉發生在三維空間,我們是可以看到的。
19、 我們來看一下在三維空間中是如何旋轉的。給定一個三維向量p(0,x,y,z),這是用四元數來表示的。然后做四維空間中的線性變換RPQ(Q為R的共軛向量,並且R為單位四元數,即N(R)=1),得到的答案就是(0,x’,y’,z’)。其中R=(cos(theta/2),alpha*sin(theta/2),beta*sin(theta/2),gama*sin(theta/2)),且alpha2+ beta2+gama2=1。這表示:在三維空間中將P向量繞着(alpha,beta, gama)軸逆時針旋轉theta角度,長度不變。之所以為什么是theta/2,是因為在四維空間中實際上只轉了theta角度。
20、 關於高維空間的知識。低維度事物無法感知在高維度發生的事情和動作。比如我們將一條紙袋旋轉對折后首尾相連后在紙帶的一面沿着直線一直畫線,在二面平面上我們一直以為我們走的是直線,但是在三維上我們卻是在走圓,只不過首尾相接,二維無法感知,這是在三維上干的事情。並且低維度的實物只能觀察到高維度的實物在低緯度上的投影圖像,比如撲克牌人看到的人體模型就是用一張紙縱切我們的人體,比如我們在現實生活中看到的人的外貌其實是四維空間在三維空間上的投影而已。二維空間上看到的直線有可能在三維空間上是一個圓,所以三維空間上看到的直線有可能在思維空間上是一個圓。所以我們在用四元數表達三維空間的時候,看到的實際上是四維空間中的一個切線,我們看到的直線有可能在四維空間是一個圓。
21、 球極投影對於從低維到高維的理解是比較好的一種方式。比如地球的地圖球極投影。
22、 將一個數乘以-1,相當於找到對應與原點的鏡像相反數,再乘以-1后又回到了原來的位置。這樣的一個-1x-1的過程,相當於把數字轉了360度。也就是說-1就意味着將數字旋轉180度。現在定義一個數,只需要旋轉90度,即出現 。在這里特別注意一下,我們在橫坐標上操作的是只具有一維長度的實數,這樣定義會出現一個不在橫坐標上的數,這樣需要擴展維度,如此一來,定義i為旋轉90度,對應畫出垂直於橫坐標的縱坐標,就出現了復平面。既然是二維的平面,就需要兩個數來表示坐標,正如我們的實數平面中的x和y坐標。但是復數不同,復數只需要一個復數就可以表達一個平面位置的拉伸和旋轉。
23、 四元數p=[w,u](其中w為標量,u為矢量)。描述的是一個旋轉軸和一個旋轉角度。如果用一個向量乘以一個四元數p,表示的是該向量在這個旋轉軸旋轉一個特定角度。
24、 用於表示旋轉的方法有很多:Axis/angle、歐拉角、方向余弦矩陣、四元數。相比於其他幾種表示方法,四元數具有不存在歐拉角存在的gimbal lock 問題、只需要4個系數而非方向余弦矩陣的9個系數、兩個四元數更容易插值、兩個四元數相乘表示旋轉等優點。
方向余弦矩陣系數太多,難以插值。
歐拉角雖然表達簡單,但是存在Gimbal lock問題(即可能失去一個自由度)
Axis/angle的問題如同歐拉角。
25、 用四元數直接表示旋轉是很困難的,所以我們可以采用歐拉角來表示,但是在進行空間旋轉的計算和插值時,需要對歐拉角和四元數進行轉化,因為直接計算歐拉角會遇到Gimballock問題,而用四維空間中的四元數進行計算沒有此類問題,並且插值簡單(因為在思維空間中進行插值,就是在三維球形空間中的最短路徑問題,個人理解,可能有誤)。這就是優缺點的互補:采用歐拉角來表示當前載體的姿態,而在具體計算時將其轉化為四元數。
26、 該融合方案是將加速度計和地磁計的值經過QUEST算法融合后計算出四元數abcd,然后和陀螺儀的輸出(角度速率)經過卡爾曼濾波后給出物體的估計四元數q。其中QUREST算法可以換成高斯算法(需要大量矩陣運算,可能需要DSP)或者梯度下降算法(折衷算法)。
27、
28、 這樣圖從理論上給出了融合的具體依據。圖中的中間豎線表示高斯算法,左下角關於四元數的微分方程很重要,該方程將四元數和角度變化率聯系起來構成常系數齊次線性微分方程。兩個相加融合后積分后再歸一化,即可得到物體的姿態四元數表達式。再經過歐拉角的變換即可轉換為我們熟知的Roll,Pitch,Yaw。
29、 從一個坐標系到另一個坐標系的轉換前面談到有多種轉換方法:歐拉角法、方向余弦矩陣法、四元數法等。其中歐拉角法的核心思想是:一個坐標系可以用另一個參考坐標系的三次空間旋轉來表達。旋轉坐標系的方法又有兩種:一種是依次旋轉三個不同的坐標軸;另一種是相鄰兩次旋轉不同的坐標軸。第一種旋轉方法稱之為Tait–Bryan angles(可選順序有x-y-z, y-z-x, z-x-y,x-z-y, z-y-x, y-x-z);第二種旋轉方法稱之為Euler angles(可選順序有z-x-z, x-y-x, y-z-y,z-y-z, x-z-x, y-x-y)。另外還有兩個概念,外在旋轉(extrinsic rotations)和內在旋轉(intrinsic rotations)。我們固定不動的參考坐標系為xyz,需要被旋轉的坐標系為abc。初始狀態兩個坐標值完全重合,現在的目標是旋轉坐標abc到達指定位置。所謂的外在旋轉指的是三次旋轉中每次旋轉的旋轉軸都是固定參考系中的xyz軸中的一個軸。例如:Tait–Bryan angles的xyz順序,那么在旋轉abc的時候,每次旋轉把abc坐標系圍繞固定參考系xyz中的某個軸旋轉;而內在旋轉指的是在旋轉abc的時候,每次旋轉圍繞的的軸是上一次abc旋轉后的某個軸。打個比方,就好比數學中的數列問題,題目一般給出的是n項和n-1項的關系表達式,n項的值是根據前一項推導出來的,建立在前一次的值之上,而通項公式則是可以直接通過n的表達式計算任意第n項的值,比如計算第10項的值直接通過n的表達式就可以計算出來,而不需要通過計算第9項、第8項…直到第一項后再反推。外在旋轉好比通項公式,每次旋轉都是通過固定的參考系xyz旋轉而來,與旋轉過程中的abc狀態無關。而內在旋轉則需要根據上次旋轉后轉軸,在這個轉軸的基礎上再旋轉,所以旋轉軸是變動的,好比數列中的n項和n-1項的遞推關系。關於內在旋轉和外在旋轉的關系,如果將其中一種旋轉的第一次旋轉和第三次旋轉互換位置,那么他們就是等價的。上圖為內在旋轉。(聯想數列公式的n項和n-1項關系)
A rotation represented by Euler angles (α, β, γ) =(−60°, 30°, 45°), using z-x’-z″intrinsic rotations
上圖為外在旋轉。(聯想數列公式的通項公式)
The same rotation represented by (γ, β, α) = (45°, 30°, −60°), usingz-x-z extrinsic rotations
可以看到最終的坐標系姿態相同。
最后關於Tait–Bryan angles,由於是在三個參考坐標系xyz上的旋轉,所以剛好可以利用這個性質用來導航,就形成了roll、pitch、yaw等概念。但是這是一種外在旋轉,我們畫圖經常利用的是內在旋轉(因為便於記憶,好畫),所以就需要利用內在旋轉和外在旋轉的關系:互換第一次旋轉和第三次旋轉的位置。剛才已經說明。並且在一些參考文獻(James, D.,Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors)中會涉及到一些歐拉角轉換的圖解實例,如果出現Tait–Bryan angle,比如順序為1-2-3,但是在圖解時使用的是內在旋轉,此時真正的旋轉順序是3-2-1,即替換1和3的位置。特別注意!!