1. 程式人生 > >VIO學習研究筆記

VIO學習研究筆記

慣性導航預備知識

1.慣性導航基本模型和思想
2.導航座標系
3.IMU狀態模型
4.IMU運動模型和觀測模型
5.旋轉向量求導,單位四元數
6.IMU觀測噪聲模型
7.科氏加速度
8.高斯白噪聲和隨機遊走模型
9.ECEF參考座標系下的觀測模型以及ECI參考座標系下的觀測模型
10.IMU狀態估計誤差模型

視覺和IMU融合方式

1.基於濾波和基於優化
2.鬆耦合模型和緊耦合模型

預積分

1.使用尤拉積分得到的運動方程的離散形式
2.通過預積分得到IMU的測量模型。

相機標定

相機標定的目的是獲取兩個感測器座標系之間的空間關係資料延遲,是VIO系統工作的前提工作。相機-IMU標定可以看成狀態估計的逆過程,標定是通過標定板獲取每個時刻的精確運動狀態,計算出模型引數(座標系間旋轉位移、時間延遲、IMUbias),而運動估計則是在已知兩個感測器座標系間的模型引數,估計每個時刻的運動狀態。
現有的標定庫:ethz-asl 的

Camera IMU calibration
後面會寫一個自己的總結。

相機的內參標定使用ROS自帶相機標定工具,可以實現線上標定。
IMU內參(陀螺儀加速度計的噪聲引數)標定ethz-asl 的Kalibr 也給了一些說明。

開源框架

VIO目前實現比較好的有
科大的vinsmono,
okvis,
MSCKF
賓夕法尼亞的Kumar實驗室的msckf_vio
ROVIO
注意:在純視覺slam中,學術界已經公認基於非線性優化方法的SLAM方法效果要好於濾波的方法,但是在VIO中,非線性優化和濾波的方法目前還沒有很明顯的優劣之分。所以折中的辦法就是像okvis和vinsmono一樣採用滑動視窗法(globa bundle adjustment和filter的折中)也能取得很好的效果。

Paper

採用流形空間上預積分的方法對IMU資料進行預處理《On-Manifold Preintegration for Real-Time Visual-Inertial Odometry》

2017 年 TASE,《Monocular Visual–Inertial State Estimation With Online Initialization and Camera–IMU Extrinsic Calibration》,sfm 求解相機姿態和 gyro 積分構建rotation約束,從而求解相機imu之間的旋轉外引數,然後固定rotation,求解其他引數,如重力方向,速度,外引數平移,特徵深度等。論文中直接構建一個最小二乘對上述引數進行優化求解。

2017 年 RAL,ORB作者寫的的VIO文章《Visual-Inertial Monocular SLAM with Map Reuse》,主要是利用 IMU 預積分和單目 ORBSLAM 估計的姿態之間構建約束,從而迭代求解 IMU 初始狀態所有引數(甚至包括acc bias),不包括外引數的標定。

2017 年 IROS,《Robust Initialization of Monocular Visual-Inertial Estimation on Aerial Robots》.

2018 年 ICRA,Online Initialization and Automatic Camera-IMU Extrinsic Calibration for Monocular Visual-Inertial SLAM. 求解VIO初始化過程中所有的引數,該論文在 ORBSLAM VIO 的框架下加入了外引數的標定。外引數旋轉和平移的計算則參考沈老師的他們的做法。

2017 年 IROS, Inertial-Based Scale Estimation for Structure from Motion on Mobile Devices. 上面幾篇都是基於 IMU 預積分的, 把短時間內的加速度什麼的積分起來, 然後和視覺算的姿態構建誤差, 優化出那些變數. 這篇論文不一樣, 它是將相機姿態轉換成角速度和加速度,和 imu 測量值去構建誤差. 並且提出了頻域對齊的方法。

資料集

SVO 2.0 Binaries (x86_64/armhf) Available Here:這個包主要包含了單目/雙目/多目 + imu的例子。
EUROC資料集