VINS在最近一年来,可谓是大热,席卷全国slam界,相关的原理代码、解析也是层出不穷,在下不才,也准备将个人的理解整理出来,与大家分享,如有问题,请大家指教~

本篇将作为一个长文进行更新,一次写完,朕干不动呀

一、系统框架

VINS的系统框架如下图: vins系统框架

系统主要分为五个部分:

  1. 传感器数据处理
    • 单目相机
    • IMU
  2. 初始化
    • Vision-only SFM
    • Visual-Inertial Alignment
  3. Local BA
  4. global pose graph opmization

程序的主要接口如下: vins接口

如图所示,VINS-MONO系统建立了三个节点,分别为feature_tracker、 vins_estimator。
feature_tracker_node 只有一个主线程,接受图像,处理图像,发布feature信息。
esimator_node中开了3个子线程,包括 图像处理,loop_detection和 pose_graph.

注: 本图是老版本的节点关系图。 新版本的代码esimator_node只有一个线程,新开辟了一个 pose_graph 线程来完成闭环检测,后面的讨论会以新版本为准。

二、特征跟踪

VINS的特征跟踪在featurea_tracker_node进行处理,具体实现了 feature_tracker_node 具体实现了图像的预处理以及光流.

Topic Type Description
Subsricbe imgage Sensor_msgs::ImageConstPtr 相机原始图片
Publish feature Sensor_msgs::PointCloud 跟踪的特征点,给estimator
Publish featre_img Sensor_msgs::Image 跟踪的特征点图片,给RIVZ,显示

恩,这次就先断在这里把~