VINS(一)簡介與代碼結構

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

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

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

系統pipeline

 

主要分爲五部分框架

1. 傳感器數據處理:優化

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

2. 初始化:blog

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

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則是融合系統的主要部分。

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

processImage():

相關文章
相關標籤/搜索