17.1 跟踪流程流程图
ORB-SLAM3 的跟踪模块是整个系统的重要组成部分,负责实时确定相机在三维空间中的姿态位置,并保持关键帧之间的连续性。其基本目标是将输入的视频流与已有地图数据进行对齐,完成位姿估计和地图更新。
流程图概述
一个典型的 ORB-SLAM3 跟踪流程可以分为以下几个主要步骤:
-
输入数据预处理:
- 接收传感器数据,包括图像帧和 IMU 数据。
- 对图像进行去畸变和特征提取。
- 将 IMU 数据同步到对应的时间戳,以便后续融合。
-
初始匹配:
- 使用提取的 ORB 特征点进行匹配。
- 在已有地图中寻找相应的局部特征点。
-
姿态估计:
- 通过匹配点的重投影误差计算相机的初步姿态。
- 利用 IMU 提供的惯性信息优化位姿估计。
-
地图更新:
- 如果跟踪正常,更新地图点和关键帧。
- 如果跟踪失败,触发重定位模块。
流程图的实现
基于以上逻辑,可以构建一个基本流程图:
- 节点:表示不同的处理阶段。
- 边:表示数据流动与状态变化。 例如:
- 图像帧输入 → ORB 特征提取 → 匹配地图点。
- 匹配失败 → 重定位。
- 匹配成功 → 更新地图点和位姿。
扩展部分:流图优化 在真实实现中,跟踪流程还需充分考虑:
- 实时性:流图应能并行处理多路输入。
- 异常检测:如特征点数量骤减,应引入检测机制调整流程。
ORB-SLAM3 的跟踪流程是一个动态的、实时更新的过程,其流图既直观地表达了数据流动关系,也为开发和调试提供了重要依据。
17.2 跟踪流程的新变化
ORB-SLAM3 相较于早期版本(如 ORB-SLAM2),在跟踪流程中引入了多项新变化。这些变化主要体现在对多模态输入的支持、跟踪失败的恢复机制以及对动态场景的适应性增强上。
17.2.1 新的跟踪状态
ORB-SLAM3 的跟踪模块新增了几种状态,用于更细粒度地处理不同场景:
- 正常跟踪状态:相机位置和姿态能够通过特征匹配和 IMU 融合稳定估计,地图更新顺利进行。
- 部分跟踪状态:当特征点匹配率下降到一定阈值(例如低于 50%),系统进入部分跟踪状态。这时,ORB-SLAM3 会尝试:
- 启用更密集的局部搜索。
- 使用最近的关键帧信息增强匹配。
- 跟踪失败状态:当无法完成位姿估计时,系统标记为失败状态,并触发重定位机制。
- 多模态切换状态(新增):当系统检测到多种数据输入(例如图像 + IMU 或多目输入)时,会动态调整跟踪策略。例如:
- 优先使用图像特征进行匹配。
- 当图像质量下降时,依赖 IMU 提供的姿态预测。
新增的状态管理大幅提升了 ORB-SLAM3 在复杂场景中的稳定性和鲁棒性。
17.2.2 第一阶段跟踪新变化
第一阶段是特征点的提取与初始匹配过程。在 ORB-SLAM3 中,这部分的改进体现在以下几个方面:
-
ORB 特征提取的优化:
- 使用金字塔式提取方法,增强对不同尺度特征的识别能力。
- 在光照变化大的场景下,加入直方图均衡化技术,提升特征点的稳定性。
-
地图点匹配的新策略:
- 引入基于深度学习的特征点匹配辅助模块,用于在遮挡严重时,推断可能的特征点位置。
- 优化局部地图搜索算法,减少特征点搜索的时间复杂度。
-
动态点的剔除:
- 使用运动一致性检查剔除动态特征点,确保初始匹配的准确性。
第一阶段的改进为后续的姿态估计和地图更新奠定了更坚实的基础。
17.2.3 第二阶段跟踪新变化
第二阶段的任务是通过初始匹配结果完成姿态优化。这部分的变化主要集中在 IMU 融合和优化策略上。
-
IMU 融合的新机制:
- 在非线性优化过程中,将 IMU 的加速度和角速度数据引入误差项计算,使优化结果更接近真实值。
- 使用预积分方法减少 IMU 数据处理的计算量,同时提高位姿估计的实时性。
-
全局 BA 优化:
- 在后端优化过程中加入更多约束条件,例如场景结构一致性约束,减少漂移。
第二阶段的改进主要针对动态环境和大规模场景的适应性。
17.2.4 插入关键帧的新变化
ORB-SLAM3 的关键帧插入策略相较于之前版本更加灵活,体现在以下方面:
-
动态关键帧选择:
- 系统不再严格按照固定间隔插入关键帧,而是根据跟踪状态动态调整插入频率。例如:
- 在跟踪正常时,减少关键帧插入频率,节省计算资源。
- 在跟踪部分失效时,增加插入频率,便于恢复。
- 系统不再严格按照固定间隔插入关键帧,而是根据跟踪状态动态调整插入频率。例如:
-
关键帧的优先级评估:
- 系统为每个关键帧分配一个优先级,用于在地图优化时选择重要帧。例如,包含大量动态点的关键帧优先级会降低。
-
IMU 数据的辅助插入:
- 当关键帧间的 IMU 数据累积漂移过大时,系统强制插入新关键帧。
新的关键帧插入策略显著提升了地图构建和优化的效率。