VINS-Mono和VINS-Mobile是香港科技大學沈劭劼團隊開源的單目視覺慣導SLAM方案。是基於優化和滑動窗口的VIO,使用IMU預積分構建緊耦合框架。而且具有自動初始化,在線外參標定,重定位,閉環檢測,以及全局位姿圖優化功能。node
方案最大的貢獻是構建了效果很好的融合算法,視覺閉環等模塊卻是使用了較爲常見的算法。算法
系列博客將結合課題組發表的paper,從代碼層面,逐步剖析系統的各個模塊,達到對單目VIO總體的把握,幫助本身理解各種算法,並開發出針對應用場景的視覺慣導SLAM系統。最終目標是使用在AR應用中(Android)。架構
主要分爲五部分框架
1. 傳感器數據處理:優化
2. 初始化:blog
3. 基於滑動窗口的非線性優化:ip
4. 閉環檢測:開發
5. 4自由度全局位姿圖優化:博客
主要依賴的庫只有OpenCV, Eigen和Ceres Solver,代碼目錄以下qt
核心算法都在feature_tracker和vins_estimator包中。
按照REDEME步驟跑EuRoC/MH_05_difficult.bag錄好的數據結果以下:
使用rqt_graph獲得系統的node和topic關係:
rosbag將記錄好的imu數據和單目相機獲取的圖像數據分別發佈到/imu0和/cam0/image_raw話題;/feature_tracker節點經過訂閱/cam0/image_raw話題獲取圖像數據,/vins_estimator節點經過訂閱/imu0話題獲取imu數據,同時/feature_tracker節點將提取出的圖像特徵發佈到/feature_tracker/feature話題,由/vins_estimator訂閱獲取。
所以,/feature_tracker節點負責視覺提取和跟蹤,/vins_estimator則是融合系統的主要部分。
爲了方便看代碼,整理了一下各個部分架構圖(更新中):