当前位置:   article > 正文

SLAM常用开源方案_slam 算法开源

slam 算法开源

一、历史经典

(一)MonoSLAM(https://github.com/hanmekim/SceneLib2

(二)PTAM(http://www.robots.ox.ac.uk/~gk/PTAM/

Klein等人于2007年提出PTAM(Parallel Tracking And Mapping),PTAM的重要意义:

  • 首次实现了跟踪与建图的并行化,即前后端的并行处理。前端图像跟踪与后端优化独立进行,在必要时刻才进行线程同步即可。

  • 首次使用非线性优化,之前都是使用传统滤波器作为后端。且引入了关键帧机制,把关键图像考虑进来优化轨迹和地图,而非所有图像,再加上认识到了后端优化的稀疏特性,故具有很好的实时特性。
  • PTAM是一个增强现实软件,可以实现AR效果哦。(可以实践一下)

主要缺陷:场景小、跟踪容易丢失等。

二、现代经典

(三)ORB-SLAMhttp://webdiis.unizar.es/~raulmur/orbslam/

ORB-SLAM是PTAM的著名继承者,于2015年提出,是现代最完善和易用的SLAM系统之一。它是主流特征点 SLAM 中成为顶峰,它的代码以清晰易读著称,有着完善的注释,供后来的研究者们进一步理解。其有以下几条优势:

  • 支持单目、双目、RGB-D 三种模式。
  • 整个系统围绕 ORB 特征进行计算,包括视觉里程计与回环检测的 ORB 字典。它体现出 ORB 特征是现阶段计算平台的一种优秀的效率与精度之间的折衷方式。 (可实时运算,具有尺度、旋转不变性,自带描述子)
  • 优秀的回环检测算法可以保证有效防止累计误差,并能够在丢失之后迅速找回。但在运行之前要加载很大的ORB文件。
  • 创新使用了三线程处理实时跟踪特征点的Tracking线程,局部Bundle Adjustment的优化线程(Co-visibility Graph小图),全局Pose Graph的回环检测与优化线程(Essential Graph大图)。(详解:《SLAM十四讲》P363)

  • 针对特征点进行了效果显著的优化:如在 OpenCV 的特征提取基础上保证了特征点的均匀分布;在优化位姿时使用了一种循环优化四遍以得到更多正确匹配的方法;比 PTAM 更为宽松的关键帧选取策略等等。这些细小的改进使得 ORB-SLAM具有很好的鲁棒性,即使对于较差场景,较差的标定内参,都有很好的效果。

ORB-SLAM缺陷:

  • 整个 SLAM 系统都采用特征点进行计算,我们必须对每张图像都计算一遍 ORB 特征,非常耗时。
  • 三线程结构也对 CPU 带来了较重的负担,使得它只有在当前 PC 架构的 CPU 上才能实时运算,移植到嵌入式端则有一定困难。
  • ORB-SLAM 的建图为稀疏特征点,目前还没有开放存储和读取地图后重新定位的功能。
  • 稀疏特征点地图只能满足我们对定位的需求,而无法提供导航、避障、交互等诸多功能。然而,如果我们仅用 ORB-SLAM 处理定位问题,它又有些过于重量级。

(四)LSD-SLAMhttp://vision.in.tum.de/research/vslam/lsdslam

LSD-SLAM(Large Scale Direct monocular SLAM)是J.Engle于2014年提出,是单目直接法在SLAM中应用的标志,可以不计算特征点又可以构建半稠密地图(半稠密即图像像素梯度明显的位置),其优点有:

  • 直接法是针对像素进行的。作者有创见地提出了像素梯度与直接法的关系,以及像素梯度与极线方向在稠密重建中的角度关系(第8讲、第13讲)。
  • 在 CPU 上实现了半稠密场景的重建。一般特征点法是稀疏地图,而稠密建图需要RGB-D传感器在GPU上运行。
  • LSD-SLAM 的半稠密追踪使用了一些精妙的手段,来保证追踪的实时性与稳定性:
  1. LSD-SLAM 既不是利用单个像素,也不是利用图像块,而是在极线上等距离取五个点,度量其 SSD;
  2. 在深度估计时,LSD-SLAM 首先用随机数初始化深度,在估计完之后又把深度均值归一化,以调整尺度;
  3. 在度量深度不确定性时,不仅考虑三角化的几何关系,而且考虑了极线与深度的夹角,归纳成一个光度不确定性项;
  4. 关键帧之间的约束使用了相似变换群以及与之对应的李代数 ζ ∈ sim(3),显式地表达出尺度,在后端优化中就可以将不同尺度的场景考虑进来,减小了尺度飘移现象。

LSD-SLAM缺点(继承了直接法的缺点):

  • LSD-SLAM 对相机内参和曝光非常敏感,并且在相机快速运动时容易丢失。 
  • 回环检测部分,由于目前并没有在直接法基础实现的回环检测方式, LSD-SLAM 必须依赖于特征点方法进行回环检测。

(五)SVOhttps://github.com/uzh-rpg/rpg_svo

SVO 是 Semi-direct Visual Odoemtry(“半直接”法) 的缩写 。它是由 Forster 等人于 14 年提出的一种基于稀疏直接法的视觉里程计。其优点:

  • 特征点与直接法的混合使用:SVO 跟踪了一些关键点(角点,没有描述子),然后像直接法那样,根据这些关键点周围的信息,估计相机运动以及它们的位置。
  • SVO 的最大优势是速度极快,在低端计算平台上也能达到实时性,而在 PC 平台上则可以达到 100 多帧每秒的速度。
  • 无人机是作者开发 SVO 的目标应用平台。
  • SVO 的提出了深度滤波器的概念,并推导了基于均匀——高斯混合分布的深度滤波器,将这种滤波器用于关键点的位置估计,并使用了逆深度作为参数化形式,使之能够更好地计算特征点位置

开源版的 SVO 代码清晰易读,十分适合读者作为第一个 SLAM 实例进行分析。

SVO缺点:

目标应用平台为无人机的俯视相机,细节是围绕这个应用设计的,使得它在平视相机中表现不佳:

在单目初始化时,使用了分解 H 矩阵而不是传统的 F 或 E 矩阵的方式,这需要假设特征点位于平面上。

SVO 在关键帧选择时,使用了平移量作为确定新的关键帧的策略,而没有考虑旋转量。

想要在平视相机中使用 SVO,必须自己加以修改。

为了速度和轻量化,舍弃了后端优化和回环检测部分,也基本没有建图功能。故它为一个 VO,而不是完整的 SLAM。

(六)RTAB-MAP

RTAB-MAP(Real Time Appearance-Based Mapping)[107] 是 RGB-D SLAM 中比较经典的一个方案。它实现了 RGB-D SLAM 中所有应该有的东西:基于特征的视觉里程计、基于词袋的回环检测、后端位姿优化及点云三角网格建图。它是一个完整的GRB-D SLAM方案,可以从ROS直接获取二进制程序,且支持常见RGB-D或者双目传感器,但它更偏向于是一个SLAM应用而不是好的研究对象

相关开源网站:openslam.org

三、SLAM如今主流研究方向

主要方向:

  • 应用级别要求小型化、轻量化,让 SLAM 能够在嵌入式或手机等小型设备上良好的运行,然后考虑以它为底层功能的应用。
  • 深度学习结合,利用GPU实现高精度定位、高精密三维重建、场景理解等功能,从而完美实现场景重建。

(一)视觉+IMU SLAM

惯性传感器(IMU)能够测量传感器本体的角速度和加速度,被认为与相机传感器具有明显的互补性,而且十分有潜力在融合之后得到更完善的 SLAM 系统(VIO(Visual Inertial Odometry)):

  • IMU测得的角加速度与加速度有明显漂移,使得两次积分后得到的位姿数据误差很大,在长时间内累计误差很大,但瞬时的加速度测量却比较精准;而这刚好是相机的弱点:视觉SLAN很怕快速运动,运动过快相机拍的模糊导致特征匹配困难。
  • 相机数据不会漂移,在慢速运动中位姿估计依然很有效,刚好修正IMU的数漂。
  • 图像发生变化时,本质上我们没法知道是相机自身发生了运动,还是外界条件发生了变化,所以纯视觉 SLAM 难以处理动态的障碍物。而 IMU 能够感受到自己的运动信息,从某种程度上减轻动态物体的影响。

VIO未来前景:

VIO(Visual Inertial Odometry)都是相当复杂的。其复杂性主要来源于 IMU 测量加速度和角速度这两个量的事实,所以不得不引入运动学计算。目前 VIO 的框架已经定型为两大类:松耦合(Loosely Coupled)和紧耦合(Tightly Coupled)。松耦合是指,IMU 和相机分别进行自身的运动估计,然后对它们的位姿估计结果进行融合。紧耦合是指,把 IMU 的状态与相机的状态合并在一起,共同构建运动方程和观测方程,然后进行状态估计——这和我们之前介绍的理论非常相似。我们可以预见到,紧耦合理论也必将分为基于滤波和基于优化的两个方向。在滤波方面,传统的 EKF以及改进的 MSCKF(Multi-State Constraint KF)都取得;优化方面亦有了一定的成果,研究者们对 EKF 也进行了深入的讨论相应的方案 。值得一提的是,尽管在纯视觉 SLAM 中,优化方法已经占了主流,但在 VIO 中,由于 IMU 的数据频率非常高,对状态进行优化需要的计算量就更大,因此VIO 领域目前仍处于滤波与优化并存的阶段。

VIO 为将来 SLAM 的小型化与低成本化提供了一个非常有效的方向。而且结合稀疏直接法,我们有望在低端硬件上取得良好的 SLAM 或 VO 效果,是非常有前景的。

(二)语义SLAM

语义SLAM是视觉SLAM和深度学习技术结合的方向。目的是通过深度学习实现类似与人类的通过识别物体,构建带物体标签的地图,并将标签信息引入BA或优化端的目标函数与约束中,更可通过物体识别检测回环。SLAM 和语义的结合点主要有两
个方面 [9]:

  • 语义帮助SLAM:传统物体识别、分割算法只考虑一个图,在SLAM中相机是移动的,可以给运动中的图片上都带上物体标签,就可使SLAM构建带标签的地图。而且,物体信息可为回环检测和BA优化提供更多条件。
  • SLAM帮助语义:物体识别和分割都需要大量训练数据,这些数据往往需要分类器去识别各个角度物体,需要从不同视角采集物体数据,再进行标定,费事又费力。在SLAM中,可以自动估计相机运动,可以帮助标签物体,可以很大程度上加速分类器的训练。

在深度学习之前,支持向量机、条件随机场在分类正确率上存在限制,所以效果也往往不尽如人意。随着深度学习的发展,我们开始使用网络,越来越准确地对图像进行识别、检测和分割。这为构建准确的语义地图打下了更好的基础 。而且逐渐开始有学者将神经网络方法引入到 SLAM 中的物体识别和分割,甚至 SLAM 本身的位姿估计与回环检测中。以后深度学习与SLAM的结合将越来越深。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/544718
推荐阅读
相关标签
  

闽ICP备14008679号