ORB-SLAM2学习笔记(1)——ORB-SLAM2简介

文章目录

  • 一、ORB-SLAM2简介
  • 二、ORB-SLAM2特点
  • 三、算法流程框架
    • 1.主体框架
    • 2.数据输入的预处理


一、ORB-SLAM2简介

ORB-SLAM2是一个支持单目、双目、RGB-D相机的开源SLAM框架,能够实时计算相机的位姿并同时对周围环境稀疏三维重建,并且在双目和RGB-D模式下可以得到真实尺度信息。它能够在CPU上做到实时的回环检测和重定位。代码提供提供ROS版本和不带ROS两个版本,并且有在 SLAM 模式和本地化模式之间切换的 GUI。可以说,ORB-SLAM2是特征点法的巅峰之作,定位精度极高,可达厘米级。ORB-SLAM2在TUM数据集上的表现如下图:

ORB-SLAM2学习笔记(1)——ORB-SLAM2简介_第1张图片

PDF论文下载地址

GitHub源码地址

二、ORB-SLAM2特点

  • 首个支持单目、双目和RGB-D相机的完整的开源SLAM方案,具有回环检测和重定位功能。
  • 能够在CPU上实时工作,可用于移动终端如移动机器人、手机、无人机、汽车。
  • 能够实时计算出相机位姿,并生成场景的稀疏三维重建地图。
  • 代码整洁易读,包含很多实际应用中的技巧,适合新手入门阅读。
  • 支持仅定位模式,该模式适合在轻量级以及地图已知情况下长期运行,此时不使用局部建图和回环检测线程。
  • 双目和RGB-D可以直接获得深度信息,不需要像单目情况中那样做SFM初始化。

三、算法流程框架

1.主体框架

ORB-SLAM2学习笔记(1)——ORB-SLAM2简介_第2张图片

  • 输入。三种模式可选:单目模式、双目模式和RGB-D模式。
  • 跟踪。初始化成功后首先会选择参考关键帧跟踪,然后大部分时间都是恒速模型跟踪,当跟踪丢失的时候启动重定位跟踪,在经过以上跟踪后可以初步估计位姿,然后经过局部地图跟踪对位姿进行进一步优化。同时会根据条件判断是否需要当前帧新建为关键帧。
  • 局部建图。输入的关键帧来自跟踪线程里新建的关键帧。为增加局部地图点数目,局部地图里关键帧之间会重新进行特征匹配,生成新的地图点,局部BA会同时优化共视图里的关键帧位姿和地图点,优化后也会删除不准确的地图点和冗余的关键帧。
  • 闭环。通过词袋来查询数据集检测是否闭环,计算当前闭环关键帧和闭环候选关键帧之间的sim3位姿,仅在单目时考虑尺度,双目或RGB-D模式下尺度固定为1。然后执行闭环融合和本质图优化,使得所有关键帧位姿更准确。
  • 全局BA。优化所有的关键帧及其地图点。
  • 位置识别。需要导入离线训练好的字典,这个字典是由视觉词袋模型构建的。新输入的图像帧需要先在线转化为词袋向量,主要应用于特征匹配、重定位、闭环。
  • 地图。地图主要由地图点和关键帧组成。关键帧之间根据共视地图点数目组成共视图,根据父子关系组成了生成树。

2.数据输入的预处理

为了兼容不同相机(双目相机与RGB-D相机),需要对输入数据进行预处理,使得交给后期处理的数据格式一致,具体流程如下:
ORB-SLAM2学习笔记(1)——ORB-SLAM2简介_第3张图片

你可能感兴趣的:(自动驾驶,slam,人工智能)