0. 简介

对于NDT而言,相信各位应该都有所了解了,但是作为高精地图来说性能还需要进一步提升,为此《Towards High-Definition Maps: a Framework Leveraging Semantic Segmentation to Improve NDT Map Compression and Descriptivity》一文提出了一种利用语义分割提高NDT地图压缩和描述能力的框架。由于受到车载存储容量的限制,自动驾驶的鲁棒导航需要高精度(HD)地图,本文提出的环境感知正态分布变换(EA-NDT),其显著改进了标准NDT表示的压缩方式。EA-NDT的压缩表示是基于点云的语义辅助聚类,与标准NDT的栅格单元相比,具有更优的单元。与标准NDT相比,EA-NDT在保持相同描述能力的同时,始终实现了至少1.5倍的地图压缩。此外,我们表明,当使用相同数量的单元时,与标准NDT相比,EA-NDT能够产生具有更高描述能力得分的地图。相关的代码在gitlab中开源了

图1:点云(白色)和相应的EA-NDT高清地图表示的示意图。EA-NDT单元用椭球体(标准差内的质量)可视化,显示建筑物(黄色)、围栏(青色)、地面(紫色)、电线杆(蓝色)、树干(橙色)和交通标志(红色)的标签。

1. 主要贡献

本文的主要贡献总结如下:

  1. 本文提出一种新型的数据驱动框架,用于计算没有栅格结构的NDT地图表示;

  2. 本文证明了与NDT表示相比,具有显著改进的数据压缩;

  3. 本工作将所提出的EA-NDT的开源实现分享给研究社区;

  4. 本文提供在使用Velodyne VLS-128激光雷达采集的数据上评估所提出EA-NDT的配准数据集。

2. 环境感知的NDT

我们提出了一个名为环境感知非破坏性检测(EA-NDT)的框架,将语义分割的点云划分为NDT单元。该框架是一个直接的流程,由4个阶段(图3)组成,逐步将输入的点云划分为单元,最终表示为一个NDT地图。流程的输入是一个注册点云,按照语义分割、实例聚类、基元提取和单元聚类的阶段顺序进行处理。最终,流程的输出是一种基于环境感知的NDT高清地图表示,称为EA-NDT HD地图,它使用NDT表示存储找到的单元。

图3:基于第三节中的框架,提出的EA-NDT处理流程的可视化。输入是一个语义分割的点云,EA-NDT HD地图之前的中间阶段是实例、基元和单元,其中实体通过颜色分隔。语义信息的颜色映射在图1中解释。

在注册点云中,每个三维点都有X、Y、Z的笛卡尔坐标(例如ETRS-TM35FIN、ECEF)和强度值。语义分割为云中的每个点附加了语义信息,以便进一步对数据进行聚类。在这项工作中,我们使用了道路、人行道、停车场、建筑物、围栏、杆子、交通标志和树干标签来演示该框架,但也可以使用其他标签。实例聚类将每个语义段划分为空间上相互分离的实例。基元提取将每个实例划分为可以用单峰分布建模的预定义基元。在这项工作中,我们定义了平面和圆柱形基元,但该框架可以扩展以支持新类型的基元。然而,大型基元(如树木)无法用均匀分布很好地建模。因此,单元聚类进一步将每个基元划分为大小近似相等的单元,同时最小化使用的单元数量。最终,EANDT HD地图以八叉树[20]的形式呈现,在这项工作中,它存储了每个单元的点计数器、点总和和协方差矩阵的上对角线,但也可以包括其他属性,如语义段、实例聚类或基元类型。

3. 主要方法

基于第二节中提出的框架,我们使用C++14在ROS Noetic Ninjemys上进行了实现。实现的主要功能使用了点云库(Point Cloud Library,PCL)[28]中的现有函数和类。实现的处理流程如图3所示。框架的第一阶段,语义分割,主要使用的是RandLA-Net离线处理的。

因此,我们的数据集已经包含了语义信息。 实例聚类使用欧几里得区域生长算法[29]将每个语义分割划分为空间上分离的实例,如图3所示。通常情况下,我们要求实例之间的距离阈值为30厘米,每个实例至少包含10个点。对于地面标签,我们要求实例之间的距离阈值为50厘米,每个实例至少包含3000个点。在我们的数据集中,存在大量的离群点和地平面以下的反射点,这些点在地图中是不需要的,实例聚类用于过滤这些点。

在基元提取中,树干和杆子实例被建模为单独的圆柱形基元,交通标志实例被建模为单独的平面基元。图3展示了这两种基元类型。对于其他语义标签,通过随机采样一致性(Random Sample Consensus,RANSAC)[30]算法,在对实例进行10厘米平均体素网格子采样和估计每个剩余点的26个最近邻点的点法线后,提取平面基元。对于建筑和围栏实例,使用π/4的法线距离权重和15厘米的距离阈值进行平面拟合。对于地面实例,过程略有不同:1)使用现有的K-means++算法[32]实现[31]将地面实例划分为面积约为100平方米的基元(K-means聚类数的初始化在本节的单元聚类中解释),然后2)对每个基元进行平面拟合,使用30厘米的距离阈值进行粗略的噪声过滤。 在单元聚类中,使用K-means++算法将基元划分为单元(如图3所示),其中聚类数的数量

对于每个标签L,进行初始化。在(1)中,\lceil·\rceil是天花板运算符,n_L要么是圆柱体基元(树干和杆)的n_α,要么是平面基元(地面、建筑物、栅栏和交通标志)的n_β

其中,l_α是圆柱体基元的长度,A_β是在通过主成分分析(PCA)找到的特征空间中将平面基元投影后剩余的点数,并使用10厘米体素网格进行过滤。此外,在对地面上的单元进行聚类后,对每个单元进行15厘米阈值的平面拟合,以进行更精细的噪声过滤。在公式(1)中,缩放参数f_Lg_L(见表II)是通过手动拟合每个L的6次迭代得到的,从f_{L_0} = 1g_{L_0} = 1开始,直到EA-NDT的单元数N_c(如图4所示)足够接近于具有单元尺寸s_c < 1 m的NDT。尽管有单元尺寸的限制,但每个基元至少需要有一个单元。图4显示了这如何为具有较大单元的Nc设置了一个下限。最后,所有计算得到的单元都存储在表示EA-NDT HD地图的八叉树结构[20]中。八叉树中的每个叶子单元存储一个点计数器、点总和和单元的协方差矩阵的上对角线。我们要求一个叶子单元至少有6个点,才能可靠地用正态分布进行建模,因此忽略点数较少的单元。PCL中的八叉树实现需要一个最小叶子单元尺寸参数,我们使用s_c/4来使其相对于EA-NDT所需的单元尺寸足够小。

4. 参考文献

https://mp.weixin.qq.com/s/oz1E-rZc8ilokh92Rs89Vg