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 的
後面會寫一個自己的總結。
相機的內參標定使用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資料集