src_orbslam_slam_orb-slam_源码
ORB-SLAM 基本延续了 PTAM 的算法框架但对框架中的大部分组件都做了改进 归纳起来主要有 4 点: ORB-SLAM 选用了 ORB 特征 基于 ORB 描述量的特征匹配和重定位 都比 PTAM 具有更好的视角不变性。此外 新增三维点的特征匹配效率更高 因此能更及时地扩展场景。扩展场景及时与否决定了后续帧是否能稳定跟踪。ORBSLAM 加入了循环回路的检测和闭合机制 以消除误差累积。系统采用与重定位相同的方法来检测回路(匹配回路两侧关键帧上的公共点) 通过方位图 (Pose Graph) 优化来闭合回路。PTAM 需要用户指定 2 帧来初始化系统 2 帧间既要有足够的公共点 又要有足够的平移量. 平移运动为这些公共点提供视差 (Parallax) 只有足够的视差才能三角化出精确的三维位置。ORB-SLAM 通过检测视差来自动选择初始化的 2 帧。PTAM 扩展场景时也要求新加入的关键帧提供足够的视差 导致场景往往难以扩展. ORB-SLAM 采用一种更鲁棒的关键帧和三维点的选择机制——先用宽松的判断条件尽可能及时地加入新的关键帧和三维点 以保证后续帧的鲁棒跟踪; 再用严格的判断条件删除冗余的关键帧和不稳定的三维点,以保证 BA 的效率和精度。