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


點擊“計算機視覺life”關注,置頂更快接收消息!
由於格式問題最好在公眾號上觀看《IMU 標定-工業界和學術界有什么不同?》
本文主要介紹了IMU基本結構原理和誤差的相關概念,IMU誤差模型,並較詳細介紹了商用產品和學術文獻提到的兩種IMU標定方法。
本文閱讀時間約8分鍾

了解IMU和誤差

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

IMU的應用廣泛。放圖說明,姿態角確定,慣性導航,SLAM,動作捕捉,無人機鏡頭防抖(實現雞頭類似的效果

gif1.gif

gif2.gif

gif4.gif

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

pic1.png

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

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

IMU誤差模型

IMU中x-y-z軸的偏置誤差\(\mathbf{b}^a\)可以表示為不同軸的零點偏置,即

\[\mathbf{b}^a = \begin{bmatrix} b_x \\ b_y \\ b_z \\ \end{bmatrix} \]

IMU中x-y-z軸的正交誤差$\mathbf{T}^a \(和尺度誤差\)\mathbf{K}^a \(可以通過下圖表示。\)\mathbf{x}^B\(-\)\mathbf{y}^B\(-\)\mathbf{z}^B\(為外部坐標系正交歸一的三個軸(可以理解為\) |\mathbf{x}^B| = 1\(,\) |\mathbf{y}^B| = 1\(,\) |\mathbf{z}^B| = 1$),而 \(\mathbf{x}^S\) 表示傳感器x軸的放大系數(相比\(\mathbf{x}^B\)),\(\beta_{\mathbf{x}\mathbf{y}}\) 表示x軸在x-y平面內順時針偏離了\(\beta_{\mathbf{x}\mathbf{y}}\)弧度(小角度近似),其他參數同理。

pic3.png

正交誤差\(\mathbf{T}^a\) 通常可以表示為

\[\mathbf{T}^a = \begin{bmatrix} 1 & -\beta_{\mathbf{y}\mathbf{z}} & \beta_{\mathbf{z}\mathbf{y}} \\ \beta_{\mathbf{x}\mathbf{z}} & 1 & -\beta_{\mathbf{z}\mathbf{x}} \\ -\beta_{\mathbf{x}\mathbf{y}} & \beta_{\mathbf{y}\mathbf{x}} & 1 \\ \end{bmatrix} \]

尺度誤差\(\mathbf{K}^a\) 通常可以表示為

\[\mathbf{K}^a = \begin{bmatrix} \mathbf{x}^S & 0 & 0 \\ 0 & \mathbf{y}^S & 0 \\ 0 & 0 & \mathbf{z}^S \\ \end{bmatrix} \]

在忽略噪聲誤差的條件下,加速度計的偏置誤差\(\mathbf{b}^a\)、正交誤差$\mathbf{T}^a \(和尺度誤差\)\mathbf{K}^a$的模型可以表示為

\[\mathbf{a}^O = \mathbf{T}^a \mathbf{K}^a \begin{pmatrix} \mathbf{a}^S + \mathbf{b}^a \end{pmatrix} \]

其中\(\mathbf{a}^S\)是加速度計的原始測量值,\(\mathbf{a}^O\)是加速度計誤差補償后的值。同理,陀螺的誤差模型可以表示為

\[\mathbf{\omega}^O = \mathbf{T}^g \mathbf{K}^g \begin{pmatrix} \mathbf{\omega}^S + \mathbf{b}^g \end{pmatrix} \]

其中\(\mathbf{\omega}^S\)是陀螺的原始測量值,\(\mathbf{\omega}^O\)是陀螺誤差補償后的值。

較方便的標定方法

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

pic2.png

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

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

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

更精確標定方法

為了更深入了解標定原理過程,文獻A robust and easy to implement method for IMU calibration without external equipments 給出了一種更為精確的IMU標定方法,GitHub上也有相應的Matlab源代碼實現,親試可用,還有動態演示效果不錯。相比商用產品的簡易標定流程,該標定方法有以下幾點不同:

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

標定流程圖:

pic4.png

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

算法首先標定加速度計,利用加速度計測量值的模和重力加速度真實g的方差構建損失函數,利用LM算法,使得最優化快速收斂,得到\(\mathbf{b}^a\)、$\mathbf{T}^a \(和\)\mathbf{K}^a$ 參數。

在標定完加速度計的基礎上,標定陀螺,獲得陀螺坐標相對於加速度計參考坐標的正交誤差,最后偏置和尺度誤差也能通過最優化算法求出。此處有一個處理的小技巧,利用四元數的超復數表示方法,可以通過積分的辦法,方便地求出一個時序角速度產生的總的角度變化,並利用加速度計得到的角度和積分得出的角度比較,得到損失函數,並同樣用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,一起探索計算機視覺新世界~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM