VINS_mono 代码详细理解(一)

一、运行命令

VINS_mono 代码详细理解(一)_第1张图片

二、简介

VINS_mono 的代码是基于ROS写的,将slam的各个功能都封装成一个个功能包,相互之间通过发布和订阅的方向进行通信。
具体的每个功能包的内容:
VINS_mono 代码详细理解(一)_第2张图片
三、VINS_mono代码整体框架
VINS_mono 代码详细理解(一)_第3张图片
VINS-mono是香港科技大学开源的VIO算法,单目相机+IMU
VINS的功能模块分为五个部分,分别是数据预处理、初始化、后端非线性优化、闭环检测、闭环优化。

四、feature_tracker 功能包

VINS_mono 代码详细理解(一)_第4张图片

(注:对于img_callback这里没有完全展示,要是需要更具体的可以评论)

接下来是我自己总结的关于feature_tracker功能包实现的大致过程:
1.第一帧图像进行,角点没有速度信息,如果第一帧图像有特征点,调用opencv封装好的函数,进行光流追踪,最后可以输出当前帧提取到的角点,以及光流是否追踪成功的状态量status,之后利用status提出追踪失败的点,到这个位置如果不需要将信息发布给后端,那么这部分功能就结束,将当前帧的信息赋值给上一帧。
2. 若信息需要发布,则需要进行接下来的操作,利用随机采样一致性,在此对追踪的角点进行剔除,即利用opencv封装好的函数计算F矩阵,函数输出status,利用status剔除部分错误的点;接下来利用setMask函数,达到特征点均匀化的目的;最后,调用opencv的goodFeatureToTrack()函数提取感兴趣区域的角点,将提取出的角点加入到当前帧特征点容器中forw_pts,至此,将信息封装发布。

五、vins_estimator功能包

VINS_mono 代码详细理解(一)_第5张图片

未完。。。。

你可能感兴趣的:(slam,自动驾驶,计算机视觉,人工智能)