当前位置: 首页 > news >正文

激光SLAM算法综述

一. SLAM的系统框架

SLAM的系统框架包括:传感器数据采集处理前端里程计后端优化回环检测地图构建

2.  前端里程计主要要解决的问题有点云去畸变和点云配准

        2.1 点云畸变产生的原因:激光雷达在扫描过程中,载体机器人是在不断运动的,这就会导致同一帧中的点云数据,是由在不同位置下的激光雷达坐标系测量得到的。常见的点云运动畸变去除方法有纯估计法和传感器辅助法。

        2.2  纯估计法:   VICP (velocity updating ICP,VICP)是ICP算法的变种,考虑了激光的运动畸变。VICP算法假设在 一帧激光雷达数据中机器人是匀速运动,对ICP估计的位姿采用线性插值法对点云作运动补偿,将补偿后的数 据再次放入 ICP中求解,形成一个迭代闭环求解最优值。

        2.3 传感器辅助法:   传感器辅助法主要是利用高频率传感器如惯性测量单元(inertial measurement unit,IMU)极高测量频率的特点,直接测量角速度和线速度,得出每个时刻的位 姿,对点云作运动补偿。

        2.4  点云配准

其中ICP包括

2.4.1   PP-ICP (point-to-plane ICP)原来计算点与点之间的距离改成计算的是点到面之间的距离,相对于 ICP的一阶收敛速度,PP-ICP是二阶的,收敛速度更快。

2.4.2   PL-ICP(point-to-line ICP)与PP-ICP类似,通过求取点线之间的最小距离使算法快速 收敛,提高匹配精度

2.4.3   NICP(normal ICP)将点云表面法向量信息加入到了 ICP 算法中,用于提高配准的准确度和鲁棒性

2.4.4   IMLS-ICP (implicit moving least square ICP)采用隐式函数来表示点云表面,并且通过最小化MLS逼近和隐式函数之间的距离来进行点云配准,能有效处理非刚性物体的配准问题

2.4.5   GICP(generalized ICP)/(广义迭代最近点法)引入一个全局参考框架来增强ICP算法的全局优化能力,解决了ICP算法运行缓慢、容易陷入局部最优解等问题

2.4.6   VGICP(voxelized GICP)是一种扩展的广义迭代最近点法,通过将点云转换为一组小体素网格,提出一种多点分布聚合方法估计体素分布,使匹配更加高效。

其中基于数学特征方法包括:

2.4.7   P2D-NDT(point-todistribution NDT):NDT算法从2D推广到3D场景

2.4.8   基于极大团的配 准假设生成方法MAC:实现了 无需样本、无需训练、同时兼顾精度和效率的三维配准重建效果

基于学习的方法:基于深度学习的点云配准方法通过数据驱动方式学习,能获得比人工设计更精准的模型,但其模型的前 期训练和模型部署需要消耗大量的GPU资源,暂时无 法实现在CPU上的实时计算运行。包括:

2.4.9   FCGF提出一种全卷积几何特征,摆脱了先前SOTA方案需要低级特征输入的限制,但在对具有不同旋转分布的点云配准时效果不好;

2.4.10 SpinNet:由一个空间点转换器和一个基于3D卷积神经网络的特征提取器组成,能够提取点云表面特征,具有旋转不变性

2.4.11   Lepard:算法引入Transformer注意力机制,通过结合 RANSAC和ICP完成点云配准

2.4.12  REGTR:使用注意力机制取代显性特征匹配和RANSAC,提出一个包含自注意和交叉注意的 transformer网络架构

3. 后端优化包括基于滤波的后端优化和基于图优化的后端优化

        3.1   基于滤波的后端优化

滤波算法缺点是无法校正累计误差,在噪声大、回环多的场景下长时间运行会产生严重的误差漂移。 

        3.2   基于图优化的后端优化

        图优化(graph optimization)利用图论的方法对系统进行建模求解。因子图优化(factor graph optimization)在图优化的基础上将图划分为变量节点和因子节点。因子图用变量节点表示问题的状态变量,用 因子节点连接它们并表示约束条件,利用迭代最小化算 法,在因子图上反复更新变量节点和因子节点的估计值,直至达到收敛状态。源非线性优化算法库有

        Ceres-Solver

        G2O

        ISAM

        SE_Sync

        SE

4.回环检测

回环检测模块用于消除累计误差,提高定位和地图精度,对在大环境、回环多、长时间下运行的SLAM系统至关重要。

        Scan Context++

        Scan Contxet

        FPFH

5.地图构建

2D地图用栅格

3D地图用语义地图,点云地图,网格地图

激光SLAM方案

1.    2D激光SLAM:Fast-SLAM,GMapping,Karto,Hector-SLAM,Cartographer

        1.1   Fast-SLAM:采用粒子滤波技术, 可以处理非线性系统。大环境下或者在里程计误差较大时需要更多的粒子才能得到较好的估计,这可能会造成内存 爆炸,而粒子的重采样会导致粒子耗散。

        1.2   GMapping:通过降低粒子数量的 方法大幅度缓解内存爆炸;采用选择性重采样方法,对粒子进行重要性权重排序,对权值低的粒子进行重采样,解决RBPF算法中粒子耗散问题。基于滤波的算法且无 回环检测,长时间运行存在较大累计误差,无法在室外 构建大环境地图。

        1.3   Karto:第一个基于图优化的开源SLAM算法

        1.4   Cartographer:是目前精度最高、实时性、鲁棒性最好、二次开发最为便捷的开源SLAM算法之一。引入子图(submap)概念,使用 CSM和梯度优化相结合的方法使帧与子图进行匹配。后端基于图优化算法,将当前激 光帧和之前建立的所有子图都加入闭环检测模块,采用分支定界法提升搜索速度。

2.   3D激光SLAM

         2.1   LOAM:根据曲率大小将特征点分类为边缘特征点和平面特征点,缺少后端优化和回环检 测模块。

        2.2   A-LOAM:使用Eigen 矩阵库和Ceres-Solver非线性优化 库代替原本复杂的数学推导

        2.3   LeGO-LOAM:引入关键帧概念,使用关键帧及其局部范围内的数据帧组成 loop-submap。基于地面点的优化更加鲁棒精确,计算量更小

        2.4   Loam_livox:针对Livox新型固态激光雷达扫描特性,对有效点筛选和特征提取部分进行优化

        2.5   NASA:提出一种基于稠密点云快速定位的直接激光里程计将关键帧和相关联点云储存在字典中,节约帧图匹配的计算资源和降低基于关键 帧构成的子图所含有的重复信息

        2.6   CP-ICP:是一种弹性的带回环的激光雷达里程计法,考虑了帧内数据的连续性和帧间数据的非连续性。

        2.7   Intensity-SLAM:利用强度信息构建强度地图,协助特征点提取和位姿估计提出一种基于强度信息的纯激光雷达 SLAM算法,算法的关键在于利用点云的强度信息生成一张强度图像,后续的特征提取和配准、回环检测与位 姿图估计都是基于强度图像进行的

3.    多传感器融合SLAM

特点:相较于纯激光雷达方案,使用激光雷达与IMU进行信息融合,利用IMU高频率输出运动信息,校正点云运动畸变,提供一个良好的初值可以使算法避免陷入局部最小值,提高算法精度和减少计算量。

分类:可以分为紧耦合和松耦合

        松耦合存在两个优化过程,它将激光雷达数据和IMU数据分别进行参数估计,再使用估计出的参数进行融合

        紧耦合表现出更好的鲁棒性和准确性,它使用激光雷达数 据和 IMU数据共同构建参数向量,再进行优化和估计。

LIO-SAM:提取特征点,并使用IMU数据 校正点云畸变,提供数据帧之间位姿变换的初始值;后端采用因子图优化架构,消除累计误差,进行全局优化。

LVI-SAM:由激光-惯性系统和视觉-惯性系统组成。LIS为VIS提供准确的深度信息,提 高VIS精度;反过来LIS利用VIS的初步位姿估计进行扫描匹配。

R2LIVE:使用误差状态迭代卡尔曼滤波融合三个传感器的测量值进行状态估计,并通过因子图进一步优化提高整体精度,但其视觉系统采用特征点法,时间开销大且在非结构化环境下易失效。

R3LIVE:使用光流法代替原本的特征点法进行帧间跟踪,通过最小化帧到 地图的光度误差融合视觉数据,并为地图渲染RGB颜色。

R3LIVE++:在R3LIVE++基础上,考虑了相机光度校准和对相机曝光时间的在线估计,进一步提高了定位和建图的精度。

FAST-LIO:使用激光雷达与 IMU 紧耦合的误差状态迭代卡尔曼滤波算法。提 出一个新的计算卡尔曼增益的公式,使计算量不再依赖于测量维数,而是依赖于状态维数,极大地减少了计算量。

FAST-LIO2:为了使算法能自然适应不同扫描模式的激光雷达和实现更 快的计算,省略了耗时的特征提 取模块,采用直接法将所有点云数据统一处理。

Faster-LIO:在FAST-LIO2的基础上使用一种增量式稀疏体素(iVox)数据结构代替ikd-tree,可以有效降低点云配准的时间

FAST-LIVO:在FAST-LIO2的LIO系统基础上使用相机传感器加入VIO子系统,在测量层面实现两个传感器的耦合,在激光雷达退化场景和光线变化剧烈的场景下依旧能可靠运行。

Point-LIO:以单个点云为数据处理单位,更新每个点的状态, 具有极高的里程计输出频率和带宽,在自身运动存在严重振动和高角速度高线速度的情况下也能鲁棒运行,从根本上解决了运动失真。

4.   基于深度学习的3D激光SLAM

分类:深度学习与激光雷达SLAM的结合主要应用于系统中的几个模块,如点云的特征提取和配准、回环检测、构建语义.

特征提取:FCGF、SpinNet
配准方法:Lepard、 REGTR
回环:OverlapNet、Overlap-Transformer

SUMA++:基于激光雷达的语义 SLAM,使用 RangeNet++[70]对点云进行语义分割,根据语义信息剔除动态目标,再将语义信息融入系统,与几何信息一起建 立约束,从而提高定位和建图精度。

SA-LOAM:提出一种语义辅助的 ICP算法,并在闭环检测模块中集成基于语义图的位置识别方法,适合在大规模场景中构建全局一致性语义地图。

ASL-SLAM:提出一种基于活动语义的回环检测方法,通过IMU传感器对Z轴角速度和加速度的分析来检测转弯和通过减速带两种语义。

提出一种自监督的激光里程计,在投影的强度图像上使用SuperPoint提取特征点,使用传统ICP方法估算位姿后用于在线训练网络

EfficientLO-Net:是第一个完全端到端的高效3D激光雷达里程计框架,提出了基于投影感知的三维点云表示 方法和特征学习方法

数据集与评价指标

KITTI:包含视觉图像、激 光雷达点云、IMU、GPS等数据

SemanticKITTI:在KITTI数据集的基础上对点云数据进行标注,分类为28类语义,实现全场景分割

ApolloScape:数据集使用了高精度地图采集车,是目前行业内环境最复杂、标注最精准、数据量最大的三维 自动驾驶公开数据集

NTU-VIRAL:搭载激光雷达、相机、IMU和超带宽填补了SLAM领域无人机数据集的空白

TUM-RGBD

EuRoC

Oxford RobotCar

USVInland

评价指标:

(1)绝对轨迹误差(absolute trajectory error,ATE)用于衡量估计的轨迹与真实轨迹之间的误差,可以非常 直观地反映算法精度和轨迹全局一致性。首先,将估计 轨迹与真实轨迹进行时间戳对齐,再计算每个时间步估 算的位姿矩阵与真实位姿矩阵之间的欧式距离,最后对 所有时间步的相对位姿误差取均方根误差(root mean square error,RMSE)得到ATE。


(2)相对位姿误差(relative pose error,RPE)用于衡量估计的相对位姿变换与真实相对位姿变换之间的误 差,适合估计系统的漂移。同样的,RPE第一步也是进 行时间戳对齐,接着对每一段时间间隔计算估计值的相 对位姿矩阵和对应真实值的相对位姿矩阵,最后使用 RMSE求平均值得到RPE。

总结和展望

1.结合深度学习

深度学习可以用于改善SLAM中的关键技术,比如特征提取、匹配、姿态估计等方面。例如,使用深度学习进行语义分割,可以提取更加语义丰富的地图信息;使用深度学习进行图像去噪或者对抗扰动,可以提高SLAM系统在复杂环境下的鲁棒性。

2.多传感器融合

多传感器融合是提高SLAM系统精度和鲁棒性的关键。将来,SLAM系统可能会结合更多种类的传感器,如高精度惯性测量单元(IMU)、全景相机、多频段激光雷达等,以获取更丰富的环境信息。同时,如何有效地融合这些异构传感器的数据,是未来研究的重点之一。

3.特殊场景下的鲁棒性研究

SLAM系统在特殊场景下的鲁棒性是一个挑战,比如光照变化大、大规模动态物体存在、传感器故障等情况。未来的研究可能会集中在如何提高SLAM系统在这些特殊场景下的鲁棒性,可能通过引入更多的传感器、优化算法或者结合深度学习等方法来解决这些问题。


相关文章:

  • 基于Python的多光谱遥感数据处理与分类技术实践—以农作物分类与NDVI评估为例
  • Linux 系统监控大师:Glances 工具详解助力自动化
  • Codigger Desktop:Boby形象互动提升用户体验
  • 【HTTPS协议原理】数据加密、如何防止中间人攻击、证书和签名、HTTPS完整工作流程
  • [创业之路-376]:企业法务 - 创业,不同的企业形态,个人承担的风险、收益、税费、成本不同
  • elasticsearch 查询检索
  • java进阶之git
  • webpack详细打包配置,包含性能优化、资源处理...
  • Docker离线安装与配置指南
  • weibo_har鸿蒙微博分享,单例二次封装,鸿蒙微博,微博登录
  • 几种电气绝缘类型
  • Java求职面试:从Spring Boot到微服务的全面考核
  • 2025企微CRM系统功能对比:会话存档、客户画像与数据分析如何重构客户运营?
  • 云原生周刊:KubeSphere 平滑升级
  • 八数码难题
  • 示例:spring xml+注解混合配置
  • Node.js 操作 ElasticSearch 完整指南:从安装到实战
  • Sentinel源码—8.限流算法和设计模式总结一
  • 大数据学习(112)-HIVE中的窗口函数
  • SpringMVC入门
  • 黎巴嫩“伊斯兰集团”组织证实其高级成员在以军空袭中丧生
  • 经常失眠,睡眠质量低?也许只是缺这种营养
  • 九江市人大常委会原党组成员、副主任戴晓慧主动交代问题,正接受审查调查
  • 著名电化学家、我国工业电化学奠基人之一郭鹤桐逝世
  • “HPV男女共防计划”北半马主题活动新闻发布会在京举办
  • AI换脸侵权案入选最高法典型案例:明晰人工智能使用边界