文章:Adaptive-LIO: Enhancing Robustness and Precision through Environmental Adaptation in LiDAR Inertial Odometry
作者:Chengwei Zhao , Kun Hu , Jie Xu , Lijun Zhao, Baiwen Han, Kaidi Wu, Maoshan Tian, Shenghai Yuan
编辑:点云PCL
摘要
新兴的物联网 (IoT) 应用(如无人驾驶汽车)对高精度定位和导航的需求日益增长。如今,LiDAR 惯性里程计 (LIO) 在机器人和自动驾驶领域变得越来越普及。然而,许多现有的 SLAM 系统在适应不同场景方面仍然存在不足,主要挑战包括:在匀速假设下,较长的帧间隔导致点云精度下降;IMU 饱和时错误的惯性数据耦合影响精度;以及在室内外场景转换时,由于使用固定分辨率地图,定位精度下降。为了解决这些问题,本文提出了一种松耦合的自适应 LiDAR 惯性里程计 (Adaptive-LIO)。该方法通过自适应分割提高建图精度,基于IMU饱和度与故障检测调整运动模式,并利用多分辨率体素地图自适应调整地图分辨率(基于 LiDAR 中心的距离)。我们的方法已在多个具有挑战性的场景中进行了测试,实验结果验证了其改进的有效性。代码已开源:https://github.com/chengwei0427/Adaptive-LIO.git
主要贡献
目前,许多研究采用紧耦合系统,如 LIO-SAM、LINS 和 FAST-LIO2。然而,在某些情况下,实现 IMU 与 LiDAR 的外参标定和硬件时间同步仍然面临挑战。例如,LiDAR 或 IMU 设备的设计缺陷可能导致外参标定数据或硬件时间戳不准确。此外,在高速动态场景中,时间延迟和抖动会降低硬件时间同步的精度,而环境不稳定性也会进一步增加时间同步的难度。因此紧耦合系统在这类硬件设备上可能表现不佳,并且难以适应多种复杂场景。因此,实现高效、精准且具有自适应能力的基于 LiDAR 的定位与建图仍然是一项挑战,具体体现在以下方面:
针对上述问题,本文提出了一种包含三个关键创新模块的框架:自适应帧分割、IMU 饱和度与故障检测、自适应多分辨率地图。具体贡献如下:
将这三种自适应技术集成到所提出的松耦合 LiDAR 惯性里程计系统 Adaptive-LIO 中,并已在 GitHub 上开源,供社区使用。此外在开源数据集及真实场景中进行了实验,验证了该系统在复杂场景下的鲁棒性和精度。
主要内容
图1 系统架构
本文的目标是估计 LiDAR 的6自由度位姿并同时构建全局地图,其系统框架如图1所示。整个系统由三个主要模块组成:
Adaptive-LIO 的输入与松耦合模型
Adaptive-LIO 的输入包括 LiDAR 采集的稠密点云,以及来自 6 轴 IMU(惯性测量单元)的线性加速度和角速度数据,并且所有数据都带有同步时间戳。
在多传感器融合定位 方案中,实现不同传感器之间的外参标定通常较为困难,同时硬件时间同步的成本也相对较高。因此采用松耦合模型来降低对精确同步的依赖。然而,在松耦合模型下,如何利用 IMU 数据准确地对LiDAR点云进行去畸变仍然是一个挑战。为了应对这一问题,我们选择 恒速运动模型来对点云进行去畸变处理。
在恒速运动模型中,我们通常假设物体在一个 0.1 秒的时间窗口内保持恒定速度,但在实际应用中,物体的运动往往是非匀速的,因此这个假设可能并不完全准确。为了提高点云的匹配精度,增加帧分割的次数可以缩短恒速假设的时间间隔,使其更加接近真实运动状态。然而,过多的帧分割可能会导致退化问题,影响定位精度。因此,我们采用 可观测性分析 来决定 是否需要进行帧分割 以及 应该分割多少帧,从而在提升系统精度的同时,保持足够的鲁棒性。
自适应帧分割策略
采用两步法来实现自适应帧分割策略,具体如下:
第一步:基于可观测性分析决定是否进行帧分割
首先计算 每个点到平面的残差误差,然后求解其相对于位姿(即初始帧和终止帧的位姿)的变化率,从而得到 雅可比矩阵。接下来将所有点的雅可比矩阵拼接在一起,形成一个 整体的雅可比矩阵,并计算信息矩阵,该矩阵反映了整个运动过程中 旋转和位移的可观测性信息。
退化检测步骤
1. 奇异值分解(SVD)计算特征值:
2. 计算退化因子并判断是否退化:
3. 计算需要分割的帧数
具体而言,我们定义了最少可以分割 1 帧,最多可以分割 4 帧,并根据退化程度,在这个范围内动态调整。
第二步:帧分割的具体实现
帧分割的目的是 将较长时间间隔的 LiDAR 点云数据,划分为多个较短时间间隔的点云数据,从而提高系统的时间分辨率。例如,我们希望 将 10Hz 采样频率的原始点云,重新划分为 20Hz 采样频率的点云。为了实现这一目标,我们的帧分割策略如下:
1. 确定时间范围
2. 按时间顺序排列点云
3. 重新划分时间间隔
图 2:帧分割策略
自适应运动模式切换模块
在惯性测量单元(IMU)状态的饱和与故障检测过程中,我们可以判断在下一步中应采用纯激光里程计(LO)模式还是激光-惯性融合(LIO)模式。LO 模式通过恒速模型计算下一帧的状态,而 LIO 模式则利用 IMU 数据计算下一帧的状态。整个切换过程可分为两个步骤:第一步是 IMU 的饱和与故障检测,第二步是 LO 和 LIO 模式的相互切换。
第一步:IMU 饱和与故障检测
IMU 在 LIO 系统中起着重要作用,但在实际应用中,IMU 可能会遇到多种问题,例如时间戳误差、数据超量程等。这些问题会影响 SLAM 系统的稳健性,因此需要对 IMU 进行饱和与故障检测,以实现 LO 和 LIO 模式的自适应切换。在我们的切换方法中,如果 IMU 数据超出允许范围,我们选择 LO 模式;如果 IMU 数据在正常范围内,我们使用 LIO 模式。
第二步:LO 和 LIO 模式的相互切换
我们将连续的激光雷达帧定义为一个序列,其中每一帧的起始状态和结束状态分别具有对应的时间戳。相邻帧的时间戳满足连续性,即前一帧的结束时间与后一帧的开始时间相同。模式切换的核心依据是 IMU 是否超出允许范围。
A. LIO 模式切换到 LO 模式
在每一帧数据降采样完成后,我们使用 IMU 预测当前帧的初始状态和结束状态。这些预测状态将作为 LIO 进行优化的先验值。具体来说,当前帧的初始状态通常直接继承自上一帧的结束状态。对于当前帧的结束状态,我们使用 IMU 数据结合时间积分计算其姿态、速度和位置变化。计算过程中需要考虑世界坐标系下的重力加速度,并累加所有测量时刻的角速度、加速度以及相应的噪声影响。为了保证状态估计的连续性,我们将上一帧的优化后终止状态作为当前帧的初始状态。如果 IMU 在当前时刻被检测到超出范围,系统将切换至 LO 模式,并使用恒速模型估计下一帧的初始状态,其中速度估计基于上一帧的起始和终止位置的时间差计算。这样,LIO 到 LO 模式的切换便完成了。
B. LO 模式切换回 LIO 模式
在切换至 LO 模式后,我们仍然可以获取当前帧的初始状态,但由于 IMU 已超出范围,无法直接使用惯性数据进行状态传播。因此,我们采用 LO 模式计算当前帧的终止状态。
在每一帧的终止状态计算完成后,我们进行优化,使其更加精确,并使用优化后的终止状态更新下一帧的起始状态。当 IMU 重新恢复到正常范围,我们需要进一步评估其加速度计和陀螺仪的偏差是否已经收敛。如果估计的偏差信号小于设定的阈值,我们可以切换回 LIO 模式,并使用优化后的终止状态作为下一帧的起始状态,从而完成从 LO 到 LIO 的模式转换。
图 3:LO 与 LIO 切换
自适应多分辨率地图模块
在复杂的环境中,如果固定体素(Voxel)的大小,不管周围环境如何变化,都会导致地图的点云密度分布不均匀。体素化的过程会将同一个体素内的多个点合并为一个点,因此在开阔区域,点云数量较少,而在狭窄区域,点云数量较多。具体来说,在空旷区域,体素的尺寸较大,点云数据较为稀疏,而在狭窄区域,体素的尺寸较小,点云数据较为密集。为了解决这一问题,可以采用多分辨率体素地图的策略,也就是说,在开阔区域使用高分辨率体素,在狭窄区域使用低分辨率体素。这种方法不仅能够提升地图的精度,还能在开阔区域构造更多的约束,从而在一定程度上减弱地图退化现象的影响。
地图结构
为了构建多分辨率的体素地图,我们采用了一种基于哈希表(Hash Table)存储的方式。整个地图由多个不同分辨率的子地图组成,每个子地图包含以下四个要素:
使用一个分辨率集合来管理不同的子地图,每个子地图对应一个特定的分辨率,并按照从小到大的顺序排列。
为了将新的点云数据插入不同分辨率的体素地图,并找到其最近的邻居点,我们定义了一种映射方法,使得每个点都能被合理地分配到最适合的分辨率中。
图 4:多分辨率体素地图
自适应分辨率的选择
在实际应用中,不同的环境需要不同的分辨率。例如,在开阔区域可以使用较大的体素尺寸,以减少存储和计算的负担,而在狭窄区域需要使用较小的体素尺寸,以保证地图的精度。因此设计了一种自适应的方法,根据当前的环境特征动态调整体素的分辨率。 如图 5 所示
图 5:最近邻搜索
对于每一个新的点,我们采用以下四个步骤来确定其应该被存储在哪个分辨率的体素地图中:
1. 计算搜索半径
首先,我们根据该点到激光雷达传感器的距离来决定搜索的范围。直觉上,离传感器较近的点应该使用较小的搜索半径,而离传感器较远的点应该使用较大的搜索半径。为了实现这一点,我们设定了一个最小半径和最大半径,并使用插值的方法在二者之间进行动态调整。这种方式可以保证:
2. 选择合适的体素分辨率
在所有可用的分辨率中进行遍历,找到第一个大于等于搜索半径的分辨率。这个分辨率就是当前点应该使用的体素大小。然后,我们根据分辨率的编号,索引对应的体素地图。
3. 计算体素坐标,并寻找最近邻点
确定了分辨率之后,我们需要计算当前点所在的体素坐标。这个坐标可以通过将该点的实际坐标除以体素的分辨率得到。计算出的坐标可以用于索引哈希表中的体素单元。然后,我们遍历该体素及其周围六个相邻的体素,分别是上、下、前、后、左、右六个方向。在这些体素中,我们寻找最接近当前点的邻居点。
4. 计算点到平面的残差
一旦找到最近的邻居点,我们可以利用这些点构造一个局部平面,并计算当前点到该平面的距离(即点-平面残差)。这个残差可以用于进一步优化地图的构建,例如用于误差修正或优化配准的精度。
实验与性能评估
为了验证 AdaptiveLIO 的卓越性能,在公开数据集和真实环境中进行了大量实验。实验结果表明,相较于其他最先进的激光雷达里程计算(LiDAR Odometry, LO)算法,AdaptiveLIO 在精度和实时性方面均表现出色。我们选取了 DLIO、LIO-SAM、Point-LIO、FAST-LIO2 和 IG-LIO 作为对比对象,这些算法均在 LiDAR 里程计算领域具有优异的性能。所有实验均在 Robot Operating System(ROS)环境下运行,采用 Intel i5-12700H 处理器和 16GB 内存,并在相同参数配置下测试所有算法。
外参标定与硬件时间同步
为了评估 AdaptiveLIO 的准确性,我们在 Qisheng L1 移动平台上进行了测试,该平台配备了 VLP-16 激光雷达和外部 IMU(惯性测量单元)。需要注意的是,该系统未进行严格的硬件时间同步,激光雷达与 IMU 之间的外参也未经过精确标定。记录了三个数据集——Qisheng dataset-industrial1、industrial2 和 parking1,并利用这些数据集评估 AdaptiveLIO 的性能。如图 7 所示,在未进行硬件时间同步和外参标定的情况下,我们的算法与其他算法的对比结果显示,在所有三个数据集中,AdaptiveLIO 在 Z 轴方向上的波动最小,而其他算法在 Z 轴方向上的波动较大。这是因为 AdaptiveLIO 采用了松耦合(loosely coupled)架构,使其能够更好地适应数据不同步的情况。
图 7:在未进行硬件时间同步和外参标定的数据集上,对 Adaptive-LIO 与其他算法的比较。图 (a)-(c) 和 (d)-(f) 分别展示了所有算法在 industrial1、industrial2 和 parking1 数据集上的 2D 轨迹图以及 Z 轴轨迹随时间的变化情况。
图 8(a)-(f) 展示了各算法在 parking1 数据集上的性能表现,而图 8(g) 展示了各算法的 3D 轨迹。从结果可以看出,在终点处,DLIO、FAST-LIO2、IG-LIO、LIO-SAM 和 Point-LIO 的 Z 轴误差较大,而 AdaptiveLIO 的误差明显较小。我们采用端到端误差(end-to-end error)作为评估指标,实验结果如表 II 所示。
图 8:所有算法在 parking1 数据集上的表现。图 (a)-(g) 显示了 DLIO、LIO-SAM、Point-LIO、FAST-LIO2、IG-LIO 以及本方法(OURS)在 parking1 数据集上的建图结果。当 LiDAR 返回至接近原始起点的位置(图 (g) 所示的 “End Point” 位置)时,在 (a) DLIO、(b) FAST-LIO2、(c) IG-LIO、(d) LIO-SAM 和 (e) Point-LIO 中均出现明显的 Z 轴误差,而 (f) Adaptive-LIO 的 Z 轴误差明显更小。
AdaptiveLIO 在所有三个数据序列中均表现最佳,端到端误差最小。相比之下,紧耦合(tightly coupled)架构的 FAST-LIO2 在所有数据集上的误差最大,而 Point-LIO 在 industrial1 数据集上测试失败,最终计算出的误差比 AdaptiveLIO 更大。
点云可观测性分析
为了量化由于点云特征丰富度变化而导致的可观测性(observability)变化,我们借鉴了文献 [23] 的方法,并计算可观测性评分(observability score)。该评分基于可观测性矩阵的最大特征值与最小特征值的比值来衡量点云信息的丰富程度。此外,我们使用 CUMT-Coal-Mine 数据集(包含三条直线隧道和多个交叉路口,如图 9(B) 所示)来评估算法在隧道环境中的表现。
图 9:点云可观测性轨迹图,轨迹颜色表示归一化后的可观测性分数。可观测性分数越高,颜色越偏红,表明点云的退化程度越严重。具有较高可观测性分数的区域通常是长而直的走廊,特征较少。通过分析可观测性,可以识别场景中的退化区域和非退化区域。
图 9 展示了数据集的归一化可观测性评分。从结果可以看出,长走廊(b)和(c)的可观测性评分较高,而交叉路口(a)和特征丰富区域(d)的可观测性评分较低。
为了进一步量化不同帧间的可观测性,可视化了点云当前可观测性矩阵的特征向量,并分析算法在不同条件下(无分割、分割、可观测性分割)下的表现。如图 10 所示,蓝色、橙色和绿色曲线分别代表无分割、普通分割和基于可观测性评分的自适应分割的结果。我们设定 α = 3.5 作为阈值,以区分分割与非分割、退化与非退化的情况。在走廊的起点和终点,由于各方向上的特征信息充足,可观测性评分约为 2。然而,在走廊的其他区域,不同区域的可观测性评分有所变化。值得注意的是,在非退化场景下,我们的自适应可观测性分割方法与普通分割方法的评分曲线保持一致,而在退化场景下,评分曲线与无分割方法的结果更为接近。这种一致性可能是我们算法优于其他算法的原因之一。
图 10:CUMT 数据集中的可观测性分数 α 变化曲线(底部),以及五个代表性快照中的特征向量(顶部),特征向量的长度根据对应的特征值进行缩放。
消融实验与算法鲁棒性
为了评估我们的自适应可观测性分割方法在不同场景下的鲁棒性和准确性,在开源数据集 MCD 和 BotanicGarden上进行了消融实验,实验结果汇总在表 III 中。
在 "MCD-tuhh07"、"MCD-tuhh08"、"MCD-tuhh09" 和 "BotanicGarden-1018_13" 这四个数据集中,我们的方法优于普通帧分割、无帧分割方法,以及 FAST-LIO2、LIO-SAM、DLIO、IG-LIO 和 Point-LIO。其中,在 "MCD-tuhh07" 数据集上,我们的方法获得了 1.53 的精度,显著优于其他方法。而在 "BotanicGarden-1005_01" 和 "BotanicGarden-1018-00" 数据集中,我们的方法几乎与 FAST-LIO2 取得相同的精度,并优于 LIO-SAM、DLIO、IG-LIO 和 Point-LIO。综上所述,我们的自适应帧分割方法在不同数据集上均保持较高的精度,表现优于普通帧分割、无帧分割方法以及其他先进的 LiDAR 里程计算算法。
超范围检测
为了评估 Adaptive-LIO,我们使用了 Point-LIO 数据集中的 spinning_platform 和 PULSAR 进行测试,以检验本方法及其无超范围检测版本在极端环境下的表现。spinning_platform 数据集的加速度超过 IMU 的最大测量范围(3G,即 29.5 m/s²),角速度达到 IMU 最大测量范围(17.5 rad/s),而 PULSAR 数据集的角速度更高,达 34.8 rad/s。(需要注意的是,由于 PULSAR 数据集缺少真实轨迹(ground truth),我们仅在 spinning_platform 数据集上评估了各算法的精度。)
在 spinning_platform 数据集上,图 11(c)、(d) 展示了 Adaptive-LIO 的建图结果,而图 11(e)、(f) 展示了记录的 IMU 数据随时间的变化情况。图 11(g) 比较了 Adaptive-LIO 和 Point-LIO 在该场景下的精度。值得注意的是,即使在极端运动情况下,我们的方法仍然表现出极小的漂移。这主要归因于 Adaptive-LIO 采用了自适应运动模式切换策略
图 11:Spinning_platform 数据集,该图展示了当加速度超过 IMU 最大测量范围(29.5 m/s²)或角速度达到 IMU 最大测量范围(17.5 rad/s)时的情况:(a) 由于高速运动,摄像头画面完全模糊;(b) FAST-LIO2 发生严重漂移;(c) 而我们的算法仍然保持有效。
从图 11(g) 可以看出,该方法在 APE(绝对轨迹误差)指标上比 Point-LIO 仅高 0.12 RMSE,表明在极端运动环境下仍能实现精准的状态估计。
在 PULSAR 数据集上,如表 IV 所示,仅 Adaptive-LIO 和 Point-LIO 能够成功运行,而 Adaptive-LIO(无超范围检测)及其他算法均在该场景下失败。
多分辨率地图
在杭州萧山区 Robot Town 采集了三个大规模数据集,并在图12 中进行了比较。这些数据集是通过我们自行搭建的 手持式平台采集的(图 13),其总轨迹长度为 3225.6 米。传感器配置包括 Livox Avia 激光雷达 和 Realsense-D435i 深度相机。
图 13:我们的手持式数据采集设备
图 12:Robot Town,该图展示了 Adaptive-LIO 生成的 Robot Town 详细地图,包括 (A) 建筑 1、(B) 建筑 2 和 (C) 建筑 3。通过 俯视图 (a1)、(b1)、(c1) 和 局部放大图 (a2)-(a7)、(b2)-(b7)、(c2)-(c7) 对比了 Adaptive-LIO、Adaptive-LIO(无多分辨率地图) 以及其他算法(FAST-LIO2、Point-LIO、DLIO 和 IG-LIO)的建图细节。在所有三个数据集中,Adaptive-LIO 在 端到端误差 方面均取得 最佳或次佳 结果,并且其建图质量优于 Adaptive-LIO(无多分辨率地图) 及其他算法。
为确保公平对比,如表 V 所示,Adaptive-LIO 采用了 自适应地图分辨率(0.2m、0.5m、1.2m),而 Adaptive-LIO(无多分辨率地图)、FAST-LIO2、Point-LIO、DLIO 和 IG-LIO 采用了固定分辨率 0.5m。由于缺少真实轨迹(ground truth),无法直接计算绝对轨迹误差。因此,我们按照惯例,以 端到端平移误差(end-to-end translation error) 作为衡量指标(见表 VI)。实验结果表明,Adaptive-LIO 在所有方面都表现优异,不仅端到端平移误差最小,而且计算效率更高。此外,Adaptive-LIO 生成的地图能够精确还原环境细节,为自主移动机器人提供了更精确的地理信息。
图4. 4DRadarRBD成功地检测到具有不同数量道路路沿曲线(RB)的道路路沿:在具有两个曲线的简单场景(顶部)、具有三个曲线的分叉路口(中部)以及具有多个曲线的复杂城市环境(底部)。在复杂的城市区域,4DRadarRBD成功检测到交叉口。
在这些狭窄区域,Adaptive-LIO 在建图精度上明显优于 Adaptive-LIO(无多分辨率地图)、FAST-LIO2、Point-LIO、DLIO 和 IG-LIO,能够更有效地捕捉环境纹理细节。
在实验 (C) 中,我们测试了 Adaptive-LIO 在大规模室外场景中的表现。在 开阔区域到狭窄区域的转换 过程中,Adaptive-LIO 能够动态调整体素分辨率,由高分辨率切换到低分辨率,从而生成更加清晰的点云地图。而 Adaptive-LIO(无多分辨率地图)及其他算法在狭窄区域的建图效果较差,未能清晰捕捉其特征。当机器人从狭窄区域进入开阔区域时,Adaptive-LIO 将体素分辨率由低调整为高,继续保持高精度的点云建图。而 LIO-SAM 在所有实验 (A)、(B)、(C) 中均失败。
此外还评估了各系统在实验 (A)、(B)、(C) 中的平均帧处理时间(以毫秒计)。如表 VII 所示:
总结
本文提出了一种名为 Adaptive-LIO 的 可观测性感知算法,用于 定位与建图,能够在 GPS 受限 和 未知的地下环境 中高效且准确地估计里程信息。该算法具有以下关键特性:
该系统经过了 真实场景测试 和 开源数据集验证,涵盖 极端运动、室内外过渡、不同类型的 LiDAR、不同环境以及多种运动模式。在所有测试中,Adaptive-LIO 在 计算效率 和 里程估计精度 方面均可媲美 当前最先进的 LIO 算法。