文章:KISS-SLAM: A Simple, Robust, and Accurate 3D LiDAR SLAM System With Enhanced Generalization Capabilities
作者:Tiziano Guadagnino, Benedikt Mersch, Saurabh Gupta, Ignacio Vizzo ,Giorgio Grisetti, Cyrill Stachniss
编辑:点云PCL
代码:https://github.com/PRBonn/kiss-slam
欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。
从技术角度观察行业发展,努力跟上时代的步伐。公众号致力于点云处理,SLAM,三维视觉,具身智能,自动驾驶等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。文章未申请原创,未经过本人允许请勿转载,有意转载联系微信920177957。
摘要
利用激光扫描器(即LiDAR SLAM技术)实现环境的鲁棒精准定位与建图,对众多机器人应用至关重要。早期三维激光雷达SLAM方法常依赖IMU或GNSS传感器的辅助信息来提升定位精度并抑制漂移,而后期先进系统虽进一步优化了位姿估计,却以更高的计算开销和系统复杂度为代价。本文在遵循"保持精简"(KISS)原则的前提下,探索了纯LiDAR SLAM方案的性能极限。通过这种极简设计理念,KISS-SLAM系统在实现业界领先位姿精度的同时,几乎无需参数调优即可适配不同环境、传感器及运动模式。
本文是一种基于图优化的SLAM最佳实践,通过激光里程计计算扫描帧间相对运动并构建局部环境地图。为修正漂移误差,系统通过局部地图匹配与位姿图优化实现轨迹校正。实验结果表明,该设计在降低系统复杂性和减少多传感器依赖的同时,仍保持了卓越的性能表现。这种以简约为核心的设计,不仅为纯LiDAR SLAM建立了新的强基准线,也为后续研究提供了高性能的起点。此外该系统生成的全局一致地图可直接用于导航等下游任务。该开源系统在所有测试数据集中的运行速度均超越传感器帧率,专为实际应用场景设计。
图1:本文提出的SLAM系统能够实时精确估算超过9公里行驶距离的轨迹。使用相同的参数配置,在HeLiPR数据集中针对两种具有不同扫描模式和分辨率的激光雷达传感器实现了相似的输出效果。两种场景下,该系统均能实时计算里程计、成功实现大时间跨度的回环检测,并输出全局一致的轨迹。
主要贡献
本文提出KISS-SLAM—一种遵循"保持精简小巧"(KISS)原则的三维纯激光雷达SLAM框架。该系统核心目标是:在最大限度减少组件数量和参数需求的前提下,实现高性能SLAM。通过降低系统复杂度,使其能泛化应用于不同环境、传感器分辨率及运动模式。该方法不仅对现有几何SLAM系统构成挑战,甚至可与现代深度学习方案比肩。该系统使用同一组参数即可应对机器人汽车高速公路行驶、手持设备及平衡车等多种挑战性场景,并能适配不同扫描模式与分辨率。
本文主要贡献在于提出一种简洁高效的激光雷达SLAM方法,可在线实时精准计算机器人位姿并构建环境地图,明确了系统核心组件,并完整评估了各模块的影响机制,实验证明,在保持最少参数调优需求的同时,系统能获得高精度的全局一致位姿估计,本文提出三大核心主张:
这些主张已通过论文实验验证。并且在https://github.com/PRBonn/kiss-slam提供了与论文描述完全一致的开源实现。
主要内容
本文提出的KISS-SLAM系统核心组件架构。针对新输入的激光雷达扫描数据,系统首先基于传感器数据执行平台里程计估计。随后将扫描测量数据与自运动信息融合至局部建图模块。完成局部地图构建后,系统自动检测与历史局部地图的回环闭合。当检测到回环时,将对局部地图参考系执行位姿图优化。最终输出三维占据栅格地图。图2展示了该处理流程的可视化结果。
图 2:KISS-SLAM 总览。本文的处理流程会处理每一帧 LiDAR 扫描数据,并首先计算激光雷达的里程计,随后,系统将 LiDAR 点云与运动估计结果融合,构建局部地图,当激光雷达的运动超过 β 米时,系统会更新位姿图并搜索回环,若回环基于重叠率标准被正向验证,则执行一次位姿图优化步骤。
A. 使用 KISS-ICP 的 LiDAR 里程计
在 KISS-SLAM 系统中,为了实时估计激光雷达在空间中的位置和姿态(也就是位姿),系统首先要对每一帧传入的 LiDAR 点云数据进行预处理。这些点云原本是以传感器自身的坐标系表示的。
第一步:预处理点云数据
预处理包括两个主要步骤:
1. 去畸变(de-skewing):由于激光雷达在一个扫描周期内会运动,因此点云中不同点的采集时间并不完全相同。去畸变操作就是为了消除这种时间差所带来的影响,使得点云更准确地代表一个时间点的空间形状。
2. 体素下采样(voxel downsampling):这个操作将空间划分为一个个小体积单元(体素),在每个体素内只保留一个代表点,从而减少点的数量,提高后续处理的效率,同时保持点云的几何结构。
经过这一步处理后,得到一个结构更紧凑、质量更高的点云。
第二步:初始位姿估计
系统会基于上一帧的位姿估计值,以及假设激光雷达以恒定速度移动的运动模型,预测当前帧的一个初始位置。这一预测不一定精确,但足以作为后续优化的起点。
第三步:点对点 ICP 优化
有了初始估计之后,系统会通过一种叫做“点对点迭代最近点算法”(Iterative Closest Point, 简称 ICP)的方式来不断优化当前帧的位姿估计。在每一轮迭代中,系统会进行以下操作:
1. 匹配点对:从当前帧的点云中找到与局部地图中最接近的点,形成一组“最近邻”点对。
2. 计算误差:将当前帧的点,根据当前估计的位姿,变换到地图坐标系中,并计算与对应地图点之间的距离,也就是所谓的残差或误差。
3. 优化位姿:系统尝试调整当前帧的位姿,使得所有这些残差尽可能小。也就是说,让当前帧变得尽量与局部地图对齐。
这个过程会反复进行,直到优化结果稳定下来,也就是误差不再明显减少为止。最终,系统就得到了当前帧 LiDAR 的精确位姿。
第四步:更新局部地图
在位姿估计完成后,系统会把当前帧的点云(通常是下采样过的版本)添加到局部地图中。这个地图会随着扫描数据的不断进入而动态更新,用于后续帧的对齐。
通过这样的方式,KISS-SLAM 能够实时、精确地估计激光雷达在环境中的移动轨迹,而不依赖外部定位系统。这一过程具有良好的稳定性和效率,适用于各种移动机器人和自动驾驶场景。
B. 局部建图与位姿图构建
与许多现有方法类似,该方法并不维护一个单一的全局地图,而是采用了局部地图分割策略。这一设计充分利用了里程计估计在局部范围内的一致性优势,从而在每一个地图片段中都能获得高精度的短期轨迹。在系统中,每个局部地图 MkM包含以下几个组成部分:
在实际操作中,系统会将经过下采样和去畸变处理后的 LiDAR 扫描数据,结合里程计提供的运动估计,融合到当前的局部地图中。接下来,系统会根据当前传感器位姿与当前局部地图关键位姿之间的距离,来判断是否需要创建一个新的局部地图。如果传感器的移动距离超过某个设定的阈值(例如 β 米),就会创建一个新的局部地图。此时:
为了在整个系统中保持全局一致性,系统维护了一个位姿图(pose graph)。在这个图中:
C. 回环检测(Loop Closing)
在完成局部地图的分割之后,系统会尝试在最新生成的局部地图与之前的所有局部地图之间寻找回环(loop closure)。回环是指系统再次到达之前曾经到过的地方,通过检测这些回环,可以为位姿图提供额外的约束,从而校正因里程计误差而产生的累计漂移,增强全局一致性。
1. 回环候选的初步检测
我们采用了 Gupta 等人提出的方法来寻找回环候选。具体步骤如下:首先,从局部地图中提取地面点,并将点云与当前关键位姿的 xy 平面对齐,以实现统一的朝向。接着,将该局部地图投影成 俯视图(鸟瞰图),具体是通过计算每个二维网格中投影点的密度来构建一张密度图。然后,从这个 2D 密度图中提取 二进制 ORB 特征描述子,并在一个包含所有历史局部地图密度图的数据库中寻找匹配项。
当系统检测到潜在的回环候选时,会进行一次 基于 RANSAC 的几何验证,通过比对密度图的结构实现二维对齐。这个对齐结果再与之前地面对齐的姿态结合,得到两个局部地图之间的初始配准关系。
2. 三维几何验证
为了确保所检测到的回环在几何上是可靠的,系统还会进行一轮基于三维点云信息的验证。验证步骤包括:对每个局部地图进行处理,将其划分为体素网格,并在每个体素内计算出平均点坐标(即体素中心)以及通过主成分分析得到的法向量。这些信息组成了一个由中心点和法向量对构成的点云。接着,应用先前估计的初始配准结果,将两个局部地图中的点云进行一次对齐。对齐后,系统会评估两个点云之间的重叠程度,用一种称为 Szymkiewicz–Simpson 重叠系数 的指标来衡量两个点云在空间中的相似区域大小。如果这个重叠系数超过某个设定的阈值(例如设为 40%),说明两个局部地图确实对应于同一位置,那么该回环就会被接受。
3. 添加回环边并优化位姿图
一旦某个回环被确认有效,系统就会在位姿图中添加一条回环边(loop closure edge),其约束关系来源于最终的三维点云配准结果。接下来,系统对整个位姿图进行全局优化,更新关键帧位姿的估计,从而在整个地图中实现更高精度和一致性的定位。
总而言之,这一过程确保了 SLAM 系统不仅能够在局部准确跟踪传感器的位置,还能在长时间运行中自动检测并修正回环,从而构建出无漂移的全局地图。
D. 精细化位姿图优化
在处理完所有的 LiDAR 扫描数据后,系统会执行一次精细化的位姿图优化。在这一步中,系统首先固定代表关键帧的图节点,然后根据各个局部地图中保存的局部轨迹,新增节点与边,将这些扫描帧的位姿也纳入优化范围。
这种做法的目的,是为了在每个局部轨迹中进一步细致地调整扫描帧的位姿,从而在不影响整体关键帧结构的前提下,将微小的漂移误差在局部范围内进行重新分配和平滑。这可以显著提升地图的局部一致性和精度。
整体而言,这一优化过程可以看作是 Grisetti 等人提出方法的一种离线实现版本,旨在进一步提升最终地图和轨迹估计的质量。
实验与结果
本论文的重点在于提出一种简单却高效的 LiDAR SLAM 方法,能够在机器人运动过程中准确估计其位姿并构建环境地图。以下实验验证了我们的主要观点:
表格 I:NCLT 数据集上的定量结果。我们报告绝对轨迹误差(ATE,以米为单位)和相对 KITTI 里程计指标。
A. 实验设置
使用多个公开数据集和标准评估方法对系统进行全面测试。为了评估系统在不同自动驾驶场景和传感器下的表现,我们选用了 MulRan、HeLiPR 和 Apollo 数据集。其中 HeLiPR 提供了多种激光雷达设备(包括不同测距技术与扫描模式),而我们排除了由 Velodyne VLP-16 录制的序列,因为它与周围传感器存在自遮挡问题。
此外,我们还在高度动态的移动平台上测试了系统的适应能力,例如使用平衡车采集的 NCLT 数据集,以及手持设备采集的 Newer College 数据集,展示了系统的通用性。
表格 II:MulRan 数据集上的定量结果。我们报告 ATE(以米为单位)和相对 KITTI 里程计指标。
B. 位姿精度评估
首个实验聚焦于评估系统的位姿精度,以验证我们提出的第一条主张。我们采用标准的 ATE(绝对轨迹误差) 和 KITTI 提出的相对误差指标 进行评价,工具选用开源的 evo 工具包,确保评估过程标准化并便于复现。
对 MulRan 和 HeLiPR 数据集,我们在每个场景执行三次运行,并取指标平均值。我们将 KISS-SLAM 的结果与目前主流的开源 LiDAR SLAM 系统进行比较,如 SuMa、MULLS、CT-ICP 和 PIN-SLAM,结果如表 I 至表 V 所示。
结果表明,KISS-SLAM 在各种传感器分辨率、运动模式和扫描方式下都能保持领先或次领先地位,始终提供高精度的位姿估计,并且是唯一一个能在所有场景成功运行的系统。例如,在 HeLiPR 中使用 Aeva 激光雷达时,只有我们的方法成功运行,甚至优于基于神经网络的 SLAM 系统 PIN-SLAM。
更重要的是,KISS-SLAM 所有测试均使用相同配置,无需调参。此外,它在速度上也具备优势,能超过传感器帧率运行。而 PIN-SLAM 在保证精度的前提下,难以实现实时运行。
C. 参数变化消融实验
本实验验证了我们的第二条主张:KISS-SLAM 能够在无需修改配置的前提下适应不同环境与传感器设置,而对比方法往往需要大量调参。
需要说明的是,我们在此不讨论参数的总数量,因为一些固定在程序中的参数无法从配置文件中获取。我们统计的是,在表 III 和表 V 中取得最佳结果时,系统在不同传感器和运动模式下必须更改的参数数量。
表格 III:HeLiPR 数据集中 Bridge(Bri)、Roundabout(Rou)和 Town(To)序列的定量结果。我们报告绝对轨迹误差(ATE,以米为单位)和相对 KITTI 里程计指标
表格 IV:Apollo 数据集上的定量结果。我们报告 ATE(以米为单位)和相对 KITTI 里程计指标
表格 V:Newer College 数据集上的定量结果。我们报告 ATE(以米为单位)和相对 KITTI 里程计指标
例如,在 HeLiPR 数据集中,使用 Avia、Aeva 和 Ouster 三种雷达,在相同环境与运动路径下进行测试,而在 Newer College 数据集中,运动模式变为手持扫描。结果见表 VI,显示所有对比方法都需要改动多个参数,而 KISS-SLAM 无需任何改动即可直接运行并保持高性能,证明其出色的泛化能力和适应性。
表格 VI:在不同传感器和运动模式下,配置之间更改的参数数量。
D. 实际机器人导航实验
KISS-SLAM 的建图结果可以直接用于机器人导航任务。使用 Hesai XT-32 雷达搭载在 Clearpath Husky 机器人上采集 3D 数据,运行 KISS-SLAM 后生成一个 3D 栅格地图(体素大小为 0.05 米)。由于场景是室内办公环境,处理时将最大点云距离从 100 米缩小为 50 米,其余配置保持不变。KISS-SLAM 能在该机器人搭载的 Intel NUC(i7+32GB RAM) 上超过传感器帧率运行。同时,我们还在同一台电脑上运行了栅格地图构建模块。为生成 2D 栅格地图,从 3D 地图中选取某一高度范围(如 0.1m 到 0.2m)的水平切片,并根据垂直方向上的最大占据概率投影为二维地图。
随后使用另一台机器人 Clearpath Dingo(配备 SICK TiM781S 2D 激光雷达)进行全局定位与跟踪实验。采用 RVP-Loc(Sapienza 机器人视觉组的 Monte-Carlo 定位实现) 进行定位,并将其在 KISS-SLAM 构建的地图上与在传统 GMapping 构建的地图上进行对比。后者使用 Dingo 本身的数据构建。定位初始化时,我们在整张地图上均匀撒布 10,000 个粒子。当定位收敛后(判断标准为平移方向标准差小于 0.2 米、角度方向标准差小于 10°),再评估其跟踪精度。使用向上摄像头检测天花板上的 AprilTags 获取地面真实位姿。
图 3:使用我们的方法生成的占据栅格地图。上图展示了我们使用 KISS-SLAM 处理来自 Hesai XT-32 和 Clearpath Husky 的所有 3D 扫描后生成的三维占据栅格地图。下图展示了通过对三维地图进行切片生成的对应二维栅格地图。随后我们使用 Grisetti 等人的方法在该地图上进行二维定位。
为确保稳定性,我们对每个序列运行 10 次,每次随机初始化。表 VII 展示了每组实验的均值与标准差,结果表明使用 KISS-SLAM 地图的定位效果与传统方法无显著差异,证明其具备实际应用价值。
表格 VII:使用我们的 SLAM 系统生成的二维占据栅格地图进行二维定位性能的定量评估,并与 GMapping 栅格地图进行对比。评估基于在办公环境中录制的五个包含静态和动态场景的序列。
总结
本文提出了 KISS-SLAM,一种简单却非常高效的 LiDAR SLAM 方法。该方法仅依赖激光雷达扫描,不需要额外的传感器,即可估计机器人的轨迹和环境地图。我们的方法采用极简设计,能够适用于各种具有挑战性的环境,如高速公路行驶、手持设备和赛格威平台。此外,该系统并未针对特定的测距技术或扫描模式进行定制,我们唯一的假设是:随着机器人在环境中移动,点云数据会按顺序生成。在多个数据集上实现并评估了该方法,并与其他现有技术进行了对比,验证了本文提出的所有论点,并开源了代码。实验结果表明,我们的方法在性能上可与当前更复杂的先进 LiDAR SLAM 系统媲美甚至更优,但仅依赖少量参数,并能在不同条件下、多个数据集上以相同的参数配置保持良好表现。此外,该系统的输出可有效用于机器人导航等下游任务。最后系统在所有展示的数据集上运行速度均快于传感器帧率。这项工作将成为未来 LiDAR SLAM 系统的新基准,并为后续研究提供一个高性能的起点。开源代码稳定且结构简单,易于扩展,性能优异,在推动 LiDAR SLAM 发展边界的同时,对更复杂的系统提出挑战。
相关阅读:2024年度历史文章大汇总
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有