Direct LiDAR-Inertial Odometry: 具有连续时间运动校正的轻量级LIO

文章:Direct LiDAR-Inertial Odometry: Lightweight LIO with Continuous-Time Motion Correction

作者:Kenny Chen, Ryan Nemiroff, and Brett T. Lopez

编辑:点云PCL

来源:arXiv 2023

欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。文章仅做学术分享,如有侵权联系删文。

公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com。未经作者允许请勿转载,欢迎各位同学积极分享和交流。

摘要

本文提出了一种称为直接激光雷达-惯性测量单元里程计(DLIO)的轻量级算法,采用了一种新的从粗到细的方法来构建连续时间轨迹以实现精确的运动校正,该方法的关键在于构建了一组仅由时间参数化的解析方程,从而实现了快速且可并行化的逐点去畸变,这种方法之所以可行,是因为我们非线性几何观测器具有强大的收敛性质,能够为敏感的IMU积分步骤提供可靠的状态估计初始化。此外,通过同时执行运动校正和先验生成,并直接将每个扫描与地图进行配准,而不进行扫描帧与帧之间的配准,DLIO的简化架构比当前最先进的算法在计算效率上提高了近20%,准确性增加了12%,通过对多个公开基准和自行收集的数据集进行广泛测试,展示了DLIO相对于四种最先进算法在定位准确性、地图质量和计算开销方面的优越性。

主要贡献

本文提出了直接激光雷达惯性里程计(Direct LiDAR-Inertial Odometry,DLIO)算法,它是一种快速可靠的测距算法,能够提供准确的定位和详细的三维地图构建(图1)。该算法具有以下四个主要贡献。

  • 首先,本文提出了一种新的从粗糙到精细的技术,用于构建连续时间轨迹,其中导出了一组具有恒定加速度和角加速度的解析方程,用于快速并行的逐点运动校正。

  • 其次提出了一种新颖的简化架构,将运动校正和先验构建合并为一个步骤,并直接进行扫描与地图的配准,显著降低了算法的整体计算开销。

  • 第三,在流程中使用了一种新的非线性几何观测器,该观测器具有强大的性能保证,对于实现前两个贡献至关重要,能够以最小的计算复杂度生成机器人完整状态的准确估计。

  • 最后,通过与现有技术进行多个数据集的广泛实验结果验证了我们方法的有效性。

7f85641a86fd978493e24afc06d1116c.png

图1. 实时定位和稠密地图的构建。DLIO通过实时可靠地估计机器人的位姿、速度和传感器偏差来生成详细的地图。(A)自制的空中飞行器与UCLA的罗伊斯大厅(Royce Hall)合影。(B)DLIO生成的罗伊斯大厅及其周围环境的俯视图。(C)对一棵树的近距离展示,展示了DLIO能够在其输出地图中捕捉到的细节,颜色表示点云的强度。

主要内容

系统概述 

DLIO是一种轻量级LIO算法,通过独特的架构生成机器人状态估计和几何地图,该架构由两个主要模块和三个创新部分组成(图2)。第一个模块是快速的扫描帧匹配器,通过将稠密的、经过运动校正的点云与提取的局部子地图进行对齐,将其配准到机器人构建的地图上。点级连续时间积分在保证校正后的点云的最大图像保真度的同时,为GICP优化建立先验。在第二个模块中,利用非线性几何观测器将系统的状态与第一个组件的位姿输出进行更新,提供高频率且具有全局收敛性的位姿、速度和传感器偏差的准确估计,这些估计值然后初始化下一次运动校正、扫描匹配和状态更新的迭代过程。

1fec4e04b31f32cd00f56e3df88ef22b.png

图2. 系统架构。DLIO的轻量级架构将运动校正和先验构建合并为一个单一步骤,同时移除了先前在基于LiDAR的里程计中需要的扫描帧到帧模块。W中的点级连续时间积分确保了校正后点云的最大保真度,并由自定义的基于GICP的扫描匹配器配准到机器人的地图上,系统的状态随后由具有强收敛性的非线性几何观测器进行更新,这些位姿、速度和偏差的估计值然后初始化下一次迭代。

预处理 

DLIO的输入是由现代的360°机械式LiDAR(如Ouster或Velodyne,10-20Hz)收集的稠密3D点云,以及以更高频率(100-500Hz)的时间同步线性加速度和角速度测量值的6轴IMU。在进行下游任务之前,通过外参标定,将所有传感器数据转换为位于机器人重心处的R坐标系。对于IMU,如果传感器与重心不重合,则必须考虑将线性加速度测量值位移在刚体上的影响;通过考虑角速度和IMU的偏移之间的叉乘,来计算R点处的线性加速度的所有贡献。为了最小化信息损失,除了在原点周围进行1m³的框形滤波以去除可能来自机器人本身的点以及对于分辨率较高的点云进行轻量级体素滤波外,我们不对点云进行预处理,这使我们的工作与其他尝试检测特征(如角点、边缘或surfels)或通过体素滤波对点云进行大幅降采样的方法有所区别。

af5e893f90b69fec58b2a969adfa70d8.png

连续时间运动校正与联合先验 

旋转式LiDAR传感器获取的点云在运动过程中会受到运动畸变的影响,因为旋转的激光阵列在扫描期间收集到的点是在不同的时刻,我们不再假设扫描期间存在简单的运动(如恒定速度),因为这可能无法准确捕捉到细微的运动,相反,我们使用更准确的恒定加速度和角加速度模型来计算每个点的唯一变换,通过一个两步的粗-精传播方案,这个策略旨在最小化由IMU的采样率和IMU与LiDAR点测量之间的时间偏移引起的误差,在扫描期间,首先通过数值IMU积分粗略构建轨迹,然后通过求解W中一组分析连续时间方程来对其进行精化(图3)。

7d835b5c0b1d172e45a7bc4bba1d5ab8.png

图3. 粗到精的点云去畸变,一个畸变的点 pL0通过一个两步的过程进行去畸变,首先在扫描之间积分IMU测量,然后在连续时间中为原始点求解一个唯一的变换。

6052796a86afb5de7d320c24bcb07f0a.png

图4. 连续时间运动校正,对于点云中的每个点,通过求解一组闭合形式的运动方程,在最近的IMU测量点初始化的情况下计算出一个唯一的变换,这提供了准确且可并行化的连续时间运动校正。

扫描到地图的配准

通过同时校正运动畸变并将GICP优化先验引入到点云中,DLIO可以直接进行扫描帧到地图的配准,绕过了以前方法中所需的扫描帧到帧配准过程,这种配准被看作是一个非线性优化问题,最小化了当前扫描和提取的基于关键帧的子地图之间对应点/平面的距离。

几何观测器 

通过扫描到地图的对齐计算得到的变换T与IMU测量相融合,通过一种新颖的分层非线性几何观测器生成完整的状态估计X,可以证明在确定性设置下,X^将全局收敛到X,并且计算量最小。该证明利用收缩理论首先证明四元数估计指数级地收敛到真实四元数附近的区域。然后,方向估计作为输入传递给另一个收缩观测器来估计平移状态,这种架构形成了一个收缩层次结构,保证了估计值收敛到其真实值,与其他融合方案(例如滤波或位姿图优化)相比,这种强收敛结果是其主要优势,即使在最理想的设置下,其他方案也具有最小的收敛保证。此外,观测器的状态估计固有的平滑性使其适用于控制。

实验

DLIO在Newer College基准数据集和UCLA校园周围的自采集数据上进行了评估,我们将其与四种最先进的算法进行了准确性和效率的比较,包括DLO、CT-ICP、LIOSAM和FAST-LIO2。每个算法采用了不同程度和方法的运动补偿,因此对当前最先进技术进行了详尽的比较。除了外参校准之外,除非另有说明,否则在所有实验中都使用了各算法的默认参数。具体而言,启用了LIO-SAM的闭环检测,并禁用了FAST-LIO2的在线外参估计,以提供各算法的最佳结果,对于CT-ICP,轴向体素化稍微增加,并降低了数据播放速度,否则由于帧丢失严重,算法将无法执行,所有测试都在16核Intel i7-11800H CPU上进行。

消融实验

为了研究我们提出的运动校正方案的影响,我们首先在使用Newer College数据集的DLIO上进行了一个消融研究,通过改变不同程度的去畸变,该研究范围从没有运动校正(None),到仅使用最近的IMU积分(通过公式(4))进行校正(Discrete),最后到通过公式(4)和(5)进行全连续时间运动校正(Continuous)(表I)。特别值得注意的是Dynamic数据集,其中包含高度激烈的运动,旋转速度高达3.5弧度/秒。没有校正时,误差最高,达到0.1959的均方根误差(RMSE)。

0ff47d1ba58a205e68a411f3983d8859.png

通过部分校正,由于使用更准确和具有代表性的点云进行扫描匹配,误差显著降低;然而,使用完整的提议方案,我们观察到仅为0.0612的RMSE误差,是所有测试算法中最低的。对于所有其他数据集,对于更好的运动校正带来的卓越跟踪准确性是明显的:在连续时间内构建唯一的变换比以前的方法创建更真实的点云,最终影响到扫描匹配和轨迹准确性。图6从经验上展示了这一点:DLIO可以捕捉到简单或没有运动校正下丢失的微小细节。

5bc764a9d60c4ac4718b7cf7d316dd72.png

图6,DLIO可以捕捉到简单或没有运动校正下丢失的微小细节。

基准测试结果

Newer College 数据集:使用原始的 Newer College 基准数据集,通过 evo工具对所有算法的轨迹准确性和平均每帧扫描时间进行了比较。在这些测试中使用来自 Ouster 激光雷达的 IMU 数据(100Hz)和 LiDAR 数据(10Hz),以确保传感器之间的时间同步。由于 FAST-LIO2 在开始时存在滑移问题,为了公平比较,在计算 RMSE 时,我们从 Newer College 数据集中排除了前100个位姿。我们还对扩展的 Newer College 数据集进行了比较,结果显示在表I中,DLIO 相比于最先进的方法,产生了最低的轨迹 RMSE 和最低的每帧扫描计算时间。图5展示了在 Newer College - Long Experiment 数据集上,即使在超过三公里的行驶后,DLIO的轨迹误差仍然很低。

e52cba76bb9634879175626173928e46.png

图5,实验室的轨迹,DLIO为大学实验室生成的轨迹,颜色表示绝对姿势错误。

UCLA 校园数据集:我们还在 UCLA 收集了四个大规模的数据集进行了额外的比较(图7),这些数据集是通过手持我们的航空平台收集的,总轨迹长度为2261.37米。我们的传感器套件包括 Ouster OS1(10Hz,32个通道,水平分辨率为512)和位于其下方约0.1米处的6轴 InvenSense MPU-6050 IMU。由于缺乏地面真值,无法进行绝对轨迹误差的比较,因此按照常规做法,我们计算了端到端的平移误差作为代理指标(表II)。

8f6e73d949888f0821150807d534d2c4.png

在这些实验中,DLIO 在端到端平移误差和每帧效率方面表现出色,DLIO 生成的地图可以捕捉环境中的细节信息,从而为自主移动机器人提供更复杂的信息线索,例如地形可行性。

2a305be7fbee292c9c2c832b8a01994f.png

图7。加州大学洛杉矶分校,DLIO生成的加州洛杉矶加州大学洛杉矶分校周围位置的详细地图,包括(A)Dickson Court的Royce Hall、(B)Court of Sciences、(C)Bruin Plaza和(D)Franklin D.Murphy雕塑花园,其中包括(1)鸟瞰图和(2)特写图,以展示DLIO可以生成的精细细节水平,生成这些地图所采用的轨迹在第一行中以黄色显示。

总结

本文介绍了Direct LiDAR-Inertial Odometry(DLIO),一种高度可靠的轻量级LIO算法,能够实时为资源受限的移动机器人提供准确的状态估计和稠密的地图,DLIO与其他算法的关键创新之处在于采用了快速且可并行的粗到精的方法,构建连续时间轨迹进行逐点运动校正,该方法被集成到简化的LIO架构中,可以在一个步骤中进行运动校正和先验构建,并直接进行扫描帧到地图的对齐,从而减少计算开销。这一切都得益于我们的观测器具有强大的收敛性保证,可靠地初始化位姿、速度和偏差,以实现准确的IMU积分。我们的实验结果表明,与最先进的方法相比,DLIO具有更高的定位精度、地图清晰度和算法效率。未来的工作将包括闭环飞行测试和添加闭环检测。

资源

自动驾驶及定位相关分享

【点云论文速读】基于激光雷达的里程计及3D点云地图中的定位方法

自动驾驶中基于光流的运动物体检测

基于语义分割的相机外参标定

综述:用于自动驾驶的全景鱼眼相机的理论模型和感知介绍

高速场景下自动驾驶车辆定位方法综述

Patchwork++:基于点云的快速、稳健的地面分割方法

PaGO-LOAM:基于地面优化的激光雷达里程计

多模态路沿检测与滤波方法

多个激光雷达同时校准、定位和建图的框架

动态的城市环境中杆状物的提取建图与长期定位

非重复型扫描激光雷达的运动畸变矫正

快速紧耦合的稀疏直接雷达-惯性-视觉里程计

基于相机和低分辨率激光雷达的三维车辆检测

用于三维点云语义分割的标注工具和城市数据集

ROS2入门之基本介绍

固态激光雷达和相机系统的自动标定

激光雷达+GPS+IMU+轮速计的传感器融合定位方案

基于稀疏语义视觉特征的道路场景的建图与定位

自动驾驶中基于激光雷达的车辆道路和人行道实时检测(代码开源)

用于三维点云语义分割的标注工具和城市数据集

更多文章可查看:点云学习历史文章大汇总

SLAM及AR相关分享

TOF相机原理介绍

TOF飞行时间深度相机介绍

结构化PLP-SLAM:单目、RGB-D和双目相机使用点线面的高效稀疏建图与定位方案

开源又优化的F-LOAM方案:基于优化的SC-F-LOAM

【开源方案共享】ORB-SLAM3开源啦!

【论文速读】AVP-SLAM:自动泊车系统中的语义SLAM

【点云论文速读】StructSLAM:结构化线特征SLAM

SLAM和AR综述

常用的3D深度相机

AR设备单目视觉惯导SLAM算法综述与评价

SLAM综述(4)激光与视觉融合SLAM

Kimera实时重建的语义SLAM系统

SLAM综述(3)-视觉与惯导,视觉与深度学习SLAM

易扩展的SLAM框架-OpenVSLAM

高翔:非结构化道路激光SLAM中的挑战

基于鱼眼相机的SLAM方法介绍

以上内容如有错误请留言评论,欢迎指正交流。如有侵权,请联系删除

bfb3a706f39b88d5a50e589a95080f18.png

扫描二维码

                   关注我们

让我们一起分享一起学习吧!期待有想法,乐于分享的小伙伴加入知识星球注入爱分享的新鲜活力。分享的主题包含但不限于三维视觉,点云,高精地图,自动驾驶,以及机器人等相关的领域。

分享与合作方式:微信“cloudpoint9527”(备注:姓名+学校/公司+研究方向) 联系邮箱:dianyunpcl@163.com。

为分享的伙伴们点赞吧!

446dbf0f57706707aabb09616d69308e.gif

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于给定的YAML文件内容,你可以使用YAML-CPP库来读取和解析它。以下是一个示例代码,展示如何读取该YAML文件中的内容: ```cpp #include <iostream> #include <yaml-cpp/yaml.h> int main() { // 读取YAML文件 YAML::Node config = YAML::LoadFile("config.yaml"); // 获取lidar节点 YAML::Node lidar = config["sensor"]["lidar"]["lidar"]; // 遍历lidar数组中的每个元素 for (std::size_t i = 0; i < lidar.size(); ++i) { // 获取driver节点 YAML::Node driver = lidar[i]["driver"]; // 获取driver节点的frame_id值 std::string frameId = driver["frame_id"].as<std::string>(); // 获取driver节点的device_type值 std::string deviceType = driver["device_type"].as<std::string>(); // 输出frame_id和device_type值 std::cout << "Frame ID: " << frameId << std::endl; std::cout << "Device Type: " << deviceType << std::endl; // 其他操作... } // 获取camera节点下的camera数组 YAML::Node camera = config["sensor"]["camera"]["camera"]; // 遍历camera数组中的每个元素 for (std::size_t i = 0; i < camera.size(); ++i) { // 获取driver节点 YAML::Node driver = camera[i]["driver"]; // 获取driver节点的frame_id值 std::string frameId = driver["frame_id"].as<std::string>(); // 获取driver节点的device_type值 std::string deviceType = driver["device_type"].as<std::string>(); // 输出frame_id和device_type值 std::cout << "Frame ID: " << frameId << std::endl; std::cout << "Device Type: " << deviceType << std::endl; // 其他操作... } return 0; } ``` 在上述示例中,假设你的YAML文件名为"config.yaml",你可以根据需要修改文件名。通过使用YAML-CPP库的`LoadFile`函数加载YAML文件,并使用`[]`运算符获取相应的节点和值。 请确保在编译和运行代码之前已经安装了YAML-CPP库,并将其包含到你的项目中。希望这可以帮助到你!如果你有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

点云PCL公众号博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值