VINS-Mono算法代码解读

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

个人注释版本的代码链接如下
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)]

vins_estimator 模块

主要的执行函数如下

  • 单独线程 void process();
  • IMU数据回调函数 imu_callback
  • 特征点数据回调函数 feature_callback<
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值