VINS(一)簡介與代碼結構


VINS-Mono和VINS-Mobile是香港科技大學沈劭劼團隊開源的單目視覺慣導SLAM方案。是基於優化和滑動窗口的VIO,使用IMU預積分構建緊耦合框架。並且具備自動初始化,在線外參標定,重定位,閉環檢測,以及全局位姿圖優化功能。

方案最大的貢獻是構建了效果很好的融合算法,視覺閉環等模塊倒是使用了較為常見的算法。

系列博客將結合課題組發表的paper,從代碼層面,逐步剖析系統的各個模塊,達到對單目VIO整體的把握,幫助自己理解各類算法,並開發出針對應用場景的視覺慣導SLAM系統。最終目標是使用在AR應用中(Android)。

系統pipeline

 

主要分為五部分

1. 傳感器數據處理:

  • 單目相機Monocular Camera: Feature detection and Tracking
  • IMU: Pre-integration

2. 初始化:

  • 僅使用視覺構建SfM
  • 將SfM結果和IMU預積分結果對齊

3. 基於滑動窗口的非線性優化:

4. 閉環檢測:

5. 4自由度全局位姿圖優化:

 

主要依賴的庫只有OpenCV, Eigen和Ceres Solver,代碼目錄如下

 

核心算法都在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則是融合系統的主要部分。

為了方便看代碼,整理了一下各個部分架構圖(更新中):

processImage():


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM