什么是SLAM?

你需要知道三件事

SLAM(同步定位与地图)是用于自动驾驶汽车,可以让你在地图和在该地图在同一时间本地化车辆的方法。SLAM算法允许车辆绘制出未知的环境。工程师使用的地图信息来执行任务,如路径规划和避障。

大满贯为何重要

SLAM多年来一直是技术研究的主题。但随着计算机处理速度的巨大提高,以及相机和激光测距仪等低成本传感器的可用性,SLAM现在在越来越多的领域得到了实际应用。

要理解为什么SLAM是非常重要的,让我们看看它的一些优点和应用实例。

大满贯的例子

考虑家用机器人吸尘器。没有SLAM,它只会在房间里随意移动,可能无法清洁整个地板表面。此外,这种方法使用了过多的电力,所以电池会更快地耗尽。另一方面,使用SLAM的机器人可以利用车轮转动次数以及来自相机和其他成像传感器的数据等信息来确定所需的移动量。这叫做本地化。机器人还可以同时使用摄像头和其他传感器来创建周围障碍物的地图,并避免两次清扫同一区域。这叫做映射。

SLAM在许多其他应用程序中都很有用,比如导航一队移动机器人来安排仓库中的货架,将自动驾驶汽车停放在一个空位置,或者通过导航一架无人驾驶飞机在未知环境中投递包裹。MATLAB和Simu金宝applink提供SLAM算法,功能和分析工具开发各种应用程序。您可以实现同步定位和绘图以及其他任务,如传感器融合、目标跟踪、路径规划路径跟踪

如何SLAM作品

从广义上讲,也有用来实现SLAM两种类型的技术组件。第一种类型是传感器信号处理,其中包括前端处理,这在很大程度上取决于所使用的传感器。第二种类型是姿态-图形优化,包括后端处理,这是传感器无关。

要了解更多关于前端处理组件,让我们看看视觉SLAM和激光雷达SLAM -两种不同的SLAM方法。

视觉大满贯

顾名思义从摄像机和其它图像传感器获取,视觉SLAM(或vSLAM)用途的图像。视觉SLAM可以使用简单的相机(广角,鱼眼,并且球形摄影机),复眼照相机(立体声和多相机)以及RGB-d相机(深度和TOF相机)。

视觉SLAM可以用相对便宜的相机以较低的成本实现。此外,由于相机提供大量的信息,它们可以用来探测地标(以前测量的位置)。地标检测还可以与基于图的优化相结合,实现SLAM的灵活性。

单眼SLAM是指vSLAM使用单摄像头作为唯一的传感器,这使得它很难定义深度。这可以通过检测AR标记、棋盘格或图像中的其他已知物体来解决,或者通过将摄像机信息与其他传感器(如惯性测量单元(IMUs))融合来解决,IMUs可以测量诸如速度和方向等物理量。与vSLAM相关的技术包括运动结构(SfM)、视觉测程和束调整。

视觉SLAM算法稀疏方法可大致分为两类,一类是匹配图像特征点的稀疏方法,另一类是使用PTAM和ORB-SLAM等算法。稠密方法利用图像的整体亮度,采用DTAM、LSD-SLAM、DSO、SVO等算法。

结构与运动。

RGB-D SLAM的点云注册

激光雷达大满贯

光探测和测距(激光雷达)是一种主要使用激光传感器(或距离传感器)的方法。

相比摄像机,TOF和其他传感器,激光器显著更精确的,并且被用于与高速移动的车辆应用,例如自动驾驶汽车和无人驾驶飞机。从激光传感器的输出值通常是2D(X,Y)或三维(X,Y,Z)的点云的数据。激光传感器点云提供高精度的距离测量,以及在地图构造与SLAM非常有效地工作。通常,运动由匹配点云逐次推定。所计算的移动(移动距离)被用于定位车辆。对于激光雷达点云匹配,迭代最近点(ICP)和正态分布变换被使用(NDT)算法。二维或三维点云的地图可以表示为一个网格地图或体素映射。

另一方面,点云在密度上不像图像那么精细,不能提供足够的特征进行匹配。例如,在障碍很少的地方,很难对齐点云,这可能会导致失去车辆位置的轨迹。此外,点云匹配一般需要较高的处理能力,因此需要对流程进行优化以提高速度。由于这些挑战,自动驾驶车辆的定位可能涉及融合其他测量结果,如车轮测程、全球导航卫星系统(GNSS)和IMU数据。对于像仓库机器人这样的应用,2D激光雷达SLAM是常用的,而SLAM使用三维激光雷达点云可用于无人机和自动停车。

用2D激光雷达SLAM

SLAM与3D激光雷达

与SLAM共同的挑战

虽然SLAM被用于一些实际应用中,几个技术挑战防止更多的通用采纳。每个人都有一个对策,可以帮助克服障碍。

1.定位误差积累,从实际价值造成实质性偏差

SLAM估计的是连续移动,其中包括一些误差。随着时间的推移,误差会累积,造成与实际值的重大偏差。它还会导致地图数据崩溃或扭曲,使后续搜索变得困难。让我们举个例子,在一个方形的通道上开车。随着误差的累积,机器人的起始点和结束点不再匹配。这被称为循环闭包问题。这样的姿态估计错误是不可避免的。重要的是检测环的闭合度,并确定如何纠正或消除累积的错误。

构造的姿势和图误差最小化的一个例子。

一个对策是为了记住以前访问过的地方作为地标的一些特征,尽量减少定位错误。构造位姿图来帮助纠正错误。将误差最小化作为一个优化问题来解决,可以生成更精确的地图数据。这种优化在visual SLAM中被称为捆绑调整。

构造的姿势和图误差最小化的示例

2.定位失败,地图上的位置丢失

图像和点云映射不考虑机器人的运动特性。在某些情况下,这种方法可以产生连续的位置估计。例如,计算结果示出,机器人以1m移动/ s的突然10米跃升向前。可以通过使用恢复算法或通过融合运动模型与多个传感器,以使基于所述传感器数据计算或者防止这种定位故障。

存在用于使用运动模型与传感器融合的几种方法。一种常见的方法是使用卡尔曼滤波对本地化。由于大多数差动驱动机器人和四轮车辆一般使用非线性运动模型,扩展卡尔曼滤波和粒子过滤器(蒙特卡洛定位)经常被使用。更灵活的贝叶斯过滤器,如无迹卡尔曼滤波器也可以在一些情况下可以使用。一些常用的传感器是惯性测量装置,例如IMU,姿态和航向参考系统或AHRS如信息网络系统(INS)、加速度计传感器、陀螺仪传感器和磁传感器)。附在车辆上的车轮编码器通常用于测程。

当本地化失败时对策恢复是通过记住一个里程碑作为一个关键框架从以前访问的地方。当寻找地标时,a特征提取进程是应用在一种方式,它可以扫描在高速。基于图像特征的方法包括特征包(BoF)和视觉词包(BoVW)。最近,深度学习被用于比较特征之间的距离。

用于图像处理,点云处理和优化3.高计算成本

在车辆硬件上实现SLAM时,计算成本是一个问题。计算通常在处理能力有限的小巧、低能耗嵌入式微处理器上进行。为了实现准确的定位,执行是必不可少的图像处理和高频点云匹配。此外,优化计算,如循环闭包是高计算过程。挑战在于如何在嵌入式微型计算机上执行这种计算成本高昂的处理。

一个对策就是并行运行不同的进程。特征提取是匹配过程的预处理,比较适合并行化。使用多核cpu进行处理、单指令多数据(SIMD)计算和嵌入式gpu可以在某些情况下进一步提高速度。此外,由于位形图优化可以在一个相对较长的周期内执行,降低其优先级并定期执行此过程也可以提高性能。

与MATLAB大满贯

MATLAB®提供为目标系统实现SLAM应用程序的功能,并解决使用SLAM应对已知技术挑战的许多对策。

  1. SLAM前端的传感器信号和图像处理
  2. 2D / 3D带来的SLAM后端图
    • 生成使用导航工具箱2D / 3D图形姿态
    • 优化姿态图基于节点和边缘约束
    • 束调整使用计算机视觉工具箱
  3. 占用网格与SLAM地图生成器应用程序
    • 从MATLAB工作区或rosbag文件导入激光雷达数据,并创建占用网格
    • 查找和修改循环闭包,并将映射导出为占用网格,以便进行路径规划
  4. 使用输出地图从SLAM算法的路径规划和控制
  5. 使用并行运行加速计算密集型处理,如与图像处理相关的处理并行计算工具箱™
  6. 部署独立的ROS节点,并通过MATLAB和Simulink与启用了ROS的机器人通信金宝app®使用ROS工具箱
  7. 在嵌入式微处理器上部署用MATLAB和Simulink开发的图像处理和导航算法金宝appMATLAB编码器™GPU编码器™

了解更多关于SLAM的信息

开发一个环境的地图和定位姿态的机器人或自动驾驶汽车进行自动导航使用导航工具箱。
本例所示的方法是利用位姿图优化,结合采集的一系列二维激光雷达扫描数据来实现SLAM算法。利用二维激光雷达扫描数据构建环境地图,估计机器人的位置和轨迹。
此方法使用读入IMU值来处理3D激光雷达从数据汽车安装的传感器,然后将其用于构建图。这种方法比较了全球定位系统(GPS)记录汽车的轨迹。
结构从运动(SfM)是一种方法确定三维场景从一个序列的二维图像。在本例中,根据视点序列确定标定后的摄像机位置,重建三维场景。
视觉测程是通过对图像序列的分析来估计相机位置和方向的过程。这表明了一种方法跟踪路径的单一标定相机从一系列的图像。
这个例子展示了如何处理来自单眼相机的图像数据来建立一个室内环境的地图和估计相机的轨迹。示例使用了ORB-SLAM,这是一种基于特性的vSLAM算法。
这个例子演示了蒙特卡罗定位(MCL)算法在模拟的Gazebo环境下的TurtleBot®上的应用。