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 数据流

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值