本文主要介紹了IMU基本結構原理和誤差的相關概念,IMU誤差模型,並較詳細介紹了商用產品和學術文獻提到的兩種IMU標定方法。

本文乾貨較多,請慢慢品味

由於知乎格式問題,符號顯示比較奇怪,請在公眾號「計算機視覺life」內閱讀:

IMU 標定 | 工業界和學術界有什麼不同??

mp.weixin.qq.com
圖標

瞭解IMU和誤差

IMU(Inertial Measurement Unit)是測量運動物體慣性運動,輸出三軸加速度和三軸角速度等信息的電子元件,用於姿態角和運動路徑等測量。IMU常常還包含了磁力計、壓力計、溫度計和GPS等輔助單元,相互配合完成更複雜的任務。

IMU的應用廣泛。比如姿態角確定

SLAM,動作捕捉

無人機鏡頭防抖(實現雞頭類似的效果):

六軸IMU的結構如下圖,坐標軸一般遵循右手定則,理想情況下XYZ軸相互正交,加速度計和陀螺儀的軸相互重合。但是通常情況下,IMU存在一定的偏差。例如,從Inven Sense的MPU-9250晶元內部結構圖可以看到該加速度計(X、Y、Z軸)和陀螺儀分開製造,因此加速度計和陀螺儀的坐標軸中心並不嚴格重合,甚至加速度計不同軸也是分開加工,坐標軸也不能保證完全正交。而且,加工過程或多或少有誤差,如對稱度不好,產生零偏。另外,IMU的內部參數還會隨時間、溫度變化,產生溫漂。

IMU出廠時存在參數誤差不可避免,而參數誤差常常會造成嚴重問題:

  • 偏置異常,會造成數據漂移嚴重。
  • 軸向正交性和尺度異常,x-,y-,z-軸不正交或尺度不一致,會造成同一失量的模在不同方向上不一致。
  • 另外,雜訊也會使測量值失真。

IMU誤差模型

IMU中x-y-z軸的偏置誤差

可以表示為不同軸的零點偏置,即

IMU中x-y-z軸的正交誤差

和尺度誤差

可以通過下圖表示。

為外部坐標系正交歸一的三個軸(可以理解為

),而

表示感測器x軸的放大係數(相比

),

表示x軸在x-y平面內順時針偏離了

弧度(小角度近似),其他參數同理。

正交誤差

通常可以表示為

尺度誤差

通常可以表示為

在忽略雜訊誤差的條件下,加速度計的偏置誤差

、正交誤差

尺度誤差

的模型可以表示為

其中

是加速度計的原始測量值,

是加速度計誤差補償後的值。同理,陀螺的誤差模型可以表示為

其中

是陀螺的原始測量值,

是陀螺誤差補償後的值。

較方便的標定方法

在看嚴謹的標定操作之前,看一下商用產品大疆Spark無人機的標定流程

bbs.dji.com/thread-1469

官方給的方法是在水平面上,按照圖片提示六個位置靜止放置片刻,即自動得到標定參數。由於重力方向和大小不變,這六個位置分別(近似)是IMU的X、-X、Y、-Y、Z和-Z朝向下的方向,因此至少可以擬合出加速度計三個軸的尺度因子、偏置以及陀螺儀的偏置。該標定方法有以下的假設

  • 重力不變且垂直向下。
  • 保持靜止,可以測量陀螺儀的偏置。

對於外行人這樣的標定流程簡潔、快捷,適合商用級產品,但是由於標定數據太少,標定誤差會較大,不利於高精度測量和導航應用,如SLAM等。

更精確標定方法

為了更深入瞭解標定原理過程,文獻A robust and easy to implement method for IMU calibration without external equipments 給出了一種更為精確的IMU標定方法,GitHub上也有相應的Matlab源代碼實現:

github.com/shenshikexmu

親試可用,還有動態演示效果不錯。相比商用產品的簡易標定流程,該標定方法有以下幾點不同:

  • 給出了加速度計和陀螺儀更複雜的模型。
  • 利用Allan方差的定義,標定陀螺儀的偏置。
  • 大量冗餘數據,保證最優化收斂。利用數十次測量數據而不是僅僅6個位置。
  • 利用Runge-Kutta積分和四元數表示法,實現陀螺儀的軸向偏差和尺度因子的標定。

標定流程圖:

標定首先通過Allan方差定義測試出IMU標定靜止的時間T,等待T時間後,旋轉IMU並靜止,靜止時獲取加速度數據,旋轉時獲取陀螺數據,循環多次後(36-50次)完成標定操作,隨後演算法自動完成標定。

演算法首先標定加速度計,利用加速度計測量值的模和重力加速度真實g的方差構建損失函數,利用LM演算法,使得最優化快速收斂,得到

參數。

在標定完加速度計的基礎上,標定陀螺,獲得陀螺坐標相對於加速度計參考坐標的正交誤差,最後偏置和尺度誤差也能通過最優化演算法求出。此處有一個處理的小技巧,利用四元數的超複數表示方法,可以通過積分的辦法,方便地求出一個時序角速度產生的總的角度變化,並利用加速度計得到的角度和積分得出的角度比較,得到損失函數,並同樣用LM演算法求出陀螺的誤差參數。

實際標定操作和演算法處理過程中,有幾點很重要。

1、和深度學習訓練樣本一樣,IMU標定的最優化過程也需要樣本的平衡性。和複雜一些的非線性最優化類似,IMU參數標定演算法一般也是基於LevenbergMarquardt參數演算法的擬合演算法。而旋轉操作可以讓IMU數據(如加速度計)在三維數據空間中形成橢球形,數據均勻分佈在橢球面上能夠避免某一軸向的擬合權重過大,造成擬合橢球變形。

2、感測器對溫度敏感(特別是陀螺儀),因此在沒有溫度計並且溫度補償的條件下,保證IMU的熱平衡很重要。陀螺儀除了零點偏置,還有零點偏置漂移等更多誤差,因此動態調節。

3、對加速度數據積分的起點和終點很關鍵。由於是人為轉動IMU產生的抖動比較嚴重,因此轉動的開始和結束不是很清晰,可以通過濾波減少積分誤差。

4、標定器材配套很重要。手持式標定會引入人為振動,因此最好為IMU設計相應穩定可靠的標定裝置,比如具有類似地球儀的旋轉結構,並且帶有刻度、有水平儀的儀器,這樣能夠實現垂直狀態和特定角度轉動。

5、利用Allan方差定義,可得到等待時間。但仍然存在問題,不同軸陀螺的Allan方差不一樣,甚至可能差別很大。

6、IMU的坐標絕對基準還是不能標定得到。

以上兩種方法製作的輕量級標定工具適用於一般的研究或產品,但對於一些高性能感測器,它們自身誤差甚至小於標定參數精度,以上標定方法不再適用。需要很多價格不菲的精密儀器去標定,即提供絕對基準。

推薦閱讀

從零開始一起學習SLAM | 為什麼要學SLAM?

從零開始一起學習SLAM | 學習SLAM到底需要學什麼?從零開始一起學習SLAM | SLAM有什麼用?從零開始一起學習SLAM | C++新特性要不要學?從零開始一起學習SLAM | 為什麼要用齊次坐標?從零開始一起學習SLAM | 三維空間剛體的旋轉從零開始一起學習SLAM | 為啥需要李羣與李代數?從零開始一起學習SLAM | 相機成像模型從零開始一起學習SLAM | 不推公式,如何真正理解對極約束?從零開始一起學習SLAM | 神奇的單應矩陣從零開始一起學習SLAM | 你好,點雲從零開始一起學習SLAM | 給點雲加個濾網從零開始一起學習SLAM | 點雲平滑法線估計零基礎小白,如何入門計算機視覺?SLAM領域牛人、牛實驗室、牛研究成果梳理我用MATLAB擼了一個2D LiDAR SLAM可視化理解四元數,願你不再掉頭髮最近一年語義SLAM有哪些代表性工作?視覺SLAM技術綜述

由於知乎格式問題,符號顯示比較奇怪,請在公眾號「計算機視覺life」內閱讀:

IMU 標定 | 工業界和學術界有什麼不同??

mp.weixin.qq.com
圖標

推薦閱讀:

相關文章