史上最快,仅需10ms的动态点云剔除方法

news2024/9/19 9:25:01

论文题目:

A Fast Dynamic Point Detection Method for LiDAR-Inertial Odometry in Driving Scenarios

论文作者:

Zikang Yuan, Xiaoxiang Wang, Jingying Wu, Junda Cheng, Xin Yang

导读: 本文实现了一种十分快速的动态点剔除方法,仅需要10ms以内就能剔除扫描点云中的动态点,十分便捷高效。©️【深蓝AI】编译

1. 摘要

现有基于3D点云的动态点检测与移除方法存在显著的时间开销,这使得它们难以适应于LiDAR-惯性里程计系统。本文提出了一种基于标签一致性的动态点检测与移除方法,用于处理自动驾驶场景中的行人和移动车辆,并将所提出的动态点检测与移除方法嵌入到一个自设计的LiDAR-惯性里程计系统中。三个公开数据集上的实验结果表明,该方法可以在LiDAR-惯性里程计系统中以极低的计算开销(即1至9毫秒)实现动态点的检测与移除,同时达到与最先进的方法相当的保留率和拒绝率,并显著提高姿态估计的准确性。

2. 介绍

在自动驾驶领域,3D激光雷达(LiDAR)和惯性测量单元(IMU)是用于实时定位的关键传感器。LiDAR-惯性里程计(LIO)已成为实时状态估计的主要框架。大多数现有LIO系统假定环境是静态的,但在实践中,车辆通常会在包含行人和移动车辆的动态环境中行驶。动态对象的点云数据会干扰状态估计并影响地图重建质量。

为了解决动态环境对LIO性能的影响,之前的研究工作中已提出了一些3D点云的动态点检测方法,这些方法分为离线和在线两种。离线方法需要预建地图,而在线方法虽不要求预建地图,但计算成本高,难以实现实时运行。

因此,本文提出了一种基于标签一致性的动态点检测和移除方法,适用于自动驾驶场景中的移动车辆和行人。该方法首先快速分离地面点,并根据点是否位于地面进行标签化。对于位于移动对象上的点,其最近邻点的标签会出现不一致性。如果一个点自身是非地面点,但其最近邻点多为地面点,则判定为动态点,并从地图中移除。

实验结果表明,本方法在semantic-KITTI数据集上实现了先进的保留率和拒绝率,且计算时间显著低于其他在线方法。在ULHK-CA和UrbanNav数据集上的实验也证明了本方法能够显著提升估计姿态的准确性,超越了当前最先进的LIO系统。

本文的主要贡献有:

1)提出了一种低计算成本的动态点检测和移除方法;

2)将提出的方法整合到LIO系统中以增强估计姿态的准确性。

图1|a:展示了一个含有动态点的示例点云地图,其中绿色点是移动车辆的鬼影轨迹;b:静态点云地图,其中动态点已被本文的基于标签一致性的动态点检测和移除方法检测并移除©️【深蓝AI】编译

3. 相关工作

3D点云动态点检测与去除方法可分为离线和在线两类。

离线方法包括Removert、ERASOR和DORF等,需要预构建地图:Removert使用多分辨率距离图像来迭代恢复静态点;ERASOR通过伪占用概念来区分不同占用度的空间;DORF则采用由粗到细的框架来生成清洁的静态点云地图。

在线方法包括Dynamic Filter、Dynablox和RH-Map等,不依赖预构建地图:Dynamic Filter针对动态环境提出了在线去除框架;Dynablox能实现在复杂环境中稳健检测移动物体;RH-Map基于3D区域范围哈希映射结构来构建地图。

最近几年,机器人领域发展出了许多激光雷达惯性组合(LIO)系统。LIO-SAM将LIO里程计问题公式化为因子图;LINs在ESIKF框架内集成了6轴IMU和3D激光雷达;Fast-LIO通过优化卡尔曼增益计算来减少计算负担;Fast-LIO2引入了ikd-tree算法来提高效率;DLIO提高了状态预测精度;Semi-Elastic-LIO提供了一种半弹性的状态估计方法;SR-LIO通过扫掠重建方法增加了扫掠频率;RF-LIO和ID-LIO能够处理动态场景下的状态估计,但计算开销大,难以实时稳定运行。

此外,本文还用 ( ⋅ ) w (⋅)w ()w ( ⋅ ) l (⋅)l ()l ( ⋅ ) o (⋅)o ()o分别表示世界坐标系、激光雷达坐标系和惯性测量单元坐标系中的3D点。在起始位置时,世界坐标系与惯性测量单元坐标系重合。

本文将第 i i i次惯性测量单元测量所在时刻 t i t_i ti的惯性测量单元坐标系表示为 o i o_i oi,那么从激光雷达坐标系 l i l_i li惯性测量单元坐标系 o i o_i oi的变换矩阵(即外部参数)表示为 T l i o i ∈ S E ( 3 ) T^{o_i}_{l_i} \in SE(3) TlioiSE(3),其中 T l i o i T^{o_i}_{l_i} Tlioi包含一个旋转矩阵 R l i o i ∈ S O ( 3 ) R^{o_i}_{l_i} \in SO(3) RlioiSO(3)和一个平移向量 t l i o i ∈ R 3 t^{o_i}_{l_i} \in \mathbb{R}^3 tlioiR3。通常假设外部参数矩阵 T l i o i T^{o_i}_{l_i} Tlioi已经通过离线方式被足够准确地标定,因此在后续过程中不再进一步优化。因此,本文简化记号 T l i o i T^{o_i}_{l_i} Tlioi T l o T^o_l Tlo

4. 系统详解

图2|本文的Dynamic- LIO系统概览©️【深蓝AI】编译

图2展示了本文系统的框架,该系统包括四个模块:点云处理、静态初始化、基于ESIKF的状态估计和动态点移除。

点云处理模块分离地面点并进行空间降采样;静态初始化模块利用IMU测量来估计状态参数;状态估计模块与SR-LIO的状态估计模块一致;动态点移除模块使用基于标签一致性的方法检测并移除动态点。

图中还显示系统维护两个全局地图:跟踪地图和输出地图,后者更彻底地过滤动态点。本文使用Hash体素地图来管理这些地图。

4.1 地面拟合

本文利用与LeGO-LOAM相同的地面分割方法来从当前输入扫描中分离出地面点,这种方法计算成本非常低,这对LIO系统来说非常重要。分离地面点的可视化在图3中展示,其中橙色点标记为“地面点”,白色点标记为“非地面点”。

图3|从当前输入扫描中分离地面点的可视化©️【深蓝AI】编译

4.2 背景分离

在执行标签一致性检测时,需要为当前扫描中的每个点找到最近邻。靠近车辆的点可以可靠地找到它们的最近邻,而远离车辆的点可能由于它们的位置尚未被重建而找不到最近邻。本文设定了30米的阈值,将距离车辆30米内的点定义为前景点,30米外的点定义为背景点。对于前景点和背景点,本文采用了针对其特性的基于标签一致性的动态点检测方案。

4.3 标签一致性检测

标签一致性检测基于动态对象接触地面的前提。

静态点通常能在全局地图中找到最近邻,而从动态物体扫描得到的LiDAR点通常找不到最近邻,因此被分类为动态点。对于可能找到地面点作为最近邻的点,本文根据最近邻中地面点的比例来决定是否将其分类为动态点。背景点可能因位置未被重建而找不到最近邻,对于这样的点,本文将它们标记为不确定点并放入容器中,待后续重构位置结构后再进行判断。对于前景点、背景点和不确定点,本文采用三种不同的模式进行标签一致性检测。

图4|检测动态点的两个标准:绿色点被检测为动态点是因为它们在配准过程中无法找到最近邻,粉色点被检测为动态点是因为它们的标签与其最近邻不一致©️【深蓝AI】编译

前景点模式: 如果最近邻的数量低于某个阈值5,则表明 p w p^w pw的位置原本为空,因此将其分类为动态点。如果最近邻数量足够大(大于5),则计算所有最近邻中非地面点的比例。如果这一比例足够低(小于30%), p w p^w pw被分类为静态点并加入跟踪地图和输出地图。相反,如果比例大于30%, p w p^w pw被分类为动态点而不加入地图。前景点动态点检测结果的可视化见图5。

图5|前景点动态点检测结果的可视化©️【深蓝AI】编译

背景点模式: 如果最近邻的数量低于某个阈值5,本文无法确定这是由于动态点未能找到最近邻还是因为位置尚未被重建,从而阻止了最近邻的查找。这种点被标记为不确定点,随着车辆继续移动并在这些点的位置结构恢复后做出判断。为了确保状态估计过程中新获取的点云能够正确配准,有必要将不确定点纳入跟踪地图。这不会对状态估计的准确性有太大影响,即使背景点中有动态物体,扫描到它们的LiDAR点也非常稀疏。至于最终的输出地图,必须尽可能少包含动态点,因此对于不确定点的判断将在之后进行。当最近邻数量足够大(大于5)时,处理方式与前景点相同,静态点加入跟踪地图和输出地图。背景点动态点检测结果的可视化见图6。

图6|背景点动态点检测结果的可视化©️【深蓝AI】编译

不确定点模式: 随着车辆继续前进,全局地图中先前未重建的位置的几何结构信息得以恢复(如图7所示)。当不确定点容器中的某点 p u w p_u^w puw接近车辆的当前位置(小于30米),其周围几何结构信息极有可能已经被重建。此时本文可以判断 p u w p_u^w puw是否为动态点。如果最近邻数量低于某个阈值5,表明 p u w p_u^w puw的位置原本为空,导致 p u w p_u^w puw被分类为动态点。如果最近邻数量大于5,则计算所有最近邻中非地面点的比例。如果这一比例远小于30%,则将其分类为静态点并加入输出地图。反之,如果比例不低于30%,则将其分类为动态点而不包括在内。如果一个不确定点连续10次扫描都距离车辆位置超过30米,则直接将其分类为静态点并加入输出地图。

图7|不确定点动态点检测结果的可视化©️【深蓝AI】编译

5. 实验

本文在三个自动驾驶场景数据集上评估了所提出方法的整体性能:Semantic-KITTI、ULHK-CA和 UrbanNav。

Semantic-KITTI 数据集由一个64线Velodyne LiDAR收集而成,每个LiDAR点都有其独特的语义标签。因此,Semantic-KITTI用于评估本文提出的基于标签一致性的动态点检测和移除方法的保留率(PR)和拒绝率(RR)。ULHK-CA数据集由一个32线Robosense LiDAR和IMU收集,UrbanNav数据集由一个32线Velodyne LiDAR和IMU收集。这两个数据集用于评估动态点检测和移除对位姿估计绝对轨迹误差(ATE)的改进。所有实验均在一个配备Intel Core i7-11700和32 GB RAM的消费级计算机上完成。

5.1 与最先进方法的PR和RR比较

本文将基于标签一致性的动态点检测和移除方法与三种最先进的三维点云基础的动态点检测和移除方法进行了比较,即Removert、Erasor和Dynamic Filter。表I和表II的结果显示,本文的基于标签一致性的动态点检测和移除方法在更高的PR和RR方面对比Dynamic Filter在几乎所有序列上表现出更好的性能。尽管Dynamic Filter在序列00上实现了比本文更高的RR,但本文的结果与他们的非常接近,仅相差0.36%。

表I|与最先进方法在Semantic-KITTI数据集上的保留率(PR)©️【深蓝AI】编译

表II|与最先进方法在Semantic-KITTI数据集上的拒绝率(RR)比较©️【深蓝Ai】编译

5.2 与最先进方法的ATE比较

本文将提出的动态点检测和移除方法集成到一个自设计的LIO系统中以获得Dynamic-LIO,并在ULHK-CA和UrbanNa数据集上将其与四种最先进的LIO系统进行比较,即LIO-SAM、Fast-LIO2、RF-LIO和ID-LIO。Dynamic-LIO都有环路检测模块,并使用GTSAM来优化因子图。表III的结果显示,本文的Dynamic-LIO在MarketStreet和RussianHill上的精度优于 LIO-SAM、Fast-LIO2、RF-LIO和ID-LIO。由于RF-LIO既不是开源的也没有在UrbanNav数据集上进行测试,本文无法获得它在序列TST和Whampoa上的结果。虽然ID-LIO在UrbanNav数据集上实现了比本文系统更小的 ATE,但本文开源代码的做法更好地证明了本文结果的可复现性。

表III|与最先进方法在ULHK-CA和UrbanNav数据集上的绝对轨迹误差(ATE)比较©️【深蓝AI】编译

5.3 对不确定点的消融研究

在本文的系统中,包含不确定点的目的是尽可能多地移除动态点,从而增加输出地图中静态点的比例。本节通过比较包含和不包含不确定点情况下Dynamic-LIO的PR和RR值来验证包含不确定点的必要性。表IV和表V的结果显示,包含不确定点可以略微提高本文动态点检测和移除方法的PR和RR。

表IV|不确定点对保留率(PR)的影响©️【深蓝AI】编译

表V|不确定点对拒绝率(RR)的影响©️【深蓝AI】编译

5.4 对位姿估计的动态点移除的消融研究

本节通过比较包含和不包含动态点移除情况下Dynamic-LIO的ATE结果来评估动态点移除对位姿估计的有效性。表VI的结果显示,移除动态点可以显著提高本文Dynamic-LIO的位姿估计精度。

表VI|移除动态点对绝对轨迹误差(ATE)的影响©️【深蓝AI】编译

5.5 与最先进方法的时间消耗比较

本文比较了本文的基于标签一致性的动态点检测和移除方法与两种最先进的三维点云基础的动态点检测和移除方法的时间消耗,表VII的结果显示,无论是Dynamic Filter还是RH-Map都无法保证实时能力,而本文的方法可以稳定地实时运行。表VIII的结果显示,本文Dynamic-LIO的时间消耗明显小于RF-LIO和ID-LIO,而本文的系统运行速度大约是RF-LIO和ID-LIO的5倍。由于RF-LIO既不是开源的也没有在UrbanNav数据集上进行测试,本文无法获得它在序列TST和Whampoa上的结果。

表VII|与最先进方法在Semantic-KITTI数据集上的时间消耗比较©️【深蓝AI】编译

表VIII|与最先进LIO系统在ULHK-CA和UrbanNav数据集上的时间消耗比较©️【深蓝AI】编译

5.6 各模块的时间消耗

本文评估了本文系统的运行时间分解(单位:ms)。对于每个序列,本文测试了点云处理(除地面拟合外)、位姿估计和动态点移除的时间消耗。动态点移除模块可以进一步分解为两个子步骤:地面拟合和标签一致性检测。表IX的结果显示,本文的系统仅需1~9ms 即可移除一次扫描中的动态点,而完成LIO其他任务所需的总时间是16~46ms。这意味着本文的方法可以在LIO系统中以极低的计算开销完成动态点检测和移除。

表IX|各模块的时间消耗©️【深蓝AI】编译

5.7 地图可视化

图8展示了本文的Dynamic-LIO在示例序列(semantic-KITTI-05)上重建静态点云地图的能力。如图8(a)所示,在移除动态点之前,移动物体的幽灵轨迹(绿色点)在地图上清晰可见。如图8(b)所示,在移除动态点之后,输出地图几乎不再含有幽灵轨迹。

图8|a:移除动态点之前的输出地图可视化;b:移除动态点之后的输出地图可视化©️【深蓝AI】编译

6. 结论

本文提出了一种基于标签一致性的动态点检测和移除方法,该方法根据特定点与其最近邻的一致性来确定该点是否为动态点。本文将提出的动态点检测和移除方法嵌入到一个自设计的LIO系统中,该系统能够准确估计状态并以极低的成本排除动态物体的干扰。实验结果表明,所提出的基于标签一致性的动态检测和移除方法可以实现与最先进的动态点检测和移除方法相当的保留率(PR)和拒绝率(RR),同时确保更低的计算成本。此外,本文的Dynamic-LIO在动态环境下的运行速度大约是最先进的LIO系统的5倍。

编译|蒙牛二锅头

审核|Los

移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇

深蓝AI·赋能自动驾驶+机器人+AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python 数据可视化折线图练习(下:代码演示)

根据上篇对三国疫情情况数据的罗列,构建折线图完成数据展示。(示例如下) 接下来是具体代码演示 import json from pyecharts.charts import Line from pyecharts.options import TitleOpts , LegendOpts , ToolboxOpts ,VisualMapOpts , T…

vue 3d echarts scatter3D元素塌陷,图标塌陷进地图完美解决方案

当我们手机用 scatter3D 类型时&#xff0c;最小值因为渲染问题会塌陷进模型里面&#xff0c;所以只要让value固定&#xff0c;再将label formatter 配合 boxHeight属性即可解决&#xff0c;&#xff08;代码附带自定义label图标解决办法&#xff09; 解决&#xff1a; <…

np.pad各种方式的图文解释

‘constant’——表示连续填充相同的值&#xff0c;每个轴可以分别指定填充值&#xff0c;constant_values&#xff08;x,y&#xff09;时前面用x填充&#xff0c;后面用y填充&#xff0c;缺省值填充0 ‘edge’——表示用边缘值填充 ‘linear_ramp’——表示用边缘递减的方式填…

Windows编程:图标资源、光标资源、字符串资源、加速键资源、WM_PAINT消息、绘图

承接前文&#xff1a; win32窗口编程windows 开发基础win32-注册窗口类、创建窗口win32-显示窗口、消息循环、消息队列win32-鼠标消息、键盘消息、计时器消息、菜单资源 本文目录 图标资源光标资源WM_SETCURSOR 消息 字符串资源加速键资源WM_PAINT 消息绘图绘图编程绘图基础基…

后端Web之分层解耦(控制反转IOC-依赖注入DI)

目录 1.三层架构 2.IOC-DI引入 3.IOC-DI使用 4.IOC细节 5.DI细节 内聚&#xff08;Cohesion&#xff09;和耦合&#xff08;Coupling&#xff09;是软件工程中两个重要的概念&#xff0c;它们衡量了软件组件的组织方式和组件之间的相互依赖程度。高内聚性意味着模块内的元…

2024真无线蓝牙耳机怎么选?24年四款性价比畅销爆款机型盘点

2024年&#xff0c;真无线蓝牙耳机的市场依旧竞争激烈&#xff0c;各种品牌和型号如雨后春笋般涌现&#xff0c;面对琳琅满目的选择&#xff0c;2024真无线蓝牙耳机怎么选&#xff1f;消费者在寻找具备高性价比和优秀性能的耳机时往往会感到困惑&#xff0c;那么我将针对大家的…

Nature Medicine | 常规机器学习构建蛋白质组衰老时钟!对于数学基础不好的同学,好好思考一下这种研究模式如何借鉴?

今天给各位老铁们分享一篇于2024年08月08号发表在 Nature Medicine [58.7] 的文章&#xff1a;"Proteomic aging clock predicts mortality and risk of common age-related diseases in diverse populations"&#xff0c;蛋白质组衰老时钟可预测不同人群的死亡率和常…

机器学习-卷积神经网络(CNN)

机器学习-卷积神经网络&#xff08;CNN&#xff09; 1. 卷积神经网络的基本概念1.1 卷积层&#xff08;Convolutional Layer&#xff09;1.1.1 卷积操作1.1.2 特征图&#xff08;Feature Map&#xff09; 1.2 激活函数&#xff08;Activation Function&#xff09;1.2.1 ReLU&a…

JavaEE从入门到起飞(八) ~ Git

git 概括 Git是一个分布式版本控制工具&#xff0c;主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等)。 学了git能干什么&#xff1f; 代码回溯 查看历史提交记录并恢复到之前的某个状态。这在发现错误或需要查看特定版本时非常有用。和CtrlZ的区别在于g…

【图机器学习系列】(一)图机器学习简介

微信公众号&#xff1a;leetcode_algos_life&#xff0c;代码随想随记 小红书&#xff1a;412408155 CSDN&#xff1a;https://blog.csdn.net/woai8339?typeblog &#xff0c;代码随想随记 GitHub: https://github.com/riverind 抖音【暂未开始&#xff0c;计划开始】&#xf…

Qt找不到QSound头文件,头文件QSoundEffect

目录 Qt找不到QSound头文件 CMake qmke 可能版本不同更新&#xff0c; 找不到QSound头文件 Qt找不到QSound头文件 #include <QSound> CMake 可以看一下这篇来自网上的文章 CMake中添加Qt模块的合理方法 - wjbooks - 博客园 (cnblogs.com) qmke 打开.pro文件&am…

Flowise在ubuntu22.04上的安装

之前我写过一篇FastGPT的文章&#xff0c;这里我再介绍另外一个开源的低代码工具&#xff0c;他提供开发人员可定制的LLM编排流程和AI代理。开发 LLM 应用程序通常涉及无数次迭代。Flowise的低代码和拖放式 UI 方法支持快速迭代&#xff0c;帮助您更快地从测试到生产。 推荐它的…

鸿蒙(API 12 Beta3版)【AVSession Kit简介】 音视频播控服务

AVSession Kit&#xff08;Audio & Video Session Kit&#xff0c;音视频播控服务&#xff09;是系统提供的音视频管控服务&#xff0c;用于统一管理系统中所有音视频行为&#xff0c;帮助开发者快速构建音视频统一展示和控制能力。 能力范围 提供音视频统一管控能力&…

Windows Server 域控制服务器安装及相关使用

目录 1.将客户机加入域 2.安装域控制器 3.新建域用户 4.设置用户登录时间&#xff0c;账户过期时间 5.软件分发 ​编辑 6.换壁纸 7.OU与GPO的概念 域为集中控制&#xff0c;拿下域控是拿下目标的关键 以Windows Server 2022为例 1.将客户机加入域 前提&#xff1a;客…

通过调整JVM的默认内存配置来解决内存溢出(‌OutOfMemoryError)‌或栈溢出(‌StackOverflowError)‌等错误

文章目录 引言I 调整JVM的默认堆内存配置java命令启动jar包Tomcat服务器部署java应用引言 问题: org.springframework.web.util.estedServletException: Handlerdispatch failed: nested exception isjava.lang.0utOfMemoryError: Java heap space原因分析: 查询查询平台所…

python 之可视化数据(地形图练习)

一、按要求构建疫情情况数据的地形图 二、代码展示 from pyecharts.charts import Map from pyecharts.options import VisualMapOptsmap Map() data [("北京市" , 994),("上海市" , 199),("湖南省" , 299),("台湾省" , 12),(&qu…

[游戏开发] LuaTable转string存读二进制文件

UE5和Unity通用此方案&#xff0c;只不过读写文件的接口略有不同&#xff0c;lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…

高斯泼溅综合指南

高斯泼溅&#xff08;Gaussian Splatting&#xff09;是一种表示 3D 场景和渲染新视图的方法&#xff0c;在“实时辐射场渲染的 3D 高斯泼溅” 中引入。它可以被认为是 NeRF 类模型的替代品&#xff0c;就像当年的 NeRF 一样&#xff0c;高斯泼溅引发了大量新的研究工作&#x…

Android Kotlin - 通过 URL Scheme 打开应用

在 Android 应用中&#xff0c;可以通过自定义 URL Scheme 或 Deep Links 打开应用。这允许你定义一个自定义的 URL 格式&#xff0c;使得当用户点击包含这个 URL 的链接时&#xff0c;系统可以识别并打开你的 APP。以下是详细的实现步骤和一些注意事项。 1. 配置 AndroidMani…

RISC-V特权架构 - 时钟中断处理

RISC-V特权架构 - 时钟中断处理 1 MTI中断处理1.1 触发中断1.2 查询mie.MTIE与mip.MTIE1.3 若运行在M模式下1.4 若运行在S模式下1.5 若运行在U模式下 2 STI中断处理2.1 触发中断2.2 查询mie.STIE与mip.STIE2.3 若运行在M模式下2.4 若运行在S模式下2.5 若运行在U模式下 3 知识总…