SLAM 通常与开发自动驾驶汽车和机器人相关。SLAM 的其他应用领域还包括增强/虚拟现实(AR/VR)(用于跟踪对象和用户)、农业(用于跟踪田野并实现数据驱动决策)以及医学(尤其是在使用细长器械的微创手术中)蜿蜒穿过小切口。
结合了工程、传感器融合、统计学、概率、计算、计算机科学等技术,SLAM算法和变体有很多。因此,SLAM 并不是指单一的技术或方法,而是它们的一个家族(类似于机器学习如何指代广泛的技术)。
根据主要技术/属性将 SLAM 算法分为三类:基于过滤器的 SLAM、基于图的 SLAM 和基于深度学习的 SLAM。
基于过滤器的 SLAM
基于过滤器的 SLAM 将 SLAM 问题视为状态估计问题,其中状态包含有关当前位置和地图的信息。状态由过滤器递归更新,过滤器根据操作和测量来估计当前位置和地图。随着收集到的数据越来越多,估计值也会得到增强和完善。
一些基于过滤器的 SLAM 算法是:
l 卡尔曼滤波器:这是一种递归算法,分两个步骤工作:预测步骤和更新步骤。预测步骤根据系统的动态对状态进行预测,而更新步骤使预测与测量相一致,以产生改进的状态估计。来自预测和测量的信息根据其不确定性/(协)方差进行权衡。卡尔曼滤波器算法假设一个具有高斯误差/噪声的线性世界;事实上,在优化估计状态和真实状态之间的均方误差时,卡尔曼滤波器是线性高斯世界中的最优/最 佳估计器。然而,卡尔曼滤波器的局限性在于线性和/或高斯误差/噪声并不总是适用。
l 扩展卡尔曼滤波器(EKS):扩展卡尔曼滤波器(EKS)扩展了卡尔曼滤波器,允许我们通过使用线性化来放松线性假设。该技术涉及在估计值周围使用一阶泰勒展开,并保留大部分卡尔曼滤波器机制。EKS 算法由于其灵活性和效率而成为一种非常流行的非线性状态估计技术。然而,EKS 也会在估计中引入较大的误差并导致性能不佳。
l 无迹卡尔曼滤波器 (UKS):无迹卡尔曼滤波器 (UKS) 扩展了卡尔曼滤波器,允许我们通过近似概率分布来放松线性假设。该技术涉及使用无迹变换来计算经历非线性变换的随机变量的统计数据,例如均值或方差(通过对表示状态分布的西格玛点进行采样)。UKS 可以为状态提供更准确的估计,尤其是在非线性系统中,但计算成本可能更高。
l 粒子滤波器:粒子滤波器将估计表示为一组粒子,其中每个粒子代表一种可能的状态;权重较高的粒子被认为更能反映真实状态。随着收集到更多信息,粒子将根据其与观察到的测量值的匹配重新加权。粒子滤波器的一个关键优势在于,它对底层系统的假设很少,考虑到复杂性,并且能够处理非线性系统和非高斯误差/噪声(与卡尔曼滤波器不同)。因此,它非常灵活,可以在多种情况下使用。然而,粒子滤波器也有局限性,例如维度(即可能需要大量粒子来准确表达状态分布)、发散性(即粒子可能偏离真实状态)和复杂性(即所需的计算可能会很密集)。有一些基于粒子过滤器的变体可以解决这些限制。
一般来说,基于过滤器的 SLAM 在动态已知的结构化环境中表现出色——在这种设置中,它可以提高计算效率,并有可能提供实时估计。
基于图的SLAM
基于图的 SLAM 将 SLAM 问题视为图问题,其中位置信息由节点表示,地图由边导出。在机器人领域,通常使用位姿图优化。在姿势图中,节点表示姿势和地标,边表示它们之间的约束。当检测到新姿势和地标时添加新节点,并且约束将顺序节点与有关运动的信息连接起来。例如,从一个点移动到另一点将用两个节点表示,每个节点包含有关姿势和测量的地标的信息,通过边缘连接,包含有关运动和其他观察的信息。在构建姿势图时,如果节点足够相似,我们还可以在节点之间添加边,表示返回到一些先前的姿势和地标。当两个节点非常相似时,它会提供信息来更新位姿图,并可能添加指示它们接近程度的新边(这有时也称为检测循环闭合)。
目标是通过最小化姿势、地标和约束中的误差,根据观察到的测量结果来优化图形。基于图的 SLAM 算法旨在高效地执行优化;一些例子是:
l 平方根平滑和映射(平方根 SAM):该算法通过因式分解解决图优化问题。该算法利用了 SLAM 图稀疏的特性,这意味着每个节点仅连接到几个其他节点/只有几个往返于它的边。SLAM 图稀疏的原因是因为节点连接/边仅在连续姿势之间或返回到先前姿势时形成。与我们跟踪的不同姿势的数量相比,后一个原因(返回到先前的姿势)相对较少。此外,认为两个姿势相同的阈值通常很高。当我们将图表示为矩阵时,其中行和列代表节点,条目代表节点之间的边连接,该矩阵将有许多零元素,因此是一个稀疏矩阵。使用线性代数的因式分解技术(平方根 SAM 算法的作用)可以有效地优化稀疏矩阵,以提供更稳定、更高效的数值估计。
l 增量平滑和映射 (iSAM):该算法利用类似于平方根 SAM 的因式分解,并允许在收集新测量值时增量更新估计值。与 Square Root SAM 不同的是,Square Root SAM 是一种基于批处理的方法,这意味着它在优化之前等待所有可用数据,而 iSAM 是动态执行的,因此更加实时。此外,由于它是按每次增量更新而不是批量更新,因此减少了计算复杂性和所需的内存。
l General Framework for Graph Optimization (g2o):这是一个用于图优化的开源 C++ 框架。它建立在平方根 SAM 和 iSAM 的思想之上。该框架设计灵活、可扩展、快速,适用范围广泛。例如,该框架允许不同的优化算法(例如,高斯-牛顿、莱文伯格-马夸特、鲍威尔狗腿等)和噪声/错误处理(例如,Huber、Geman-McClure、动态协方差缩放等)。对于那些对框架的不同实现以及性能感兴趣的人,请参阅这篇关于g2o 框架下基于图的 SLAM 算法分析的论文。
一般来说,当存在较大的不确定性或非高斯噪声时,基于图的 SLAM 由于其灵活性而比基于过滤的 SLAM 表现更好。然而,它的一个限制是计算成本可能很高。因此,基于图的SLAM的一个主要研究领域是提高效率。
基于深度学习的SLAM
基于深度学习的SLAM尝试利用神经网络和深度学习来解决SLAM问题。深度学习可用于整个 SLAM 问题,从描述特征到调整不同的测量结果再到进行估计。
该领域的一些算法是:
l RatSLAM:RatSLAM 最初开发于 2004 年,是最早使用类似“神经网络”技术来处理 SLAM 的算法之一。该算法使用海马模型将视觉线索和里程计/运动信息处理成用于导航的环境表示。海马模型基于啮齿动物/大鼠的海马体,因此命名为 RatSLAM。实验结果表明该算法在某些情况下(即具有最小演化动态的视觉里程计)稳定可靠,但在其他情况下的通用性受到限制。
l LIFT-SLAM:该算法专注于视觉数据的SLAM,并将基于深度学习的特征描述符与传统的几何特征描述符相结合。该算法使用学习不变特征变换 (LIFT)、一种深度神经网络 (DNN),基于卷积神经网络 (CNN) 进行局部特征检测、方向估计和描述。KITTI和EuRoC数据集的基准显示了有希望的结果。然而,一些限制是所需的计算资源,这对于设备上或实时计算来说可能很困难。此外,LIFT-SLAM 难以处理照明不佳(即太亮或太暗)、模糊(即难以区分特征)或低纹理(即没有太多明显特征)的视觉数据。
l EnvSLAM:该算法通过使用神经网络进行 SLAM 来解决效率挑战。除了准确的结果之外,设备上的实时性能也很重要。该算法找到了准确性和效率之间的权衡,从而实现了更快的 SLAM 算法。此外,神经网络的设计旨在轻量级。EnvSLAM 的局限性在于准确性降低,并且对所有 SLAM 实现/情况的通用性有限。
总的来说,基于深度学习的 SLAM 是一个新兴且令人兴奋的研究领域。将深度学习算法的成功从其他任务转移到 SLAM 领域,如果成功,它可以提供新的最 先进的结果,并适用于更广泛的 SLAM 问题。基于深度学习的 SLAM 的局限性通常在于与深度学习相关的计算要求以及这些算法的通用性。
结论
SLAM 是指生成环境地图并确定位置。对于自主、机器人、增强现实等领域来说,这是一个困难但基本的问题。有许多方法、算法和积极的研究来解决 SLAM 问题。在本文中,我们根据主要技术对 SLAM 空间进行了细分:基于过滤器的 SLAM(将 SLAM 视为状态估计问题)、基于图的 SLAM(将 SLAM 视为图优化问题)以及基于深度学习的 SLAM(将 SLAM 视为图优化问题)。利用深度学习来改善 SLAM 结果。
公众号 扫码咨询
![]() |
上海市闵行区中春路4999号莘庄商务楼1326室 |
![]() |
service@covond.com |
![]() |
www.covond.com |
![]() |
交换机:18017588179(孙经理) 无人机:13311882358(孙总) |