VINS-mono 初探

1.簡介

1.1 簡要描述

  • Vins-mono是香港科技大學開源的一個VIO算法,https://github.com/HKUST-Aerial-Robotics/VINS-Mono,是用緊耦合方法實現的,通過單目+IMU恢復出尺度,效果非常棒。

VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator 的設計思路主要突出兩點:

  1. 針對於單目的魯棒性很強的VIO 系統
  2. 通用性很強的VIO框架

1.2 vins-mon 概述

解讀vins-mono

  • 首先 Measurement Preprocessing (Vision Processing Front End + IMU Preintegration Processing)開始 ;
    負責提取並跟蹤每個新圖像幀的特徵,及幀間IMU數據預積分。
  • 然後通過一個鬆耦合的方式來做初始化;
    提供了激活非線性系統的必要初始值,如姿態、速度、重力向量、陀螺儀偏差及3D特徵位置。
  • 再通過一個緊耦合的方式來做 Local Visual-inertial Odometry;
    通過聯合優化所有的視覺、慣性信息求解滑窗內的狀態。

下面爲整個工程的流程圖:
在這裏插入圖片描述

1.3 各文件夾功能

文件夾 主要功能
ar_demo 視覺定位的一個小demo
benchmark_publisher 訂閱估計的estimated_odometry, 然後與 . csv_files 中的groundtruth對比
camera_model 訂閱相機的話題,保存成圖片,用於相機校準,支持魚眼相機,針孔相機
config 配置參數文件
feature_tracker 使用光流法追蹤特徵點
pose_graph 後端優化
support_files 幫助文檔、Bow字典、Brief模板文件
vins_estimator 狀態估計

1.4 算法模塊

  1. 預處理
    圖像特徵光流跟蹤
    IMU數據預積分
  2. 初始化
    純視覺Sfm
    Sfm與IMU積分的鬆耦合
  3. 基於滑動窗口的非線性優化實現緊耦合
  4. 迴環檢測與重定位
  5. 四自由度位姿圖優化

Measurement Preprocessing 過程

  • Visual Preprocessing 每一幀圖像特徵點提取和 KLT稀疏光流追蹤
  • IMU Preprocessing 兩幀圖像之間IMU預積分
  • Keyframe Selection

2. 運行

2.1 ros運行

  • roscore
  • rosbag play MH_01_easy.bag --clock
  • roslaunch vins_estimator euroc.launch
  • roslaunch vins_estimator vins_rviz.launch

2.2 數據流

在這裏插入圖片描述

發佈了95 篇原創文章 · 獲贊 107 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章