个人注释版本的代码链接如下
https://github.com/linyicheng1/OpenSLAM-Notes/tree/main/VINS-Mono-master
算法分为三个部分,分别在3个独立的ros工程中,分别为 feature_tracker vins_estimator pose_graph
运行算法的launch文件,如euroc.launch中则运行该三个节点,并获取配置文件 config/euroc_config.yaml 路径,传递给各程序
四个模块之间的数据交互(加上可视化数据的RVIZ)

因此,大致的算法思想为feature_tracker模块对图像数据进行处理,得到特征点跟踪信息,vins_estimator为主体程序处理跟踪得到的特征点信息和imu数据,pose_graph则为后端优化以及重定位功能,接下再仔细对每一个模块进行分析
feature_tracker 模块
本模块中核心实现为特征点跟踪类,基本流程为获取得到一帧图片数据转换为opencv格式并控制帧率,最后送入FeatureTracker类中跟踪特征点,最后发布特征点数据。核心调用在于95行的
95:trackerData[i].readImage(ptr->image.rowRange(ROW * i, ROW * (i + 1)), img_msg->header.stamp.toSec());
FeatureTracker类
其中函数readImage的主要流程如下,包含两个较为重要的知识点
- OpenCV函数的光流法如何实现的
- 基础矩阵的鲁棒估计
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PNodgt9E-1614779106378)(https://storage.live.com/items/24342272185BBA7E!4893?authkey=AJzdbBYZIQ_AuAo)]](https://i-blog.csdnimg.cn/blog_migrate/410f9e238b0e3997f30f60f25a2bf727.png)
vins_estimator 模块
主要的执行函数如下
- 单独线程
void process(); - IMU数据回调函数
imu_callback - 特征点数据回调函数
feature_callback<

本文详细解析了VINS-Mono算法的实现细节,包括特征跟踪、位姿估计及位姿图优化等模块。介绍了特征点跟踪流程、预积分计算、滑动窗口管理以及位姿图优化的具体实现。
最低0.47元/天 解锁文章
6328





