Open Source Robotics

精選高品質的開源機器人專案、工具與軟體,推動機器人社群向前發展。

IMU Preintegration

  • 又稱: preintegrated IMU factor, on-manifold preintegration
  • 類別: State estimation & navigation › Localisation
  • 標籤: imu, state-estimation, factor-graphs, sensor-fusion, slam

把兩個關鍵影格之間的大量 IMU 取樣,合併成一個不依賴其絕對狀態的相對運動量測,如此一來,估測值改變時最佳化器就不必重新積分。

定義

IMU 產生加速度計與陀螺儀取樣的頻率,遠高於相機或光達產生影格的頻率。在以最佳化為基礎的估測器中,若每個 IMU 取樣都增加一個狀態,問題規模會過於龐大;但單純把取樣積分成姿態,又有另一個問題:結果取決於起始的方向、速度與偏差,而這些量本身正在被估測。最佳化器每改變一次這些量,整段 IMU 資料就得重新積分。IMU 預積分(IMU preintegration)的做法是在第一個狀態的本體座標系中,對兩個狀態之間的量測進行積分,得到旋轉、速度與位置的相對變化量,這些變化量與起始姿態和速度無關,因而避開了這個問題。

Lupton 與 Sukkarieh 為視覺慣性導航提出了預積分(2012),Forster、Carlone、Dellaert 與 Scaramuzza 則在旋轉流形上重新表述(2015,2017 年延伸);如今大多數因子圖系統採用的正是這個表述。重力另外處理:在把預積分項與兩個狀態比較時再加回去。對偏差的相依性以一階修正處理:積分過程中,此方法也會累積預積分量對陀螺儀與加速度計偏差的雅可比矩陣,因此偏差估測的小幅變化可以低成本地更新量測。合成量測的共變異數會一併傳播,這提供了因子的權重。若偏差估測偏離積分時所用的值太多,就重新積分。

結果是在因子圖中相鄰關鍵影格之間的一個 IMU 因子,連接它們的姿態、速度與偏差,通常還搭配一個為偏差緩慢隨機漫步建模的因子。正是這一點,讓 IMU 資料能實際保留在滑動視窗估測器與完整平滑估測器之中,例如 VINS-Mono、ORB-SLAM3 的慣性模式、LIO-SAM 與 LVI-SAM。精度仍取決於提供給因子的 IMU 雜訊與偏差參數、與其他感測器的時間同步,以及離散積分方式,該方式假設量測值在取樣之間維持不變或只做簡單的變化。

為何重要

沒有預積分,緊耦合的視覺慣性與光達慣性最佳化就會慢到無法在機器人上即時執行。正因為有它,IMU 資料才能與相機、光達及其他量測並列在同一個因子圖中。

主要應用

  • 視覺慣性里程計與 SLAM 後端
  • 光達慣性里程計與建圖
  • 在因子圖中將 IMU 資料與 GPS、雷達或輪式里程計融合
  • 線上估測加速度計與陀螺儀偏差
  • 相機-IMU 與光達-IMU 校正

實際應用

一位開發者使用 GTSAM,以 IMU 的雜訊密度與偏差隨機漫步數值建立一個預積分物件,這些數值取自規格書,或來自對記錄資料所做的艾倫變異數分析。兩個關鍵影格之間的每個 IMU 取樣都會送入其中,下一個關鍵影格到來時,累積的結果就成為一個 IMU 因子,連接兩個關鍵影格的姿態、速度與偏差變數。之後最佳化器更新偏差時,此因子使用其儲存的雅可比矩陣,而不必重新處理這些取樣。以其他感測器(例如透地雷達)定位的系統,也用同樣的因子在頻率較低的雷達量測之間連接姿態。

常見誤解

  • 預積分消除了 IMU 漂移 — 它只是重新安排積分;雜訊與偏差誤差仍然存在,必須由其他感測器約束
  • 預積分量測一旦算出就固定不變 — 它取決於偏差估測,偏差會以一階方式修正,若偏差變化很大就需要重新積分
  • 預積分只是加速的技巧 — 它還提供正確傳播的共變異數,正是這一點讓最佳化器能在 IMU 資料與其他感測器之間權衡

誰需要了解

  • SLAM 與視覺慣性里程計開發者
  • 狀態估測工程師
  • 無人機與足式機器人導航工程師
  • 使用因子圖函式庫建構估測器的研究人員

相關技術

  • GTSAM
  • 艾倫變異數(Allan Variance)
  • 李群(Lie Groups)
  • VINS-Mono
  • LIO-SAM
  • 慣性導航系統(Inertial Navigation Systems)

相關術語

  • IMU
  • Factor Graph
  • Visual-Inertial Odometry
  • Tightly Coupled Sensor Fusion
  • Keyframe
  • LiDAR Odometry

相關專案

  • LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
  • oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
  • Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
  • OpenCat: An open-source Arduino and Raspberry Pi-based quadruped robot pet framework
  • FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
  • DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required

本網站需要 JavaScript 才能正常運作。請啟用 JavaScript 以瀏覽我們的開源機器人專案。