SLAM(同时定位和映射)

大满贯是什么?

你需要知道的3件事

SLAM(同步定位和地图)是一种用于自动驾驶车辆的方法,它可以让你建立地图,并在地图上同时定位你的车辆。SLAM算法允许车辆绘制未知环境的地图。工程师利用地图信息进行路径规划和避障等任务。

为什么大满贯很重要

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

为了理解为什么SLAM如此重要,让我们看看它的一些好处和应用示例。

Slam示例

考虑家用机器人的真空度。如果没有SLAM,它将在房间内随机移动,可能无法清洁整个地板表面。此外,这种方法会消耗过多的电量,因此电池会更快地耗尽。另一方面,具有SLAM的机器人可以使用诸如车轮转数和来自摄像机和其他成像传感器的数据等信息来确定所需的移动量。这就是所谓的本地化。机器人还可以同时使用摄像头和其他传感器创建周围障碍物的地图,避免两次清洁同一区域。这称为映射。

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

大满贯是如何工作的

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

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

视觉垃圾

顾名思义,视觉SLAM(或vSLAM)使用从相机和其他图像传感器获取的图像。视觉SLAM可以使用简单相机(广角、鱼眼和球形相机)、复眼相机(立体和多相机)和RGB-D相机(深度和ToF相机)。

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

单眼血液是当VSLAM使用单眼摄像机作为唯一的传感器时,这使得它充满了定义深度。这可以通过检测AR标记,棋盘或图像中的其他已知对象来解决,以便定位或通过将相机信息与其他传感器融合,例如惯性测量单元(IMU),这可以测量诸如速度和方向的物理量。与VSLAM相关的技术包括来自运动(SFM),视觉内径和捆绑调节的结构。

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

结构来自运动。

rgb-d slam的点云注册

激光雷达SLAM

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

与摄像机,TOF和其他传感器相比,激光器明显更精确,并且用于具有高速移动车辆的应用,例如自动驾驶汽车和无人机。来自激光传感器的输出值通常是2D(x,y)或3d(x,y,z)点云数据.激光传感器点云提供高精度的距离测量,并非常有效地用于SLAM地图构建。一般情况下,通过匹配点云来估计运动。计算的运动(移动距离)用于定位车辆。激光雷达点云匹配采用迭代最近点(ICP)算法和正态分布变换(NDT)算法。二维或三维点云图可以表示为网格图或体素图。

另一方面,点云在密度方面不如图像详细,并且不总是提供足够的特征进行匹配。例如,在障碍物较少的地方,很难对齐点云,这可能会导致丢失车辆位置的跟踪。此外,点云匹配通常需要高处理能力,因此有必要优化流程以提高速度。由于这些挑战,自主车辆的定位可能涉及融合其他测量结果,如车轮里程计、全球导航卫星系统(GNSS)和IMU数据。对于仓库机器人等应用,二维激光雷达大满贯常用,而利用三维激光雷达点云进行SLAM可用于无人机和自动停车。

使用二维激光雷达进行SLAM

猛击3d lidar

大满贯的共同挑战

尽管SLAM用于一些实际应用,但一些技术挑战阻碍了更广泛的应用。每个人都有帮助克服障碍的对策。

1.定位误差累积,导致与实际值的巨大偏差

SLAM估计序列运动,其中包括一些误差范围。随着时间的推移,误差累积,导致与实际值的严重偏差。它还可能导致地图数据崩溃或扭曲,使后续搜索变得困难。让我们举一个绕着方形通道行驶的例子。随着误差的累积,机器人的起点和终点不再匹配。这称为循环闭包问题。像这样的姿态估计误差是不可避免的。检测循环闭合并确定如何纠正或消除累积错误非常重要。

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

对策是记住从先前访问的地方作为地标的一些特征,并最大限度地减少本地化错误。构建姿势图以帮助纠正错误。通过将误差最小化作为优化问题,可以生成更准确的地图数据。这种优化称为Visual Slam中的捆绑调整。

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

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

图像和点云映射不考虑机器人的运动特征。在某些情况下,这种方法可以产生不连续的位置估计。例如,计算结果显示,一个移动速度为1m /s的机器人突然向前跳了10米。采用恢复算法或多传感器融合运动模型,根据传感器数据进行计算,都可以避免这种定位故障。

有几种方法可以使用带有传感器融合的运动模型。常用的方法是使用卡尔曼过滤为了本地化。由于大多数差分驱动机器人和四轮车辆通常使用非线性运动模型,扩展卡尔曼过滤器和粒子过滤器(蒙特卡罗定位)是常用的方法。在某些情况下,也可以使用更灵活的贝叶斯滤波器,如无迹卡尔曼滤波器。一些常用的传感器是惯性测量设备,如IMU,姿态和航向参考系统或明显惯性导航系统(INS)、加速度计传感器、陀螺传感器和磁传感器)。附在车辆上的车轮编码器常用于里程计。

当本地化失败时,a对策恢复是从先前访问的地方记住作为钥匙框架的地标。在搜索地标时,a特征提取该过程的应用方式是可以高速扫描。一些基于图像特征的方法包括特征袋(BoF)和视觉单词袋(BoVW)。最近,深度学习用于与特征的距离比较。

3.图像处理、点云处理和优化的计算成本高

计算成本是在车辆硬件上实施SLAM时的问题。计算通常对具有有限的加工功率有限的紧凑型和低能量嵌入式微处理器。为了实现准确的本地化,必须执行图像处理并点云匹配高频。此外,诸如循环闭合的优化计算是高计算过程。挑战是如何在嵌入的微型计算机上执行这种计算昂贵的处理。

对策是并行运行不同的进程。诸如特征提取的过程,其是预处理匹配过程,相对适合并行化。使用多核CPU进行处理,单指令多数据(SIMD)计算和嵌入式GPU可以进一步提高速度。而且,由于可以在相对长的周期上执行姿势图优化,因此以规则的间隔降低其优先级并执行该过程也可以提高性能。

与matlab猛击

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

  1. SLAM前端的传感器信号和图像处理
  2. SLAM后端的2D / 3D姿态图
  3. 占用网格SLAM地图构建应用
    • 从MATLAB工作空间或rosbag文件导入激光雷达数据,并创建占用网格
    • 查找和修改回路闭合,并将地图导出为用于路径规划的占用栅格
  4. 使用SLAM算法的输出映射路径规划和控制
  5. 加快计算密集的进程,例如通过并行运行与图像处理相关的过程并行计算工具箱™
  6. 部署独立ROS节点并与Matlab和Simulink的启用ROS的机器人通信金宝app®使用ROS工具箱
  7. 将在MATLAB和Simulink中开发的图像处理和导航算法部署到嵌入式微处理器上,使用金宝appMatlab Coder™GPU编码器™

了解更多关于SLAM的信息

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