1.内容简介
本系列文章主要基于ORB-SLAM3代码、论文以及相关博客,对算法原理进行总结和梳理。
ORB-SLAM系列整体架构是不变的,都包含Tracking、LocalMapping和LoopClosing三个核心线程,中间伴随着优化过程。在ORB-SLAM3算法中比较突出的改进有两个:
- 引入IMU传感器,系统支持单目+IMU,双目+IMU和RGBD+IMU等三种模式
- 引入地图集Atlas这个概念,支持多个子地图并存,以及地图的保存和加载

2. 跟踪线程Tracking
跟踪线程是算法的核心模块,输入一帧数据(双目指左右目图像,IMU模式下还包括时间戳上想对应的一组IMU数据),然后返回该帧对应的相机位姿,同时根据跟踪情况创建关键帧并传递给局部建图线程。跟踪线程主要包括以下几个模块:
- 纯视觉初始化:初始化第一帧图像位姿,将特征点三角化为3D地图点并初始化地图,主要包括单目初始化和双目初始化;IMU模式下还需要在局部建图线程进一步完成视觉与IMU的联合初始化
- 帧间跟踪:帧间跟踪包括跟踪运动模型和跟踪参考关键帧两部分,当环境比较友好系统跟踪比较顺利时仅通过跟踪运动模型即可获得较好的匹配关系,只有当跟踪运动模型得到的内点数量较少时才会跟踪参考关键帧
- 跟踪局部地图:局部地图的信息来自局部建图线程,主要将局部地图中的3D地图点投影到当前帧,进一步对当前帧位姿进行优化
- 重定位模块(当跟踪到的匹配点比较少时判定系统跟踪失败,此时调用重定位)
- 创建关键帧(围绕两个核心原则,当间隔时间比较长以及跟踪到的匹配点数量较少时创建关键帧)
在跟踪线程代码还设置了纯定位模式,但是经过实测即使在有先
1万+




被折叠的 条评论
为什么被折叠?



