初识SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)

72 篇文章 2 订阅
3 篇文章 0 订阅

1. SLAM简介

SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)是一种用于移动机器人或无人系统的技术,旨在解决机器人在未知或不完全已知的环境中同时进行定位和地图构建的问题。具体来说,SLAM技术让机器人在探索新的环境时能够:

定位(Localization):确定自身在环境中的精确位置和姿态(即方向)。
地图构建(Mapping):生成周围环境的地图,这可以是二维(2D)或者三维(3D)的,反映环境中的障碍物、地形特征等。

1.1 早期背景

在20世纪80年代,机器人技术在实验室中逐渐成熟,研究人员试图让机器人在未知环境中自主导航。传统的解决方法通常是先通过人工方式或其他外部系统构建地图,然后机器人再利用这张地图进行定位。然而,这种方法在复杂的、动态变化的或未知环境中效果有限,难以满足实际应用需求。

1.2 SLAM概念的提出

SLAM的概念首次明确提出是在1990年代中期。1986年,J.A. Leonard 和 H.F. Durrant-Whyte在《A Method for Concurrent Map Building and Localisation》的论文中提出了一种机器人同时进行定位与地图构建的思路。这项工作后来被认为是SLAM研究的开端。

SLAM技术的核心在于解决“鸡和蛋”问题:为了进行精确的定位,机器人需要知道周围环境的地图;而为了构建准确的地图,机器人又需要知道自己精确的位置。SLAM试图同时解决这两个问题,通过复杂的数学和统计模型,使用机器人传感器(如激光雷达、相机、IMU等)获取环境数据,逐步构建地图并定位。

定位、定向、测速、授时是人们惆怅千年都未能完全解决的问题,最早的时候,古人只能靠夜观天象和司南来做简单的定向。直至元代,出于对定位的需求,才华横溢的中国人发明了令人叹为观止的牵星术,用牵星板测量星星实现纬度估计。

1964年美国投入使用GPS,突然就打破了大家的游戏规则。军用的P码可以达到1-2米级精度,开放给大众使用的CA码也能够实现5-10米级的精度。

后来大家一方面为了突破P码封锁,另一方面为了追求更高的定位定姿精度,想出了很多十分具有创意的想法来挺升GPS的精度。利用RTK的实时相位差分技术,甚至能实现厘米的定位精度,基本上解决了室外的定位和定姿问题。

但是室内这个问题就难办多了,为了实现室内的定位定姿,一大批技术不断涌现,其中,SLAM技术逐渐脱颖而出。

1.3 早期的突破与发展

在1990年代和2000年代,SLAM技术得到了迅速的发展,特别是随着计算机硬件性能的提升,研究人员能够开发出更复杂、更高效的算法。这一时期的几个关键发展包括:

EKF-SLAM(扩展卡尔曼滤波SLAM):

EKF-SLAM 是最早期被广泛应用的SLAM算法之一,基于扩展卡尔曼滤波的原理。它通过递归的方式更新机器人的位置信息和地图估计。
FastSLAM:

2000年代初期,FastSLAM算法的提出是SLAM技术的一个重要里程碑。它引入了粒子滤波方法,允许SLAM在更大规模的环境中运行,并提高了处理不确定性的能力。
Graph-based SLAM:

在2000年代末期,基于图的SLAM方法开始流行。它将SLAM问题表示为一个图优化问题,能够在处理大规模环境时更加高效,并且能够减少累积误差。

2.SLAM 的工作原理

SLAM的核心是通过传感器(如激光雷达、摄像头、IMU等)获取周围环境的数据,并使用这些数据来估计机器人的位置,同时构建环境的地图。SLAM解决了一个相互依赖的难题:为了进行精确的定位,机器人需要知道周围环境的地图;而为了构建准确的地图,机器人又需要知道自己精确的位置。

目前用在SLAM上的Sensor主要分两大类,激光雷达和摄像头。
作为SLAM 主要的数据输入
在这里插入图片描述

SLAM的主要组件

SLAM系统通常由以下几个主要组件组成:

  • 传感器数据获取:机器人通过传感器收集环境数据。这些传感器可能包括激光雷达(LIDAR)、深度相机、RGB相机、惯性测量单元(IMU)、超声波传感器等。

这里面列举了一些常见的雷达和各种深度摄像头。激光雷达有单线多线之分,角分辨率及精度也各有千秋。SICK、velodyne、Hokuyo以及国内的北醒光学、Slamtech是比较有名的激光雷达厂商。他们可以作为SLAM的一种输入形式。

这个小视频里展示的就是一种简单的2D SLAM。

在这里插入图片描述
这个小视频是宾大的教授kumar做的特别有名的一个demo,是在无人机上利用二维激光雷达做的SLAM。

在这里插入图片描述

而VSLAM则主要用摄像头来实现,摄像头品种繁多,主要分为单目、双目、单目结构光、双目结构光、ToF几大类。他们的核心都是获取RGB和depth map(深度信息)。简单的单目和双目(Zed、leapmotion)我这里不多做解释,我主要解释一下结构光和ToF。

最近流行的结构光和TOF

结构光原理的深度摄像机通常具有激光投射器、光学衍射元件(DOE)、红外摄像头三大核心器件。

在这里插入图片描述
这个图(下图)摘自primesense的专利。

在这里插入图片描述

可以看到primesense的doe是由两部分组成的,一个是扩散片,一个是衍射片。先通过扩散成一个区域的随机散斑,然后复制成九份,投射到了被摄物体上。根据红外摄像头捕捉到的红外散斑,PS1080这个芯片就可以快速解算出各个点的深度信息。

这儿还有两款结构光原理的摄像头。

在这里插入图片描述
第一页它是由两幅十分规律的散斑组成,最后同时被红外相机获得,精度相对较高。但据说DOE成本也比较高。

还有一种比较独特的方案(最后一幅图),它采用mems微镜的方式,类似DLP投影仪,将激光器进行调频,通过微镜反射出去,并快速改变微镜姿态,进行行列扫描,实现结构光的投射。(产自ST,ST经常做出一些比较炫的黑科技)。

ToF(time of flight)也是一种很有前景的深度获取方法。

传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。类似于雷达,或者想象一下蝙蝠,softkinetic的DS325采用的就是ToF方案(TI设计的),但是它的接收器微观结构比较特殊,有2个或者更多快门,测ps级别的时间差,但它的单位像素尺寸通常在100um的尺寸,所以目前分辨率不高。以后也会有不错的前景,但我觉得并不是颠覆性的。

好,那在有了深度图之后呢,SLAM算法就开始工作了,由于Sensor和需求的不同,SLAM的呈现形式略有差异。大致可以分为激光SLAM(也分2D和3D)和视觉SLAM(也分Sparse、semiDense、Dense)两类,但其主要思路大同小异。

在这里插入图片描述

这两种的对比

SLAM技术中,雷达(通常指激光雷达,LIDAR)和视觉(通常指摄像头)是两种常用的传感器,它们各自有不同的优缺点,适用于不同的应用场景。以下是对两者的详细对比:

1. 数据精度与稳定性
雷达(LIDAR):

优势:LIDAR能够提供高精度的距离测量,通常具有厘米级的精度。它可以生成精确的点云数据,这对高精度的地图构建非常有用。LIDAR的测量不受光照变化的影响,因此在不同的光照条件下(白天、夜晚、阴天等)都能稳定工作。
劣势:在有雾、雨、雪等恶劣天气条件下,LIDAR的性能可能会受到影响,导致测量误差增大或数据丢失。

视觉(摄像头):

优势:摄像头不仅可以捕捉距离信息,还能获取丰富的颜色和纹理信息,这有助于识别物体、语义分割等高级任务。视觉SLAM(如基于单目或双目相机的SLAM)依赖图像特征点来进行定位和地图构建。
劣势:视觉SLAM容易受到光照变化(如光线不足或强光反射)的影响。此外,单目视觉无法直接测量距离,需要通过多帧图像间的几何关系来推测深度信息,这可能带来精度上的限制。

2. 环境适应性
雷达(LIDAR):

优势:LIDAR在复杂环境(如森林、城市街区等)中的表现优异,能够生成准确的环境模型。它在特征稀疏或无纹理的环境中(如白墙、隧道)依然能稳定工作,因为它依赖的是距离而非视觉特征。
劣势:LIDAR无法识别颜色或纹理信息,因此在需要高级环境理解(如语义地图构建)时,LIDAR的局限性较大。

视觉(摄像头):

优势:视觉系统在环境感知方面更为全面,可以识别物体、颜色、文字等丰富的信息,这对语义SLAM和环境理解非常有帮助。在有足够光照的情况下,视觉SLAM可以非常高效且准确地工作。
劣势:在光线不足或视觉特征单一的环境(如光滑表面、大面积重复图案)中,视觉SLAM可能会失效。

3. 计算复杂性与资源需求
雷达(LIDAR):

优势:LIDAR生成的点云数据虽然庞大,但由于其直接提供精确的距离信息,处理起来相对简单,尤其是在位置估计和障碍物检测等任务中。
劣势:LIDAR数据的传输和处理需要较高的带宽和存储空间,尤其是在实时应用中,数据处理的效率要求较高。

视觉(摄像头):

优势:视觉传感器的计算复杂性主要体现在图像处理和特征提取上,虽然算法复杂,但得益于现代计算机视觉技术的发展,如深度学习等,视觉SLAM在处理速度和精度上有了显著提升。视觉SLAM系统通常更小巧且功耗较低,适合轻量级的移动设备。
劣势:图像处理需要较强的计算资源,特别是在实时应用中。多帧图像的匹配、深度估计等过程对计算硬件的要求较高。

4. 成本与应用场景
雷达(LIDAR):

优势:LIDAR设备的精度和可靠性使其广泛应用于自动驾驶、测绘和高端机器人等领域。
劣势:传统的LIDAR设备成本较高,这限制了其在一些低成本应用中的普及。不过,近年来随着技术的发展,LIDAR的成本正在逐渐降低。
在这里插入图片描述

视觉(摄像头):

优势:摄像头成本较低,易于部署,因此在消费级产品(如智能手机、无人机、家用机器人等)中得到了广泛应用。
劣势:虽然摄像头便宜,但视觉SLAM对环境和光照的依赖较强,限制了其在某些场景中的应用。
综合比较
LIDAR SLAM 更适合需要高精度测绘、稳定性强、对光照不敏感的应用场景,如无人驾驶、户外测绘等。
视觉SLAM 则适合需要获取丰富环境信息、成本敏感、设备轻量化的场景,如室内导航、消费级电子产品等。
两者可以结合使用,以互补各自的缺点。例如,LIDAR和摄像头的融合SLAM(V-LSLAM)可以利用LIDAR的精度和摄像头的环境感知能力,实现更强大和鲁棒的系统。

  • 数据处理与特征提取:从传感器数据中提取环境特征,如边缘、角点、平面等。这些特征用于帮助机器人识别和理解环境。

  • 数据关联(Data Association):将当前时间步获得的环境特征与之前时间步的特征进行关联,帮助机器人跟踪自己在地图中的位置。

  • 状态估计与更新:使用算法(如卡尔曼滤波、粒子滤波、图优化等)来估计和更新机器人的位置(定位)和环境地图(地图构建)。

  • 闭环检测(Loop Closure Detection):当机器人返回到先前访问过的区域时,识别出这一闭环,并使用该信息来校正累积的定位误差,从而改善地图的精度。

SLAM 的应用

SLAM广泛应用于各种领域,如:

  • 机器人导航:自主机器人(如机器人吸尘器、送货机器人)使用SLAM进行实时定位和导航。
    在这里插入图片描述
    在这里插入图片描述

  • 无人驾驶:无人车在行驶过程中通过SLAM进行定位和环境感知,特别是在GPS信号不稳定的区域。

  • 无人机:无人机在探索未知环境(如室内或森林)时,使用SLAM构建地图并导航。

  • 增强现实(AR)和虚拟现实(VR):SLAM技术用于跟踪设备的位置和构建周围环境的3D模型,使得虚拟对象可以与真实世界无缝融合。

SLAM 技术难点

动态环境:在现实世界中,环境往往是动态的,可能包括移动的人、车辆或其他物体。这些动态元素会对SLAM系统造成干扰,使得定位和地图构建更加复杂。如何有效区分动态物体和静态环境,并对其进行处理,是SLAM技术的一大难点。

传感器噪声:所有传感器都会有噪声,这会导致测量数据的不确定性。例如,激光雷达、相机、IMU等传感器的数据都可能受到外界环境、设备状态等多种因素的影响。如何在存在噪声的情况下保持定位和地图构建的精度是一个重大挑战。

特征匹配:SLAM系统依赖于从传感器数据中提取的环境特征来进行定位和地图构建。在复杂的环境中,找到与之前已知地图中对应的特征点,并将新数据与已有地图准确关联,是非常困难的。如果数据关联出现错误,可能导致累积误差,甚至使整个SLAM系统失效。

闭环检测(Loop Closure Detection):当机器人回到之前访问过的区域时,系统需要检测到这一“闭环”,并使用该信息来校正累积的定位误差。然而,闭环检测本身就是一个复杂的任务,尤其是在大规模或特征不明显的环境中。

实时处理:SLAM涉及大量的计算,包括传感器数据处理、特征提取、位置估计和地图更新等。这些计算必须实时完成,以确保机器人在移动过程中能够正确定位和避障。随着环境规模的增加,计算量呈指数级增长,如何在保证实时性的同时处理大规模环境数据是一个主要挑战。

大规模地图管理:在大型或复杂环境中,地图数据可能会变得非常庞大。如何有效地存储、管理和检索这些地图数据,同时保持高效的查询和更新能力,是SLAM中的另一个难点。

多样化环境:SLAM系统需要能够适应各种不同的环境条件,如室内外环境、光照变化、天气变化等。例如,在低光照条件下,视觉SLAM的表现往往不如在光照充足的条件下理想,而激光SLAM在雨天或有雾的环境中可能会受影响。

**场景变化:**环境中的物体可能会随着时间发生变化(如移动、增减等),这要求SLAM系统能够动态地更新地图并处理场景的变化,以避免定位错误和地图失真。

数据融合:在现代SLAM系统中,通常会结合多种传感器(如激光雷达、摄像头、IMU等)来提高鲁棒性和精度。然而,不同传感器的数据类型、频率和噪声特性各不相同,如何有效融合这些异构数据是一项非常复杂的任务。

**同步问题:**传感器的同步问题也是一个挑战,不同传感器可能会以不同的频率采样,并且存在时间延迟。有效处理这些同步问题,确保融合数据的准确性和实时性,是SLAM系统中的一个难点。

误差累积:随着时间的推移,SLAM系统中的定位和地图构建误差会逐渐累积。闭环检测可以用来校正这种误差,但如果闭环检测失败或延迟,误差可能会变得难以控制。

全局一致性维护:当闭环检测成功后,系统需要调整整个地图和路径的全局一致性。这涉及复杂的图优化问题,特别是在大规模环境中,如何有效地进行全局优化是一个难点。

环境变化:SLAM系统必须能够在各种环境变化(如光线、天气、物体移动等)下保持稳定工作。确保系统在不同场景和环境条件下的鲁棒性和可靠性是SLAM技术的一个重大挑战。

故障处理:在现实世界中,传感器可能会发生故障或失效,SLAM系统需要具备容错能力,能够在部分传感器失效的情况下继续运行,或者快速切换到其他传感器或算法来维持系统的正常工作。

SLAM技术的难点主要集中在如何处理不确定性、实时性要求、环境适应性、多传感器融合、误差校正以及系统的鲁棒性和可靠性。这些难点需要多方面的技术创新和算法优化来解决,因此SLAM仍然是机器人、无人驾驶、AR/VR等领域的一个活跃研究方向

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海聊智造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值