如何理解IMU以及其預積分
如何理解IMU以及其預積分
從接觸IMU時,離不開IMU的預積分,那麼IMU的預積分是什麼呢,下面一步一步來介紹:
首先我們要知道預積分的作者是Christian Forster這位大神,感興趣的同學可以收集他的論文來看。
1.IMU是什麼:
IMU中文名叫慣性測量單元,英文名:Inertial measurement unit,簡稱 IMU。簡單理解就是這個東東可以測量兩個東西,加速度
2.IMU能幹什麼:
在純視覺的slam或者vo中,由於圖像的運動模糊、遮擋、快速運動、純旋轉、尺度不確定性的一系列問題,導致僅靠一個攝像頭很難完成我們實際場景的應用需求,而IMU直接可以得到運動主體自身的角速度、加速度的測量數據,從而對運動有一個約束,或者說與視覺形成互補,可實現快速運動的定位和主體純旋轉的處理,從而進一步提高slam/vio的可靠性。
3.IMU怎麼用:
IMU每個時刻可實現自身主體加速度
又有運動學方程:
,在區間
將式1、2帶入式3可得:
這裡面有幾個關於SO3上旋轉角度變化量的計算,這部分是有關李羣、李代數的內容,這裡先不講。從式4可以看到,IMU可以乾的事情就是由上個時刻
4.IMU 預積分的作用是什麼?
為了有個清晰的認識,首先說下預計分的作用。大家知道,用IMU的slam、vio演算法有很多,有濾波器的比如MSCKF,有基於圖優化的比如VINS,OKVIS,ORB-SLAM等。就拿ORB-SLAM來說吧, 在bundle adjustment裏,參與對象是keyframe,比如有2個keyframe:
我們可以認為
在緊耦合的優化slam中,IMU就是提供了兩個關鍵幀的相對測量,從而構建誤差函數對關鍵幀姿態的迭代優化。當然實際應用中不會是這麼簡單的形式,這裡面要對各個變數分別求取誤差,然後求雅克比矩陣。
5.IMU 預積分怎麼計算?
這裡主要貼一些關鍵公式,詳細推倒有不懂得地方可以去閱讀作者的補充材料,這裡面可能需要補充些李羣,李代數的知識,後續我也會把相關常用的一些數學公式結論整理出來。
假設有兩個關鍵幀,分別是
上式中
上式中:
我們都知道,在g2o優化中,一般我們的KF的狀態量是由5量構成,其中是:
對旋轉增量
上訴公式有不明白的地方可以返回原文找到對應公式即可容易推導得出,
結合式6,得到IMU預積分的誤差模型:
接下來,介紹如何應用更新後的Bias來更新IMU的預積分誤差模型,如果bias的更新:
那麼,這個式9就最終解答了我們的疑惑,告訴了我們在BA優化得到新的bias之後怎麼去計更新預積分的狀態增量。至於其中如何去求雅克比,這裡原作者有個補充材料講的很清楚,這裡就不再進行介紹了。
結尾:由於本人水平有限,某些觀點可能不嚴謹,或者有表述錯誤的地方請大家見諒。
參考文獻:
Forster, Christian, et al. "IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation." Georgia Institute of Technology, 2015.
Forster, Christian, et al.Supplementary material to: IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation. Georgia Institute of Technology, 2015.
推薦閱讀: