2025年4月7日 星期一

VINS (Visual-Inertial System) 的說明


VINS,全稱為視覺慣性系統 (Visual-Inertial System)

指的是一種利用視覺感測器 (通常是相機) 和慣性測量單元 (IMU) 的數據融合技術,

來實現精確的即時定位與地圖建構 (SLAM) 或僅僅是即時定位 (Visual-Inertial Odometry, VIO)

核心概念與優勢:

VINS 的核心思想是結合視覺和慣性兩種感測器的優勢,互補彼此的不足,從而獲得更魯棒、更精確的運動估計和環境地圖。

  • 互補性:
    • 視覺感測器 (相機): 可以提供豐富的環境紋理資訊,用於特徵提取和匹配,從而估計相機的運動和環境的結構。視覺 SLAM 在環境紋理豐富時表現良好,可以提供尺度資訊 (對於雙目或 RGB-D 相機)。然而,它在光照變化劇烈、快速運動、缺乏紋理或視角變化過大時可能失效。單目視覺 SLAM 本身存在尺度不確定性。
    • 慣性測量單元 (IMU): 可以提供高頻率的線性加速度和角速度測量,對快速運動非常敏感,並且不受環境紋理和光照變化的影響。IMU 可以提供短時間內精確的相對運動估計。然而,IMU 的測量會隨著時間累積漂移誤差,導致長時間的定位不準確。
  • 融合優勢:
    • 提高魯棒性: 當視覺追蹤失敗時 (例如,快速運動、模糊、遮擋),IMU 的高頻率慣性數據可以提供運動估計,維持系統的運作。
    • 提高精度: 視覺資訊可以約束和校正 IMU 的漂移誤差,而 IMU 可以為視覺追蹤提供更好的運動先驗,加速收斂並提高準確性。
    • 尺度確定 (部分情況): 結合 IMU 的加速度資訊,單目視覺慣性 SLAM 可以在一定程度上解決尺度不確定性問題。對於雙目或 RGB-D 相機,IMU 的融合可以進一步提高尺度估計的準確性。
    • 高頻率運動估計: IMU 的高採樣率使得 VINS 系統可以提供比純視覺 SLAM 更高頻率的運動估計。
    • 更好的初始化: IMU 數據可以幫助 VINS 系統更快速、更魯棒地完成初始化過程。

VINS 的主要組成部分 (以 VINS-Mono 為例):

雖然不同的 VINS 演算法在細節上有所不同,但通常包含以下幾個核心部分:

  1. 前端 (Front-end):

    • 視覺處理: 負責從相機影像中提取和追蹤視覺特徵點 (例如,角點、描述子)。常用的方法包括 KLT 光流追蹤、特徵點匹配等。
    • IMU 預積分 (IMU Pre-integration): 將連續兩幀影像之間的 IMU 測量值進行積分,得到相對運動的約束 (例如,相對旋轉、速度變化、位置變化)。預積分技術可以避免在每次優化時都重新積分 IMU 數據,提高了效率。
    • 外參標定 (Extrinsic Calibration): 需要精確地知道相機和 IMU 之間的相對位置和旋轉關係。這是 VINS 系統的關鍵步驟。
  2. 初始化 (Initialization):

    • 在系統啟動時,由於缺乏初始的運動和環境資訊,需要一個初始化過程來估計初始的相機姿態、速度、重力方向和尺度 (對於單目 VINS)。通常會利用純視覺的 Structure-from-Motion (SfM) 或結合 IMU 數據來完成。
  3. 後端 (Back-end):

    • 非線性優化 (Non-linear Optimization): 將前端得到的視覺重投影誤差和 IMU 預積分誤差作為約束,構建一個基於圖的最佳化問題 (通常使用滑動視窗法)。透過非線性最佳化演算法 (例如,Bundle Adjustment、Levenberg-Marquardt) 來同時優化相機的姿態、速度、IMU 的偏差和環境地圖點。
    • 滑動視窗 (Sliding Window): 為了保證即時性,VINS 通常採用滑動視窗的策略,只保留最近一段時間的關鍵幀和地圖點進行優化,並將舊的資訊邊緣化 (Marginalization) 以保持一致性。
  4. 迴路閉合 (Loop Closure) (可選):

    • 當系統檢測到重新回到之前訪問過的地方時,會建立一個迴路閉合的約束,用於消除累積的漂移,提高地圖的全局一致性。迴路閉合通常基於視覺詞袋模型 (Bag-of-Words) 或其他場景識別技術。

常見的 VINS 演算法和開源實現:

  • VINS-Mono: 香港科技大學沈劭劼團隊開源的著名單目視覺慣性 SLAM 系統。以其高精度、魯棒性和完善的初始化和迴路閉合而聞名。
  • VINS-Fusion: 香港科技大學沈劭劼團隊的另一個開源系統,旨在融合多種感測器數據,包括單目、雙目、RGB-D 相機、IMU、GPS 等。
  • ORB-SLAM3: 一個功能強大的 SLAM 函式庫,支援視覺、視覺慣性和多地圖 SLAM,適用於單目、立體和 RGB-D 相機,並包含了 IMU 的融合。
  • ROVIO (Robust Visual Inertial Odometry): 一種基於擴展卡爾曼濾波器 (EKF) 的 VIO 演算法,常應用於無人機。
  • OpenVINS: 一個開源的視覺慣性導航框架,提供靈活的架構和可擴展性。
  • NVIDIA Isaac ROS Visual SLAM: NVIDIA 針對機器人應用開發的高效能、GPU 加速的 VSLAM/VIO 套件。

總結:

VINS 是一種先進的感測器融合技術,透過緊密結合視覺和慣性數據,克服了單一感測器的局限性,實現了更準確、更魯棒的即時定位和地圖建構。它在機器人、無人機、擴增實境、虛擬實境等領域有著廣泛的應用前景。

沒有留言:

張貼留言