0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SLAM为何重要

MATLAB 来源:MATLAB 作者:MATLAB 2022-07-28 14:43 次阅读

同步定位与地图构建 (SLAM) 是自动驾驶汽车所用的一种技术,您不仅可以用它构建地图,还可同时在该地图上定位您的车辆。SLAM 算法让汽车能够构建未知环境的地图。工程师们使用地图信息执行路径规划和避障等任务。

1. SLAM 为何重要

早在多年前,人们就已开始对 SLAM 开展技术研究。如今,随着计算机处理速度显著提升,且相机和激光测距仪等低成本传感器大为普及,SLAM 更是在越来越多的领域投入实际应用。

SLAM 为何重要?要回答这个问题,我们可以看看以下几个例子,了解它有哪些好处和应用。

SLAM 示例

假设有一个家用扫地机器人。没有 SLAM,它只会在房间里随机移动,无法打扫整个地面空间。此外,这种方法会消耗更多功率,因此电池会更快耗尽。相反,采用 SLAM 的机器人可以使用滚轮转数等信息以及来自相机和其他成像传感器的数据,确定所需的移动量。这称为定位。机器人还可以同步使用相机和其他传感器创建其周围障碍物的地图,避免同一区域清洁两次。这称为建图。

c97b06ec-0d94-11ed-ba43-dac502259ad0.png

SLAM 给扫地机器人带来的好处

SLAM 还可用于许多其他应用场景中,例如让一队移动机器人在仓库中移动并整理货架,让自动驾驶汽车停泊到空车位,或者让无人机在未知环境中完成送货。MATLABSimulink 提供了 SLAM 算法、函数和分析工具来开发各种应用。您可以在实现同步定位与地图构建的同时,完成传感器融合、目标跟踪、路径规划和路径跟随等其他任务。

2. SLAM 工作原理

大致说来,实现 SLAM 需要两类技术。一类技术是传感器信号处理(包括前端处理),这类技术在很大程度上取决于所用的传感器。另一类技术是位姿图优化(包括后端处理),这类技术与传感器无关。

c99005ec-0d94-11ed-ba43-dac502259ad0.png

SLAM 处理流程

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

视觉 SLAM

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

视觉 SLAM 所需的相机价格相对低廉,因此实现成本较低。此外,相机可以提供大量信息,因此还可以用来检测路标(即之前测量过的位置)。路标检测还可以与基于图的优化结合使用,这有助于灵活实现 SLAM。

使用单个相机作为唯一传感器的 vSLAM 称为单目 SLAM,此时难以定义深度。这个问题可以通过以下方式解决:检测待定位图像中的 AR 标记、棋盘格或其他已知目标,或者将相机信息与其他传感器信息融合,例如测量速度和方向等物理量的惯性测量单元 (IMU) 信息。vSLAM 相关的技术包括运动重建 (SfM)、视觉测距和捆绑调整。

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

c9a52cc4-0d94-11ed-ba43-dac502259ad0.jpg

运动重建。

c9b4bbee-0d94-11ed-ba43-dac502259ad0.jpg

RGB-D SLAM 点云配准

激光雷达 SLAM

光探测与测距(激光雷达)方法主要使用激光传感器(或距离传感器)。

对比相机、ToF 和其他传感器,激光可以使精确度大大提高,常用于自动驾驶汽车和无人机等高速移动运载设备的相关应用。激光传感器的输出值一般是二维 (x, y) 或三维 (x, y, z) 点云数据。激光传感器点云提供了高精确度距离测度数据,特别适用于 SLAM 建图。一般来说,首先通过点云匹配来连续估计移动。然后,使用计算得出的移动数据(移动距离)进行车辆定位。对于激光点云匹配,会使用迭代最近点 (ICP) 和正态分布变换 (NDT) 等配准算法。二维或三维点云地图可以用栅格地图或体素地图表示。

但就密度而言,点云不及图像精细,因此并不总能提供充足的特征来进行匹配。例如,在障碍物较少的地方,将难以进行点云匹配,因此可能导致跟丢车辆。此外,点云匹配通常需要高处理能力,因此必须优化流程来提高速度。鉴于存在这些挑战,自动驾驶汽车定位可能需要融合轮式测距、全球导航卫星系统 (GNSS) 和 IMU 数据等其他测量结果。仓储机器人等应用场景通常采用二维激光雷达 SLAM,而三维激光雷达点云 SLAM 则可用于无人机和自动驾驶。

c9cdf410-0d94-11ed-ba43-dac502259ad0.jpg

二维激光雷达 SLAM

c9db0786-0d94-11ed-ba43-dac502259ad0.jpg

三维激光雷达 SLAM

SLAM 面临的常见挑战

虽然 SLAM 已在某些场景下投入实际应用,但是仍面临诸多技术挑战,因此难以得到更为广泛的应用。不过,每项挑战都可以凭借特定的对策加以克服。

1) 定位误差累积,导致与实际值产生偏差

SLAM 会估计连续移动,并容许一定的误差。但是误差会随着时间累积,导致与实际值产生明显偏差。误差还会导致地图数据瓦解或失真,让后续搜索变得困难。我们来看一个绕正方形通道行驶的例子。随着误差累积,机器人的起点和终点对不上了。这称为闭环问题。这类位姿估计误差不可避免。我们必须设法检测到闭环,并确定如何修正或抵消累积的误差。

对策之一是记住之前到过的某处的某些特征,将其作为路标,从而最小化定位误差。构建位姿图有助于修正误差。将误差最小化问题视为优化问题进行求解,以生成更准确的地图数据。这种优化在视觉 SLAM 中称为捆绑调整。

c9ea5290-0d94-11ed-ba43-dac502259ad0.jpg

构建位姿图并最小化误差的示例

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

图像和点云建图不考虑机器人的移动特征。在某些情况下,这种方法会生成不连续的位置估计。例如,可能会有计算结果显示,以 1 米/秒速度移动的机器人突然向前“瞬移”了 10 米。避免这种定位失败的办法有两种:一是使用恢复算法;二是将运动模型与多个传感器融合,以基于传感器数据计算。

有多种方法可以实现运动模型的传感器融合。一种常见方法是使用卡尔曼滤波进行定位。由于大部分差速驱动机器人和四轮车辆一般都使用非线性运动模型,因此通常会使用扩展卡尔曼滤波器和粒子滤波器(蒙特卡罗定位)。某些情况下,也可以使用无迹卡尔曼滤波器等更加灵活的贝叶斯滤波器。一些常用传感器是惯性测量装置,例如惯性测量单元 (IMU)、航姿参考系统 (AHRS)、惯性导航系统 (INS)、加速度计传感器、陀螺仪传感器和磁力传感器。安装到车辆的轮式编码器通常用于测距。

定位失败时,一种恢复对策是记住之前经过的某个位置的关键帧,将其作为路标。搜索路标时,会以特定方法进行特征提取以便高速扫描。有些方法基于图像特征,例如特征袋 (BoF) 和视觉词袋 (BoVW)。近年来,人们也使用深度学习来比较特征距离。

3) 图像处理、点云处理和优化带来高计算成本

在车辆硬件上实现 SLAM 时,计算成本是个问题。计算通常在处理能力有限的紧凑型低功耗嵌入式微处理器上执行。为了实现准确定位,必须高频率执行图像处理和点云匹配。此外,闭环等优化计算都是高成本计算流程。此处的挑战在于如何在嵌入式微处理器上执行这种高成本处理。

对策之一是并行运行多个不同流程。例如,用于匹配流程前处理的特征提取就相对适合并行运行。使用多核 CPU 进行处理时,单指令多数据 (SIMD) 计算和嵌入式 GPU 在某些情况下可以进一步提升速度。而且,由于位姿图优化可以在相对长的周期里执行,降低其优先级并以规律间隔执行也能提高性能。

3. 使用 MATLAB 实现 SLAM

MATLAB 可以帮助您在目标系统上实现 SLAM 应用,并可帮助您应对各种已知的 SLAM 技术挑战。

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

使用 Lidar Toolbox 和 Navigation Toolbox 进行二维/三维激光雷达处理和扫描匹配

三维点云处理和点云配准

使用特征袋和视觉词袋进行闭环检测

使用深度学习进行目标检测和语义分割

使用 Automated Driving Toolbox 生成包含三维激光雷达点云的地图

使用 Sensor Fusion and Tracking Toolbox 将传感器融合用于定位和多目标跟踪

SLAM 后端的二维/三维位姿图

使用 Navigation Toolbox 生成二维/三维位姿图

基于节点和边约束优化位姿图

使用 Computer Vision Toolbox 进行捆绑调整

使用 SLAM 地图生成器生成占据栅格

从 MATLAB 工作区或 rosbag 文件导入二维激光雷达数据并创建占据栅格

寻找并修改闭环,然后将地图导出为占据栅格以用于路径规划

使用来自 SLAM 算法的输出地图进行路径规划和控制

使用 Navigation Toolbox 实现 RRT 或 Hybrid A* 等路径规划算法

发送控制指令以跟随规划路径并避开障碍

使用 Parallel Computing Toolbox 并行运行计算密集型流程(例如图像处理相关的流程),以加快流程处理速度

使用 ROS Toolbox 从 MATLAB 和 Simulink 部署独立 ROS 节点并与支持 ROS 的机器人通信

使用 MATLAB Coder 和 GPU Coder 将在 MATLAB 和 Simulink 中开发的图像处理和导航算法部署到嵌入式微处理器

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2548

    文章

    50768

    浏览量

    752257
  • 图像传感器
    +关注

    关注

    68

    文章

    1886

    浏览量

    129473
  • SLAM
    +关注

    关注

    23

    文章

    419

    浏览量

    31794

原文标题:什么是 SLAM?你不可不知的三大要点>>

文章出处:【微信号:MATLAB,微信公众号:MATLAB】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    最新图优化框架,全面提升SLAM定位精度

    同时定位与地图构建(SLAM)是一项关键技术,允许移动机器人在部分或完全未知的环境中自主导航。它包括使用机载传感器同时估计机器人状态和构建传感器检测到的环境地图。SLAM可以根据传感器和地图构建技术
    的头像 发表于 11-12 11:26 218次阅读
    最新图优化框架,全面提升<b class='flag-5'>SLAM</b>定位精度

    激光雷达在SLAM算法中的应用综述

    SLAM算法运行的重要传感器。基于激光雷达的SLAM算法,对激光雷达SLAM总体框架进行介绍,详细阐述前端里程计、后端优化、回环检测、地图构建模块的作用并总结所使用的算法;按由2D到
    的头像 发表于 11-12 10:30 301次阅读
    激光雷达在<b class='flag-5'>SLAM</b>算法中的应用综述

    MG-SLAM:融合结构化线特征优化高斯SLAM算法

    同步定位与地图构建 (SLAM) 是计算机视觉中的一个基本问题,旨在在同时跟踪相机姿势的同时对环境进行地图构建。基于学习的密集 SLAM 方法,尤其是神经辐射场 (NeRF) 方法,在捕获密集光度
    的头像 发表于 11-11 16:17 206次阅读
    MG-<b class='flag-5'>SLAM</b>:融合结构化线特征优化高斯<b class='flag-5'>SLAM</b>算法

    从算法角度看 SLAM(第 2 部分)

    作者: Aswin S Babu 正如我们在[第 1 部分]中所讨论的,SLAM 是指在无地图区域中估计机器人车辆的位置,同时逐步绘制该区域地图的过程。根据使用的主要技术,SLAM 算法可分为三种
    的头像 发表于 10-02 16:39 267次阅读
    从算法角度看 <b class='flag-5'>SLAM</b>(第 2 部分)

    机器人高效导航定位背后SLAM专用芯片的崛起

    。   SLAM技术是定位与地图构建技术,其重要的理论与应用价值被认为是实现自动驾驶和全自主移动机器人的关键技术。小到扫地机器人,大到自动驾驶汽车,无人自主移动设备近些年的快速发展加速了SLAM行业的发展,为了利用这些市场机会,
    的头像 发表于 05-28 00:20 3414次阅读

    深度解析深度学习下的语义SLAM

    随着深度学习技术的兴起,计算机视觉的许多传统领域都取得了突破性进展,例如目标的检测、识别和分类等领域。近年来,研究人员开始在视觉SLAM算法中引入深度学习技术,使得深度学习SLAM系统获得了迅速发展,并且比传统算法展现出更高的精度和更强的环境适应性。
    发表于 04-23 17:18 1252次阅读
    深度解析深度学习下的语义<b class='flag-5'>SLAM</b>

    什么是边缘计算?它为何如此重要

    ,什么是边缘计算?它为何如此重要?本文将对其进行详细的解析。 边缘计算,简而言之,是指在靠近物或数据源头的一侧,采用网络、计算、存储、应用核心能力为一体的开放平台,就近提供最近端服务。它的核心思想是将计算任
    的头像 发表于 04-22 15:25 406次阅读

    工程实践中VINS与ORB-SLAM的优劣分析

    ORB-SLAM是一种基于特征的单目视觉SLAM系统,广泛用于实时三维地图构建和机器人定位。该系统使用ORB特征进行高效的视觉识别和地图重建,支持关键帧技术和回环检测来优化地图的准确性。
    的头像 发表于 04-08 10:17 2657次阅读
    工程实践中VINS与ORB-<b class='flag-5'>SLAM</b>的优劣分析

    什么是SLAMSLAM算法涉及的4要素

    SLAM技术可以应用在无人驾驶汽车、无人机、机器人、虚拟现实等领域中,为这些领域的发展提供了支持。SLAM技术的发展已经逐渐从单纯的定位和地图构建转向了基于场景理解的功能。
    发表于 04-04 11:50 2217次阅读

    什么是SLAM?基于3D高斯辐射场的SLAM优势分析

    基于NeRF的SLAM算法采用全局地图和图像重建损失函数,通过可微分渲染捕获稠密的光度信息,具有高保真度。
    的头像 发表于 04-01 12:44 690次阅读

    从基本原理到应用的SLAM技术深度解析

    LSD-SLAM 即 Large-Scale Direct SLAM,兼容单目相机和双目相机。LSD-SLAM是一种基于光流跟踪的直接法SLAM,但是实现了半稠密建图,建图规模大,可以
    发表于 02-26 09:41 9015次阅读
    从基本原理到应用的<b class='flag-5'>SLAM</b>技术深度解析

    基于NeRF/Gaussian的全新SLAM算法

    基于NeRF的SLAM算法采用全局地图和图像重建损失函数,通过可微分渲染捕获稠密的光度信息,具有高保真度。
    的头像 发表于 01-26 10:48 624次阅读
    基于NeRF/Gaussian的全新<b class='flag-5'>SLAM</b>算法

    坐标系在动态SLAM中究竟有多重要

    大多同时定位于建图(SLAM)系统在传统上假定的都是静态世界,这与现实世界的场景不符。
    的头像 发表于 01-05 13:46 838次阅读
    坐标系在动态<b class='flag-5'>SLAM</b>中究竟有多<b class='flag-5'>重要</b>?

    NeRF何去何从?GS SLAM到底哪家强?来看看最新的开源方案!

    Gaussian-SLAM提出了用于seeding和优化Gaussian splats的新策略,以将其从多视图离线场景扩展到RGBD序列。还扩展了Gaussian splats来编码几何图形并尝试
    的头像 发表于 12-26 16:38 1154次阅读
    NeRF何去何从?GS <b class='flag-5'>SLAM</b>到底哪家强?来看看最新的开源方案!

    基于视觉SLAM的研究现状

    目前视觉SLAM系统可以在微型个人计算机(PC)和嵌入式设备中运行,甚至可以在智能手机等移动设备中运行(Klein和Murray,2009)。与室内或室外移动机器人不同,自动驾驶车辆具有更复杂的参数,尤其是当车辆在城市环境中自动驾驶时。
    发表于 12-04 09:22 1004次阅读
    基于视觉<b class='flag-5'>SLAM</b>的研究现状