VINS-mono閱讀筆記

VINS-mono是當前常用的VIO框架之一,出自港科大的沈劭劼老師團隊。VINS-mono是基於優化的緊耦合方案,精度、速度、魯棒性俱佳。

1、整體框架

在這裏插入圖片描述
從上圖可得,VINS-mono可以分爲4個部分,跟蹤、初始化、滑窗優化、迴環優化。

2、跟蹤

2.1、視覺跟蹤

這裏採用的是光流跟蹤的前端,一般過程是通過特徵點匹配獲得本質矩陣或者基礎矩陣,然後恢復出R,t;之後再將特徵點三角化,後面就可以通過pnp求解位姿。

對於關鍵幀的選擇有以下兩個準則:
1、當前幀相對最近的關鍵幀的特徵平均視差大於一個閾值就爲關鍵幀(因爲視差可以根據平移和旋轉共同得到,而純旋轉則導致不能三角化成功,所以這一步需要IMU預積分進行補償)
2、當前幀跟蹤到的特徵點數量小於閾值視爲關鍵幀,這個標準是爲了避免完全喪失特徵的情況

2.2、IMU預積分

根據IMU中陀螺儀和加速度計的測量方程:
在這裏插入圖片描述
可以得到k+1時刻,IMU位置、速度、姿態的積分公式:
在這裏插入圖片描述
上面的積分公式中,RtwR_t^w爲t時刻的世界座標系姿態。作爲待優化變量,在每次更新後就意味着重新積分。爲了減少計算量,預積分的結果被轉換到相對位姿,即:
在這裏插入圖片描述
相應的積分項爲:
在這裏插入圖片描述
離散化形式:
在這裏插入圖片描述

3、初始化

在這裏插入圖片描述
這裏需要標定陀螺儀的偏差,重力加速度,相機與IMU之間的相對位姿。

3.1、SfM

首先需要利用SfM獲得一段較精確的圖像估計位姿。

3.2、標定陀螺儀的偏移

由於旋轉不受尺度影響,可以根據下面的約束獲得陀螺儀的偏移δbw\delta b_w
在這裏插入圖片描述
在求得偏移後,需要重新計算IMU預積分。
具體過程可參考:https://xhy3054.github.io/vins-gyro-bias/

3.3、標定速度、重力加速度和尺度

待標定的所有變量:
在這裏插入圖片描述
根據位置和速度的預積分公式
在這裏插入圖片描述
轉化爲:
在這裏插入圖片描述
求解下式即可
在這裏插入圖片描述

3.4、重力修正

一般情況下,重力的模值是固定的,所以重力向量只有兩個自由度。可以據此對上面的變量進一步優化。
具體過程參考:https://xhy3054.github.io/vins-scale-gravity-velo/

4、滑窗優化

待優化變量爲:
在這裏插入圖片描述
殘差項:
在這裏插入圖片描述
這裏的殘差項包括邊緣化誤差、IMU測量誤差、視覺測量誤差。

  • IMU測量誤差:
    在這裏插入圖片描述
  • 圖像測量誤差:
    在這裏插入圖片描述
  • 邊緣化誤差:
    原文中未給出公式

5、迴環優化

目標函數:
在這裏插入圖片描述
位姿圖中的優化變量僅有如下的4個自由度,因爲橫滾角和俯仰角對於IMU是可觀的。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章