VINS-Mono-1-前端

Catalogue
  1. 1. VINS-Mono整体架构
    1. 1.1. 架构
    2. 1.2. ROS基础
    3. 1.3. 整体代码流程图
  2. 2. 前端
    1. 2.1. 处理图片流程
      1. 2.1.1. 直方图均衡化
      2. 2.1.2. 光流跟踪
      3. 2.1.3. 异常点剔除——基础矩阵法
      4. 2.1.4. 特征点提取
      5. 2.1.5. 前端发布消息
    2. 2.2. 根据时间戳挑选观测数据
      1. 2.2.1. 挑选策略
    3. 2.3. 前端视觉+IMU联合优化
      1. 2.3.1. IMU预积分

VINS-Mono整体架构

架构

ROS基础

整体代码流程图

前端

处理图片流程

这里的cur_img实际上是上一帧,只是它在这里是这样定义而已。

  • 假设第一帧跟踪了5个点
  • 第二帧,跟踪到了0,1,2,4号点,另外有新的特征点5
  • 可以看到,特征点0,1,2,4同时被第一帧和第二帧观测到,因此被观测次数是2
  • ...

直方图均衡化

代码中是直接调用Opencv函数来处理的,用来增强对比度

  • 参数越大,对比度越大,噪点越多

光流跟踪

也是直接调用Opencv函数

异常点剔除——基础矩阵法

也是直接调用Opencv函数

特征点提取

也是直接调用Opencv函数

前端发布消息

根据时间戳挑选观测数据

getMeasuments()

挑选策略

前端视觉+IMU联合优化

简单来说,就是使用IMU数据来给视觉提供初始位姿,来进行跟踪

IMU预积分

  • 根据两帧图像之间的所有IMU数据,来计算IMU约束(预积分)
  • 然后计算IMU预积分误差residual,下图黄色框部分

IMU预积分误差的协方差矩阵

IMU预积分误差协方差更新公式

协方差更新变化过程

第0帧

第1帧

...

第20帧

IMU预积分误差的雅可比更新变化过程