SLAM(同步定位和映射)

大满贯是什么?

你需要知道三件事

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

大满贯为何重要

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

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

大满贯的例子

考虑家用机器人吸尘器。如果没有SLAM,它只会在房间内随机移动,可能无法清洁整个地板表面。另外,这种方式消耗的电量过多,所以电池会用得更快。另一方面,拥有SLAM的机器人可以利用车轮转数等信息,以及来自摄像头和其他成像传感器的数据,来确定所需的运动量。这被称为定位。机器人还可以同时使用摄像头和其他传感器,创建周围障碍物的地图,避免对同一区域进行两次清洁。这就是所谓的地图绘制。

SLAM对清洁机器人的好处

SLAM对清洁机器人的好处

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

面板的导航

大满贯是如何工作的

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

大满贯处理流程

大满贯处理流程

为了进一步了解前端处理组件,我们先来看看视觉SLAM和激光雷达SLAM——SLAM的两种不同方法。

视觉大满贯

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

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

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

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

结构与运动。

结构与运动。

RGB-D SLAM点云配准。

RGB-D SLAM点云注册

激光雷达大满贯

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

与相机、ToF和其他传感器相比,激光的精度明显更高,并用于自动驾驶汽车和无人机等高速移动车辆的应用。激光传感器的输出值一般为2D (x, y)或3D (x, y, z)点云数据。激光传感器点云提供了高精度的距离测量,对于使用SLAM进行地图构建非常有效。一般情况下,通过匹配点云顺序估计运动。计算出的运动(行进距离)用于对车辆进行定位。对于激光雷达点云匹配,使用了迭代最近点(ICP)和正态分布变换(NDT)算法等配准算法。2D或3D点云图可以表示为网格图或体素图。

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

SLAM与2D激光雷达

SLAM与2D激光雷达

SLAM with 3D激光雷达

SLAM with 3D激光雷达

SLAM的常见挑战

尽管SLAM被用于一些实际应用,但一些技术挑战阻止了更通用的采用。每一个都有一个对策,可以帮助克服障碍。

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

SLAM估计顺序移动,其中包括一些误差幅度。随着时间的推移,误差会累积,导致与实际值的实质性偏差。它还可能导致地图数据崩溃或扭曲,使后续搜索变得困难。让我们以开车绕过一个方形通道为例。随着误差的积累,机器人的起点和终点不再匹配。这被称为闭环问题。像这样的姿态估计误差是不可避免的。检测闭环并决定如何纠正或抵消累积的误差是很重要的。

无法回到起点(地图扭曲)

构造位姿图并将误差最小化的例子。

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

构造位姿图并将误差最小化的例子。

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

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

图像和点云映射没有考虑机器人运动的特征。在某些情况下,这种方法可以生成不连续的位置估计。例如,一个计算结果显示,一个以1米/秒的速度移动的机器人突然向前跳了10米。这种定位失败可以通过使用恢复算法来防止,也可以通过将运动模型与多个传感器融合,根据传感器数据进行计算来防止。

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

当本地化失败时,a对策恢复是通过记住一个地标作为一个关键帧从以前去过的地方。当搜索一个地标时,a特征提取Process的应用方式是它可以高速扫描。一些基于图像特征的方法包括特征袋(BoF)和视觉词袋(BoVW)。最近,深度学习被用于与特征之间的距离比较。

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

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

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

与MATLAB大满贯

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

SLAM前端传感器信号和图像处理

SLAM后端的2D / 3D姿态图

占用网格与SLAM Map Builder app

  • 从MATLAB工作区或rosbag文件导入2D激光雷达数据,并创建占用网格
  • 找到并修改环路闭包,导出地图作为路径规划的占用网格

使用SLAM算法的输出映射路径规划和控制

通过并行运行,加快计算密集型进程,例如与图像处理相关的进程并行计算工具箱™

部署独立的ROS节点,并从MATLAB和Simulink与启用ROS的机器人通信®使用ROS工具箱

在嵌入式微处理器上部署MATLAB和Simulink开发的图像处理和导航算法MATLAB编码器™GPU编码器™

Baidu
map