论文翻译:LIO-SAM:通过平滑和映射的紧耦合激光雷达惯性里程计

收录于:2020 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)
October 25-29, 2020, Las Vegas, NV, USA (Virtual)

项目地址:https://github.com/TixiaoShan/LIO-SAM.git

摘要:我们提出了一个通过平滑和映射的紧耦合激光雷达惯性里程计框架,LIO-SAM,它实现了高精度、实时的移动机器人轨迹估计和地图构建。 LIO-SAM 在因子图上制定激光雷达惯性里程计,允许将多种相对和绝对测量(包括闭环)从不同来源作为因子合并到系统中。 惯性测量单元 (IMU) 预积分的估计运动可以消除点云的倾斜,并为激光雷达里程计优化生成初始猜测。 获得的激光雷达里程计解用于估计IMU的偏差。 为了确保实时的高性能,我们将旧的激光雷达扫描边缘化以进行姿态优化,而不是将激光雷达扫描与全局地图进行匹配。 局部尺度而不是全局尺度的扫描匹配显着提高了系统的实时性能,选择性引入关键帧以及将新关键帧注册到一组固定大小的先前关键帧的有效滑动窗口方法也是如此。 “子关键帧。” 所提出的方法在从不同规模和环境的三个平台收集的数据集上进行了广泛的评估。

1.引言

        状态估计、定位和绘图是智能移动机器人成功的基本先决条件,是反馈控制、避障和规划等许多功能所必需的。 利用基于视觉和激光雷达的传感技术,人们致力于实现高性能实时同步定位和建图(SLAM),以支持移动机器人的六自由度状态估计。 基于视觉的方法通常使用单目或立体相机并对连续图像的特征进行三角测量以确定相机运动。 尽管基于视觉的方法特别适合地点识别,但它们对初始化、照明和范围的敏感性使得它们在单独用于支持自主导航系统时并不可靠。 另一方面,基于激光雷达的方法在很大程度上不受光照变化的影响。 特别是随着最近推出的远程高分辨率 3D 激光雷达(例如 Velodyne VLS-128 和 Ouster OS1-128),激光雷达变得更适合直接捕获 3D 空间中环境的精细细节。 因此,本文重点研究基于激光雷达的状态估计和建图方法。

        在过去的二十年里,人们提出了许多基于激光雷达的状态估计和绘图方法。 其中,[1]中提出的用于低漂移、实时状态估计和建图的激光雷达里程计和建图(LOAM)方法是应用最广泛的方法之一。 LOAM 使用激光雷达和惯性测量单元 (IMU),实现了最先进的性能,自在 KITTI 里程计基准网站上发布以来一直被评为基于激光雷达的顶级方法 [2]。 尽管取得了成功,LOAM 也存在一些局限性 - 通过将其数据保存在全局体素地图中,通常很难执行回环检测并结合其他绝对测量(例如 GPS)进行姿态校正。 当该体素图在特征丰富的环境中变得密集时,其在线优化过程的效率就会降低。 LOAM 在大规模测试中也会出现漂移,因为它的核心是基于扫描匹配的方法。

        在本文中,我们提出了一种通过平滑和映射实现紧耦合激光雷达惯性里程计的框架 LIOSAM,以解决上述问题。 我们假设一个用于点云去偏的非线性运动模型,使用原始 IMU 测量来估计激光雷达扫描期间的传感器运动。 除了去偏点云之外,估计的运动还可以作为激光雷达里程计优化的初始猜测。 然后使用获得的激光雷达里程计解来估计因子图中 IMU 的偏差。 通过引入用于机器人轨迹估计的全局因子图,我们可以使用激光雷达和 IMU 测量有效地执行传感器融合,将位置识别纳入机器人姿势之间,并引入绝对测量,例如 GPS 定位和罗盘航向(如果可用)。 来自不同来源的因素集合用于图形的联合优化。 此外,我们将旧的激光雷达扫描边缘化以进行位姿优化,而不是将扫描与 LOAM 等全局地图进行匹配。 局部尺度而不是全局尺度的扫描匹配显着提高了系统的实时性能,选择性引入关键帧以及将新关键帧注册到固定大小的先前“子帧”集的有效滑动窗口方法也是如此。 -关键帧。” 我们工作的主要贡献可概括如下:

        -构建在因子图之上的紧耦合激光雷达惯性里程计框架,适用于多传感器融合和全局优化。

        -一种高效的、基于局部滑动窗口的扫描匹配方法,通过将选择性选择的新关键帧注册到一组固定大小的先前子关键帧来实现实时性能。

        -所提出的框架通过各种规模、车辆和环境的测试进行了广泛的验证。

2.相关工作

        激光雷达里程计通常通过使用 ICP [3] 和 GICP [4] 等扫描匹配方法查找两个连续帧之间的相对变换来执行。基于特征的匹配方法由于其计算效率而成为流行的替代方法,而不是匹配完整的点云。例如,在[5]中,提出了一种用于实时激光雷达里程计的基于平面的配准方法。假设在结构化环境中进行操作,它从点云中提取平面并通过解决最小二乘问题来匹配它们。文献[6]提出了一种基于领线的方法来进行里程估计。在这种方法中,线段是从原始点云中随机生成的,并用于稍后的配准。然而,由于现代 3D 激光雷达的旋转机制和传感器运动,扫描的点云经常会倾斜。单独使用激光雷达进行姿态估计并不理想,因为使用倾斜的点云或特征进行配准最终会导致较大的漂移。

        因此,激光雷达通常与其他传感器(例如 IMU 和 GPS)结合使用,用于状态估计和绘图。 这种利用传感器融合的设计方案通常可以分为两类:松耦合融合和紧耦合融合。在 LOAM [1] 中,引入 IMU 来消除激光雷达扫描的倾斜,并为扫描匹配提供运动先验。 然而,IMU不参与算法的优化过程。因此,LOAM 可以归类为松散耦合方法。[7] 中提出了一种用于地面车辆测绘任务的轻量级地面优化激光雷达里程计和测绘(LeGOLOAM)方法 [8]。它对 IMU 测量的融合与 LOAM 相同。松耦合融合的一种更流行的方法是使用扩展卡尔曼滤波器(EKF)。例如,[9][13]在机器人状态估计的优化阶段使用 EKF 集成来自激光雷达、IMU 和可选 GPS 的测量结果。

        紧耦合系统通常可以提供更高的准确性,并且是目前正在进行的研究的主要焦点[14]。在[15]中,预积分 IMU 测量被用于去偏点云。[16] 中提出了一种以机器人为中心的激光雷达惯性状态估计器 LINS。LINS 专为地面车辆设计,使用错误状态卡尔曼滤波器以紧密耦合的方式递归地校正机器人的状态估计。[17] 中介绍了一种紧密耦合的激光雷达惯性里程计和绘图框架 LIOM。 LIOM 是 LIO-mapping 的缩写,联合优化激光雷达和 IMU 的测量,与 LOAM 相比,可实现相似或更好的精度。由于 LIOM 设计用于处理所有传感器测量结果,因此无法实现实时性能 - 在我们的测试中,其运行速度约为 0.6 倍实时。

3.通过平滑和映射进行激光雷达惯性里程测量

A. 系统概述

        我们首先定义整篇论文中使用的框架和符号。我们将世界坐标系表示为W,将机器人本体坐标系表示为B。为了方便起见,我们还假设IMU坐标系与机器人本体坐标系重合。机器人状态x可以写为:

\mathbf{x} =\left [ R^{T},p^{T},v^{T},b^{T}\right ]^{T},\left ( 1 \right )

其中 R ∈ SO(3) 是旋转矩阵,p ∈ R3 是位置向量,v 是速度,b 是 IMU 偏差。从 B 到 W 的变换 T ∈ SE(3

### LIO-SAM 的数据流处理过程及原理 LIO-SAM 是一种基于平滑映射(Smoothing and Mapping, SAM)框架的耦合激光雷达惯性里程计算法。其核心目标是在移动机器人导航过程中提供精确的姿态估计地图构建功能。以下是关于 LIO-SAM 数据流处理的具体描述: #### 1. **传感器输入** LIO-SAM 主要依赖于两种类型的传感器数据:来自激光雷达的距离测量以及来自惯性测量单元 (IMU) 的加速度角速度测量[^1]。 - **激光雷达数据**: 提供环境的空间结构信息,用于检测特征并生成点云。 - **IMU 数据**: 提供高频姿态变化的信息,弥补激光雷达采样频率较低的问题。 #### 2. **预积分模型** 为了减少计算复杂度,LIO-SAM 使用 IMU 预积分技术来累积两个连续时刻之间的状态变化。这种方法通过将原始 IMU 测量值转换为位姿增量的形式,从而减少了优化变量的数量[^4]。 ```python def imu_preintegration(imu_measurements): delta_position = integrate_acceleration(imu_measurements) delta_orientation = integrate_angular_velocity(imu_measurements) return delta_position, delta_orientation ``` #### 3. **点云配准与特征提取** LIO-SAM 对每一帧激光雷达扫描进行分割,并从中提取平面平面边缘作为几何约束条件。这些特征被用来匹配当前帧与历史帧之间的一致性,进而实现全局一致性优化。 - 平面特征通常由地面或其他平坦表面构成; - 边缘特征则对应于墙壁交界处或者物体轮廓线等位置。 #### 4. **因子图优化** 采用因子图表示法将所有观测到的数据融合在一起形成统一的目标函数最小化问题求解最优路径估计结果。具体来说就是把每一段轨迹看作节点而在相邻两段间建立边代表它们相互关系即残差项最终通过非线性最小二乘方法得到最佳参数配置方案[^2]。 ```python import gtsam graph = gtsam.NonlinearFactorGraph() initial_estimate = gtsam.Values() for i in range(len(measurements)): graph.add(gtsam.BetweenFactorPose3(i, i+1, measurements[i])) initial_estimate.insert(i, pose_guesses[i]) result = gtsam.LevenbergMarquardtOptimizer(graph, initial_estimate).optimize() ``` #### 5. **闭环检测与修正** 当系统重新访问之前探索过的区域时,可以通过比较新旧点云间的相似程度触发闭环事件。一旦确认存在闭环,则引入额外的约束条件调整整体定位精度消除累计误差影响。 --- ### 总结 综上所述,LIO-SAM 利用了先进的数学建模技术高效的数值求解策略实现了鲁棒性强且准确性高的自主导航能力。它不仅能够有效应对动态场景下的挑战还能长期保持稳定的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值