0. 简介

在机器人领域,点云已经成为一种必不可少的地图表示方式。从定位和全局路径规划等下游任务的角度来看,动态对象对应的点会对其性能产生不利影响。现有的点云动态点去除方法在对比评价和综合分析方面往往缺乏明确性。因此,《A Dynamic Points Removal Benchmark in Point Cloud Maps》提出了一个易于扩展的统一基准测试框架,用于评估地图中动态点的移除技术。它包括重构的最先进的方法和新的度量来分析这些方法的局限性。这使得研究者能够深入挖掘这些局限背后的深层原因。该基准使用多个不同传感器类型的数据集。相关的代码也已经在github上开源了。

1. 主要贡献

本文主要的贡献包括以下几点:

  • 重构现有方法,建立一个统一的基准来移除地图中的动态点。
  • 引入新的度量标准,并评估所有方法的性能,详细说明与此任务相关的挑战。
  • 引入一个更适应地图清理任务的Octomap扩展。

2. 传统算法

这些方法通常在处理各种传感器类型和数据分布时表现出更强的鲁棒性和灵活性。已经提出了各种方法,通常被归类为射线投射、基于可见性和无可见性。占用栅格,通常以Octomap [8]的形式存在,是一种使用射线投射来更新栅格地图空间的占用值的流行技术,通过计算扫描的命中和未命中次数。此外,还提出了其他数据结构,例如通过表示截断有符号距离场(TSDF)[15]而不是占用来检测点云中的动态点。它们依赖于占用值或截断有符号距离的概念来检测点云中的动态点。这些方法根据从传感器获得的测量值,逐帧逐个体素地更新值。如果一个体素内的值与指定的阈值显著偏离,那么该体素内的点被认为是动态的。

尽管这些方法很有效,但在执行射线投射步骤时可能计算成本很高,因此出现了基于可见性的方法来降低计算成本。基于可见性的方法假设如果查询点在地图中的先前获取点的后面观察到,则先前获取的点是动态的。Kim等人[5]使用基于可见性的多分辨率范围图像构建静态点云地图。射线投射和基于可见性的方法都存在图2所示的问题。(a)显示射线远离地面,射线与地面线之间的角度变得非常小。在这种情况下,基于射线的方法在射线通过该区域时更新自由值,这可能会导致一些地面点被错误地视为动态点。(b)表示在累积多个扫描帧后,某些帧中地面下方的噪声可能导致先前的区域被更新为自由区域,错误地标记地面点。(c ) 说明这些方法在没有物体在其后面时无法移除动态点。在这个例子中,只有大卡车上的一些命中点会在后来的墙上的命中点通过时被清除,而其他命中点则不会。紫色的命中点将错误地保留下来,因为没有新的命中点通过它们。Lim等人在[16]中观察到了这些限制,并提出了一种基于原始地图和查询之间高度差异的新方法。他们比较了查询扫描和地图之间区域中最小和最大z值之差的比率。如果比率大于预定义的阈值,则认为该区域包含动态物体。这种方法改善了对未标记类别中动态物体的处理。

图2:基于射线投射和可见性的方法的限制

我们已经讨论了几种从点云中去除动态点的传统方法。它们通常涉及许多需要调整的参数。例如,Lim的方法[16]需要了解传感器的高度,因此对高度值非常敏感。这种方法还需要调整最大和最小高度范围,因为它无法处理图3中行人在树下行走等情况。

图3:基于高度阈值的方法的局限性。(a) 当人们站在树下时,使用高度阈值hmax通常会忽略传感器观测到的最高点。(b) 然而,当选择一个阈值hmax时,较大的物体如卡车可能仍然有剩余点。

3. 主要方法

在本节中,我们提供了我们基准测试中包含的方法[8],[5],[16]的摘要,并讨论了它们的算法设计和框架。我们准备了处理数据集和脚本,以从几个开放数据集和重构方法中提取数据,而无需使用ROS(机器人操作系统),以便更容易进行基准测试和更快的运行速度。
在我们的基准分析的指导下,并解决图2中的角度问题和稀疏点问题,我们将Octomap [8]调整为估计地面,然后对非地面点进行相同的射线投射过程进行击中和未击中检测。

3.1 Removert

Kim等人[5]提出了一种离线方法,需要先有原始地图来比较查询和原始地图之间的差异,如图4所示。首先,他们使用OpenCV [17]将查询和原始地图点云转换为深度范围图像。随后,他们计算这两个图像矩阵I^Q_kI^M_k之间的差异,如下所示:


最后,动态地图点在[5]中被定义

在这里,P^M_k是原始的全局点云地图,P^{DM}_k是动态点的集合,p^M_{k,ij}是像素(i, j)中的点集,τ_D是一个阈值。图4a展示了他们的框架。

3.2 ERASOR

Lim等人[16]提出了一种基于观察的方法,即城市环境中大多数动态物体与地面接触。他们引入了伪占用的新概念,用于表示单位空间的占用情况,并区分具有不同占用水平的空间。随后,他们根据原始地图和查询帧之间的高度差确定潜在的动态候选区域P_{Dynamic},如[16]中简要描述的那样。

在确定潜在动态候选容器的条件是:其中 Z_{(i,j),t} = {z_k ∈ p_k|p_k ∈ S_{(i,j),t}}z表示与传感器原点相关的点的z值。sup和inf分别表示Z中的最高和最低点高度值。

最后,他们采用区域地面平面拟合(R-GPF)来区分候选容器中的静态点和动态点。图4b展示了他们的框架。

3.3 Octomap和改进(重点内容)

Hornung等人提供了一个流行的映射框架,用于在机器人领域生成体积化的三维环境模型。它基于八叉树,并使用概率占用估计。尽管它最初并非为动态点去除而设计,但它经常被用作基准。
首先,Octomap将所有点栅格化为三维体素,其中每个体素是一个叶节点n。然后,根据传感器测量z_{1:t}更新n被占用的概率。

在使用所有扫描帧更新整个地图之后,地图中的每个节点都会有一个最终的占用值。如果超过了一个阈值,我们将该节点视为静态点。在这个过程中,包含动态点的节点的占用概率会随着射线穿过这些节点的某些帧而降低,从而降低它们的占用值。然而,正如前面提到的,它并不是为动态点去除任务而设计的,在第五节中,我们可以观察到第二节中提到的挑战。在我们的基准分析的指导下,我们将通过加入噪声过滤和地面估计技术来增强原始的Octomap。通过在第五节进行消融研究,我们检验了我们改进的Octomap与原始版本之间的性能差异,展示了我们修改的好处。

为了减小噪声和异常点的影响,或者减少射线投射的计算负担,我们采用统计离群值去除(SOR)技术进行过滤。然后,我们使用样本一致性(SAC)分割[18]对输出点云进行地面估计。最后,我们通过将估计的地面点所占据的网格单元设置为空闲状态来优化过程,确保在这些区域不进行射线投射。这种方法可以防止将地面点错误标记为动态点,并从静态地图中删除它们,保持最终表示的完整性。然后,我们只在所有帧中基于非地面点集成和更新八叉树。

在导出最终地图时,我们使用一个阈值来查询占用网格点并集成地面点。这种方法确保了当动态物体移开时,包含动态点的网格单元的占用值会更新,并且射线再次穿过该区域,提供了一个准确和高效的环境表示。

图4:不同方法的框架。术语“查询扫描”表示数据已经被转换到包含传感器中心姿态的世界坐标系中