SLAM:激光雷达
科普文,参考自:https://mp.weixin.qq.com/s/aDQpB8Qz9wC1EgniXuCSkg
激光雷达 Lidar 如何应用于 SLAM
一、Lidar SLAM(是什么)
利用激光雷达使机器人在未知环境中构建地图的同时,实时确定自身在该地图中位置的技术。
激光雷达的传感器可以实现发送激光脉冲,同时测量脉冲碰到物体后反射回来所需的时间,
通过分析返回的激光信息,Lidar SLAM系统可以生成代表环境的高精度三维点云,
并利用这些信息估算机器人在地图中的位置和朝向。
大部分 SLAM 包含两个主要模块:
- 模块 1:测距模块。即进行环境感知的传感器,包括声呐、激光雷达扫描仪、IMU、摄像头及其他图像传感器。
- 模块 2:数据提取模块。从测距设备收集的传感数据中提取信息,并据此识别未知环境中的地标特征。一个正常运行的SLAM系统需要机器人(或载体)、测距设备、数据提取软件以及其他硬件、软件或处理技术之间持续协同工作。
二、Lidar SLAM 工作原理
2.1 SLAM基本原理
SLAM的核心思想是让机器人或自主系统在探索未知环境的同时,构建该环境的地图,并确定自身在所生成地图中的位置。这一目标通过融合来自多种传感器(如激光雷达、摄像头和惯性测量单元IMU)的数据来实现,从而估算机器人的运动轨迹及环境中地标的位置。
SLAM算法通常包含两个主要步骤:
- 预测步骤。预测步骤(又称运动更新或里程计更新)根据机器人先前的位置及其传感器提供的运动信息,估算其新位置;
- 校正步骤。校正步骤(又称观测更新或传感器更新)则利用环境中的测量数据(例如激光雷达检测到的地标的距离)对预测位置进行修正。
2.2 Lidar 作用
激光雷达传感器在SLAM系统中扮演着至关重要的角色,能够提供高精度、高分辨率的环境数据。这些传感器发射激光脉冲,脉冲遇到物体后反射回传感器,系统通过计算激光往返时间来测量与物体之间的距离。激光雷达可生成密集的三维点云——即一组在三维空间中表示环境物体表面的点。
能干嘛:可以使用激光雷达生成地图,地图可以采用多种形式表示:例如占据栅格地图,其中每个栅格单元表示该位置被物体占据的概率;或点云地图,其中环境中的物体位置以三维空间中的点集形式呈现。
怎么用:为了估计机器人的位姿,SLAM算法利用激光雷达数据识别并跟踪环境中的地标。通过将观测到的地标与地图中已存储的地标进行比对,算法可确定机器人相对于地图的位置和朝向。这一过程通常涉及寻找最佳变换矩阵,使当前观测的激光雷达数据与已有地图对齐,常用技术包括迭代最近点算法(ICP)或其他优化算法。随着机器人不断探索环境并采集新的激光雷达数据,地图会持续更新,机器人的位姿也随之不断优化。
2.3 Lidar 参数规格
- 探测距离与分辨率:更长的探测距离使SLAM系统能在更远处检测和建图物体,这对高速行驶的自动驾驶车辆尤为重要。高分辨率激光雷达可提供更精细的点云,有助于识别环境中更小或更复杂的地标。
- 视场角(Field of View, FoV):激光雷达的视场角决定了单次扫描所能覆盖的环境空间范围。宽视场角使SLAM系统能映射更大区域,并从不同角度检测物体,这对于需要全面感知周围环境的应用(如自动驾驶中的碰撞规避或大型室内空间建图)尤为关键。例如,InnovizOne固态激光雷达提供73度水平视场角和20度垂直视场角,能捕捉广阔的环境视野,非常适合城市道路驾驶或复杂室内环境等需要全方位感知的场景。
- 更新频率与延迟:更高的更新频率可使SLAM系统更频繁地获取环境快照,从而更准确地反映环境变化。低延迟的激光雷达能近乎实时地提供环境数据,这对需要快速决策的应用(如高速自动驾驶中的障碍物检测与避让)至关重要。
三、主流算法
3.1 GMapping
GMapping 是一种基于Rao-Blackwellized粒子滤波器(RBPF)的经典激光雷达SLAM实现。该算法采用栅格地图表示环境,并通过扫描匹配(scan matching)将激光雷达扫描数据与已有地图对齐。GMapping 能在小规模和大规模环境中均提供准确的地图构建与定位结果。
GMapping 采用自适应重采样策略,根据机器人位姿估计的不确定性动态调整滤波器中粒子的数量,从而在计算效率与鲁棒性之间取得良好平衡。该算法已广泛应用于机器人领域,包括自主导航、室内建图和移动机器人定位等。
3.2 Hector SLAM
Hector SLAM 是一种不依赖里程计数据的激光雷达SLAM算法,适用于没有轮式编码器或其他运动传感器的平台。该算法同样使用栅格地图表示,并采用多分辨率方法处理不同精度级别的激光雷达数据,从而高效应对大规模环境。
Hector SLAM 的核心是一种快速扫描匹配技术,通过连续激光扫描之间的对齐来估计机器人的运动。此外,算法还集成了回环检测与优化机制,用于校正长时间运行中累积的位姿漂移。Hector SLAM 已成功应用于多种平台,包括空中飞行器、地面机器人,甚至手持式激光雷达扫描设备。
3.3 Cartographer
Cartographer 是由谷歌开发的一款通用且可扩展的激光雷达SLAM算法,支持2D与3D建图,并可融合多种传感器数据,包括激光雷达、惯性测量单元(IMU)和里程计信息。该算法结合局部与全局优化技术,以生成一致且精确的环境地图。
在局部优化阶段,Cartographer 利用实时扫描匹配估计机器人位姿,并更新当前正在构建的子地图(submap)。
在全局优化阶段,则采用位姿图优化(pose graph optimization)技术校正漂移,确保地图的全局一致性。Cartographer 已广泛应用于室内建图、自主导航以及大规模室外测绘项目等多种场景。
3.4 LOAM(Lidar Odometry and Mapping)
LOAM 是一种专为高分辨率激光雷达设计的实时3D激光雷达SLAM算法。该算法将激光雷达数据分解为两个部分:低分辨率部分用于估计机器人里程计(即运动轨迹),高分辨率部分则用于构建环境的精细地图。
LOAM 采用多线程架构高效处理激光雷达数据。算法首先从扫描数据中提取特征(如边缘和平面),然后在连续帧之间匹配这些特征以估计机器人运动,最终利用该运动估计构建详细的3D环境地图。LOAM 已成功应用于自动驾驶汽车、无人机和各类机器人平台,在多种复杂环境中展现出卓越的鲁棒性与精度。
四、挑战与局限
- 计算复杂度高。激光雷达SLAM算法,尤其是处理大规模环境或高分辨率数据时,计算开销巨大。这不仅对实时性构成压力,也对硬件提出较高要求。有时需针对特定平台或应用对算法进行优化,才能满足性能需求。
- 动态环境处理困难。多数SLAM算法假设环境静态,但现实场景常包含行人、车辆等动态物体。如何有效区分动静态目标并动态更新地图,仍是技术难点。
- 回环检测与全局一致性。在大尺度或长时间任务中,实现全局一致性是一大挑战。回环检测(即识别机器人返回已访问位置)因激光数据维度高、存在“感知混淆”(不同地点外观相似)等问题而尤为困难。