IMU初識-MTi-300

IMU(Inertial measurement unit),中文翻譯爲慣性測量單元,是一種能夠測量物體三軸加速度和角速度進而解算出物體姿態的裝置。一般的,一個IMU包含了三個單軸的加速度計和三個單軸的陀螺儀,加速度計檢測物體在載體座標系統獨立三軸的加速度信號,而陀螺儀檢測載體相對於導航座標系的角速度信號,測量物體在三維空間中的角速度和加速度,並以此解算出物體的姿態。在導航中有着很重要的應用價值。爲了提高可靠性,還可以爲每個軸配備更多的傳感器,例如地磁傳感器。
MPU6050屬於IMU的一種,包含了三個單軸的加速度計和三個單軸的陀螺儀。
本文將簡單介紹加速度計和陀螺儀,以及如何利用他們的數據進行姿態解算。
第一部分:加速度計
我們可以把加速度計想象成一個圓球在一個方盒裏面,雖然這個模型並非一個MEMS傳感器的真實構造,但用它來解釋與加速度計相關的問題相當有效。
假設這個盒子不在重力場中,圓球處於盒子的正中央,一切東西都處於無重力狀態,如下圖所示:

 

image.png

 

在上面的圖中你可以看到我們給每個軸分配了一對牆(我們移除了Y+以此來觀察裏面的情況)。設想每面牆都能感測壓力。如果我們突然把盒子向左移動(加速度爲1g=9.8m/s^2),那麼球會撞上X-牆。然後我們檢測球撞擊牆面產生的壓力,X軸輸出值爲-1g,如下圖:

 

image.png


請注意加速度計檢測到得力的方向與它本身加速度的方向是相反的。在這個模型中你應該知道了加速度計是通過間接測量力對一個牆面的作用來測量加速度的,在實際應用中,可能通過彈簧等裝置來測量力。這個力可以是加速度引起的,但在下面的例子中,我們會發現它不一定是加速度引起的。如果我們把模型放在地球上,球會落在Z-牆面上並對其施加一個1g的力,如下圖:

image.png


在這種情況下盒子沒有移動但我們任然讀取到Z軸有-1g的值。球在牆壁上施加的壓力是由引力造成的。引用這個例子只是爲了說明加速度計的本質是檢測力而非加速度。只是加速度所引起的慣性力正好能被加速度計的檢測裝置所捕獲。
到目前爲止,我們已經分析了單軸的加速度計輸出,這是使用單軸加速度計所能得到的。三軸加速度計的真正價值在於它們能夠檢測全部三個軸的慣性力。讓我們回到盒子模型,並將盒子向右旋轉45度。現在球會與兩個面接觸:Z-和X-,見下圖:

image.png


0.71g這個值是不是任意的,它們實際上是1/2的平方根的近似值。我們介紹加速度計的下一個模型時這一點會更清楚。
在上一個模型中我們引入了重力並旋轉了盒子。在最後的兩個例子中我們分析了盒子在兩種情況下的輸出值,力矢量保持不變。雖然這有助於理解加速度計是怎麼和外部力相互作用的,但如果我們將座標系換爲加速度的三個軸並想象矢量力在周圍旋轉,這會更方便計算。

image.png

 

請看看在上面的模型,我保留了軸的顏色,以便你的思維能更好的從上一個模型轉到新的模型中。想象新模型中每個軸都分別垂直於原模型中各自的牆面。矢量R是加速度計所檢測的矢量(它可能是重力或上面例子中慣性力的合成)。RX,RY,RZ是矢量R在X,Y,Z上的投影。請注意下列關係:
R ^ 2 = RX ^ 2 + RY ^ 2 + RZ ^ 2(公式1)
此公式等價於三維空間勾股定理。
還記得我剛纔說的1/2的平方根0.71不是個隨機值吧。如果你把它們代回上式,回顧一下重力加速度是1g,那我們就能驗證:1 ^ 2 =(SQRT(1/2))^ 2 + 0 ^ 2 +(SQRT(1/2))^ 2在公式1中簡單的取代: R=1, Rx = -SQRT(1/2), Ry = 0 , Rz = -SQRT(1/2)。
經過一大段的理論序言後,我們和實際的加速度計很靠近了。實際中,我們可以從加速度計中獲得與RX,RY,RZ線性相關的值,至於如何轉化成RX,RY,RZ,不同的儀器方法可能不同,這邊不一一細講。
在我們得到了慣性力矢量的三個分量,如果設備除了重力外不受任何外力影響,那我們就可以認爲這個方向就是重力矢量的方向。如果你想計算設備相對於地面的傾角,可以計算這個矢量和Z軸之間的夾角。如果你對每個軸的傾角都感興趣,你可以把這個結果分爲兩個分量:X軸、Y軸傾角,這可以通過計算重力矢量和X、Y軸的夾角得到。讓我們回到我們的上一個加速度模型,再加一些標註上去:

 

image.png


我們感興趣的角度是向量R和X,Y,Z軸之間的夾角,那就令這些角度爲Axr,Ayr,Azr。觀察由R和Rx組成的直角三角形:
cos(Axr) = Rx / R , 類似的:
cos(Ayr) = Ry / R
cos(Azr) = Rz / R
從公式1我們可以推導出 R = SQRT( Rx^2 + Ry^2 + Rz^2)
通過arccos()函數(cos()的反函數)我們可以計算出所需的角度:
Axr = arccos(Rx/R)
Ayr = arccos(Ry/R)
Azr = arccos(Rz/R)
我們再介紹幾個很常用的公式:
cosX = cos(Axr) = Rx / R
cosY = cos(Ayr) = Ry / R
cosZ = cos(Azr) = Rz / R
這三個公式通常稱作方向餘弦,它主要表達了單位向量(長度爲1的向量)和R向量具有相同的方向。你可以很容易地驗證:SQRT(cosX ^ 2 + COSY ^ 2 + cosZ ^ 2)= 1這是個很好的性質,因爲它避免了我們一直檢測R向量的模(長度)。通常如果我們只是對慣性力的方向感興趣,那標準化模長以簡化其他計算是個明智的選擇。

第二部分:陀螺儀

 

image.png

 

陀螺儀的每個通道檢測一個軸的旋轉。例如,一個2軸陀螺儀檢測繞X和Y軸的旋轉。爲了用數字來表達這些旋轉,我們先引進一些符號。首先我們定義:
Rxz – 慣性力矢量R在XZ平面上的投影
Ryz – 慣性力矢量R在YZ平面的上投影
在由Rxz和Rz組成的直角三角形中,運用勾股定理可得:
Rxz^2 = Rx^2 + Rz^2 ,同樣:
Ryz^2 = Ry^2 + Rz^2
同時注意:
R^2 = Rxz^2 + Ry^2 ,這個公式可以公式1和上面的公式推導出來,也可由R和Ryz所組成的直角三角形推導出來
R ^ 2 = Ryz ^ 2 + RX ^ 2
相反,我們按如下方法定義Z軸和Rxz、Ryz向量所成的夾角:
AXZ - Rxz(矢量R在XZ平面的投影)和Z軸所成的夾角
AYZ - Ryz(矢量R在YZ平面的投影)和Z軸所成夾角
現在我們離陀螺儀要測量的東西又近了一步。陀螺儀測量上面定義的角度的變化率。換句話說,它會輸出一個與上面這些角度變化率線性相關的值。爲了解釋這一點,我們先假設在t0時刻,我們已測得繞Y軸旋轉的角度(也就是Axz),定義爲Axz0,之後在t1時刻我們再次測量這個角度,得到Axz1。角度變化率按下面方法計算:
RateAxz = (Axz1 – Axz0) / (t1 – t0).
如果用度來表示角度,秒來表示時間,那這個值的單位就是 度/秒。這就是陀螺儀檢測的東西。
同樣,實際中陀螺儀不會直接給出三軸角速度的值而是與三軸角速度線性相關的值,轉化因儀器不同而不同,這裏也不細講。
得到了角速度,再根據採樣頻率,我們就能算出物體從上一時刻到這一時刻旋轉的角度,從而解算出物體的姿態。

第三部分:爲什麼要有同時具備加速度計和陀螺儀。
看了上面的介紹,我們發現單單通過加速度計或者陀螺儀就能解算出物體姿態,爲什麼IMU要同時具備兩種功能相似的儀器呢?
仔細看第一部分會發現,我們所舉的例子都是在不受力或者只受重力的情況下,當物體在加減速的情況下,三軸的加速度所組合的加速度的方向並不在重力加速度的方法上,此時單純利用加速度計進行姿態解算會有極大的誤差。
而陀螺儀進行姿態解算主要使用的是角速度x時間,但是這個角速度只能表示採樣時的角速度,所以計算出來的旋轉角度是兩次採樣間旋轉角度的近似值,陀螺儀是通過對旋轉角度的累加進行姿態解算,所以長時間工作會有極大的誤差。
那這樣說IMU其實也無法解算出準確的姿態?非也!
通過上面的分析我們可以發現,加速度計短時間內精度較差,而長時間穩定性好,陀螺儀短時間內精度高,但會累計誤差,只要將兩者的數據進行互補,就能解算出正確的姿態。



作者:Lension
鏈接:https://www.jianshu.com/p/263cac162590
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯繫作者獲得授權並註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章