跟踪线程是ORB-SLAM的核心模块之一,负责实时估计相机的位姿。它通过处理连续帧之间的特征点匹配,结合参考关键帧和恒速模型,保证系统的稳健性和实时性。此外,当跟踪失败时,通过重定位机制恢复系统,并结合地图线程进行同步更新。本章将围绕跟踪线程的主要流程、参考关键帧跟踪、恒速模型跟踪、重定位跟踪及同步地图跟踪进行详细探讨。
6.1 跟踪线程整体流程
跟踪线程的整体流程可分为以下几个阶段:
6.1.1 初始化
-
第一帧处理
- 提取ORB特征点和描述子,记录初始帧信息。
- 对单目相机,需进行地图初始化(参考第3章)。
-
后续帧输入
- 每一帧的输入包括图像、时间戳(对于视觉惯性系统,还包括IMU数据)。
6.1.2 位姿估计
-
特征点匹配
- 与上一帧的地图点匹配,获取初始估计。
- 如果匹配点不足,切换到参考关键帧或恒速模型。
-
初始位姿估计
- 使用PnP算法或恒速模型估计位姿。
- 位姿优化:通过最小化重投影误差优化初始估计。
6.1.3 位姿优化与地图更新
-
局部BA优化
对当前帧位姿和地图点进行局部捆绑调整。 -
关键帧判定
- 根据场景变化和运动情况,判断是否需要添加新的关键帧。
-
地图点更新
- 剔除跟踪失败或误差过大的点,保持地图的稀疏性和精度。
6.2 参考关键帧跟踪
参考关键帧跟踪是ORB-SLAM中稳定性的重要保证。当前帧与参考关键帧之间的匹配帮助系统维持跟踪,尤其在场景特征较少或运动剧烈的情况下。
6.2.1 参考关键帧的选择
- 定义:参考关键帧是系统在建图时选取的一组代表性帧。
- 选择标准:
- 与当前帧重叠最多的关键帧。
- 视角变化和特征点数量在一定范围内。
6.2.2 匹配过程
-
匹配地图点
- 当前帧ORB特征与参考关键帧的地图点进行描述子匹配。
- 使用粗匹配和精匹配两步减少误匹配。
-
位姿估计与优化
- 通过匹配点计算初始位姿估计。
- 使用优化方法(如Levenberg-Marquardt)调整位姿,最小化重投影误差。
6.2.3 挑战与改进
- 参考关键帧过时问题
在动态场景中,长期使用同一关键帧可能导致匹配失败。动态更新参考关键帧有助于提高鲁棒性。 - 误匹配问题
引入基于深度学习的特征匹配算法(如SuperPoint)进一步提高匹配准确率。
6.3 恒速模型跟踪
恒速模型利用相机的上一帧运动状态,预测当前帧的位姿,是跟踪线程中一种高效且轻量化的方法。
6.3.1 恒速模型的原理
-
假设
假设相机运动是线性且恒定的,即:T t = T t − 1 ⋅ Δ T T_t = T_{t-1} \cdot \Delta T Tt=Tt−1⋅ΔT
其中 T t T_t Tt 是当前帧位姿, Δ T \Delta T ΔT 是上一帧的运动增量。
-
预测过程
- 使用上一帧的位姿变化作为预测增量。
- 初始化当前帧位姿。
6.3.2 跟踪流程
-
特征点匹配
- 在预测位姿下,将地图点投影到当前帧图像平面。
- 使用描述子匹配寻找观测到的地图点。
-
优化调整
- 以预测位姿为初值,最小化重投影误差,得到优化位姿。
6.3.3 优势与局限性
- 优势:
- 计算量小,适合实时性要求高的场景。
- 在短时间内保持稳定的跟踪效果。
- 局限性:
- 对非线性运动(如急转弯、剧烈加减速)鲁棒性较低。
- 对动态场景的适应性较差。
6.4 重定位跟踪
当系统发生跟踪丢失时,重定位模块通过与历史关键帧的匹配恢复位姿,是ORB-SLAM的一个重要容错机制。
6.4.1 跟踪丢失的检测
- 跟踪失败的标志:
- 匹配的地图点数量过少。
- 优化误差超过阈值。
6.4.2 重定位流程
-
候选关键帧检索
- 使用视觉词袋模型快速检索与当前帧最相似的关键帧。
-
粗匹配与位姿估计
- 粗匹配:通过ORB特征描述子进行匹配。
- 位姿估计:使用PnP方法计算当前帧与候选关键帧的相对位姿。
-
优化与验证
- 使用RANSAC剔除误匹配。
- 通过位姿优化验证重定位的成功性。
6.4.3 挑战与改进
- 复杂场景重定位
在动态或重复纹理的场景中,传统ORB特征匹配效果较差。引入深度学习方法,如基于CNN的全局图像特征,可以显著提高重定位效果。
6.5 局部地图跟踪
跟踪线程与地图线程同步更新,保证了系统的时效性和一致性。
6.5.1 同步过程
-
获取地图更新
- 跟踪线程从地图线程获取最新的地图点和关键帧信息。
-
实时跟踪更新
- 在局部地图内搜索可见点,进行匹配和位姿优化。
-
关键帧共享
- 跟踪线程生成的关键帧传递给地图线程进行融合和优化。
6.5.2 优化与调整
- 局部BA优化
跟踪线程的局部BA仅优化当前帧与相邻关键帧,而地图线程的全局BA进行全局优化。
6.5.3 挑战与改进
- 延迟问题
在高帧率场景中,跟踪与地图更新可能存在同步延迟。采用多线程优化技术可以提高系统响应速度。 - 动态场景地图更新
动态物体的地图点可能干扰跟踪效果。通过动态物体分割和剔除机制,提升同步地图的精度。
通过对跟踪线程的整体流程及各子模块的详细讨论,可以看出ORB-SLAM的跟踪线程不仅要保证实时性和精度,还需通过多种容错机制和动态调整应对复杂的实际场景。这些机制的协同作用使得ORB-SLAM在各类应用中表现出色。