同步定位与绘图

什么是猛击?

你需要知道三件事

SLAM(同时定位和映射)是一种用于自动车辆的方法,可让您在该地图中同时构建地图并本地化车辆。SLAM算法允许车辆映射未知的环境。工程师使用地图信息执行路径规划和避免等任务。

大满贯为何重要

SLAM是多年来的技术研究课题。但是,随着计算机处理速度的大幅提高和低成本传感器(如照相机和激光测距仪)的可用性,SLAM现在被用于越来越多领域的实际应用。

要了解为什么Slam很重要,让我们来看看其一些好处和应用示例。

大满贯的例子

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

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

猛烈的工作原理

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

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

视觉大满贯

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

可视来自较低的摄像机以低成本实现视觉SLAM。另外,由于相机提供大量信息,因此它们可用于检测地标(先前测量的位置)。地标检测也可以与基于图形的优化相结合,实现SLAM实现中的灵活性。

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

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

结构与运动。

RGB-D SLAM的点云配准

激光雷达大满贯

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

与相机、ToF和其他传感器相比,激光的精度要高得多,适用于自动驾驶汽车和无人机等高速行驶车辆。激光传感器的输出值一般为2D (x, y)或3D (x, y, z)点云数据.激光传感器点云提供高精度距离测量,并为地图构造有效地工作。通常,通过匹配点云来顺序估计移动。计算的运动(行驶距离)用于本地化车辆。对于LIDAR点云匹配,使用迭代最接近点(ICP)和正常分布变换(NDT)算法。2D或3D点云映射可以表示为网格图或Voxel映射。

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

2D激光雷达SLAM

使用3D激光雷达进行SLAM

SLAM的常见挑战

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

1.本地化误差累积,导致实际值偏差

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

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

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

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

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

图像和点云映射不会考虑机器人运动的特征。在某些情况下,这种方法可以产生不连续的位置估计。例如,计算结果表明,在1米/米处移动的机器人突然向前跳跃10米。可以通过使用恢复算法或通过融合具有多个传感器的运动模型来防止这种定位故障,以便基于传感器数据进行计算。

有几种使用传感器融合的运动模型的方法。使用常用方法卡尔曼滤波对本地化。由于大多数差动驱动机器人和四轮车辆通常使用非线性运动模型,扩展卡尔曼滤波器和粒子过滤器(蒙特卡罗本地化)通常使用。在某些情况下也可以使用更灵活的贝叶斯滤波器,例如Unscented Kalman滤波器。一些常用的传感器是惯性测量装置,如IMU,姿态和前线参考系统或ahrs.,惯性导航系统或INS,加速度计传感器,陀螺仪传感器和磁传感器)。附着在车辆上的车轮编码器通常用于测量仪。

当本地化失败时,a对策恢复是通过记住一个地标作为一个关键框架从以前访问过的地方。搜索地标时,a特征提取处理的应用方式是它可以在高速扫描。基于图像特征的方法包括特征包法和视觉词包法。最近,深度学习被用于比较与特征的距离。

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

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

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

与MATLAB大满贯

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

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

了解更多关于SLAM的信息

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