Literature Review: Incremental Segment-Based Localization in 3D Point Clouds

Abstract

在3D点云中定位因为从3D数据中提取信息的复杂度的原因是非常挑战的。我们提出了一个增量的方法来高效的解决这个问题。

  • 首先会在动态的voxel积累观测,然后有选择性的更新点的normal。
  • 一个incremental segmentation algorithm

我们展现说这个增量方案可以在10Hz的urban场景下进行全局定位,比起batch solution快了7.1倍。

1. Introduction

感知能力是很重要的。所以移动机器人经常会配备3D的time-of-filght的传感器来产生环境的精准重建。我们专注于3D点云的定位。可以在3D数据中做全局关联使得我们可以重建要给unified表达方式,不需要假设low drife,或者已知的相对起始点。

Contributions

  • 基于segment matching的3D点云定位方法。
  • 一组用来normal estimation, segmentation和recognition的增量算法。
  • incremental approach和batch solution在urban驾驶下的比较

a) Incremental point cloud segmentation

[3]提出了稠密点云分割的区域生长方法。 对每个输入点云,分割只会做一次,还有后续的融合步骤。这里只会考虑平面的分割,而我们的方案更泛化。【5】提出分割深度图。上述的所有方案都没有基于分割结果提出retrieving models的方案。

b) Efficient geometric verification

在stereo images的时候,有提出减少匹配数量的策略。【7】提出了RANSAC只能做空间一致性的检查。上述的方法都有图像的视差的假设,所有他们的精度受高disparity和视角强烈变化的影响。

3. Method

image-20200329154230344

A. Dynamic Voxel Grid

持续的3D点云输入被filtered,然后再一个Local cloud里用voxel的方法累积。我们没有用每次有新观测的时候更新整个local cloud的batch voxel filtering方法,而是更新只有被新的点云影响的voxel。我们用DVG,一个高效的数据结构能够支持动态的插入和移除。

被占的voxel会被保存在一个vector里,每个voxel保存它的index,centroid和包含的点数。为了减少噪声,一个voxel会在有特定数量的点数的时候被认为是active。

1) Voxel Indexing

一个voxel就是一个大小是\(l\times w \times h\), 每一个voxel有唯一的index(再区间\([0, l\cdot w \cdot h - 1]\)。 grid有一个固定的分辨率\(r\),一个rigid T从是世界系到grid系 \(T_{mg}\)。为了计算的高效,我们要grid的大小是2的倍数,\(l=2^{l_{bits}}\), \(w=2^{w_{bits}}\), \(h=2^{h_{bits}}\)

2)Insertion and Removal

当新的点被插入的时候,DVG会计算它的indices,然后根据voxel id的增序排列。考虑到排列有\(\mathcal{O}(n\log(n))\)的复杂度,所以用batch voxelization来排序就很重要。当\(m\)个点\(q_i\)被插入到要给voxel(centroid是\(p\)是从\(n\)个点降采样)的时候,我们有:

\(p \leftarrow\left(n \cdot p+\sum_{i=1}^{m} q_{i}\right) \cdot \frac{1}{n+m}, \quad n \leftarrow n+m\)

3) Rigid Transformation

当回环检测的时候,。。。

B. Incremental Normal and Curvature estimation

一个点\(p_i\)在3D点云里计算它的normal的时候,通常是用neighborhood点集\(\mathcal{N}(p_i)\)的协方差矩阵\(M\)来衡量的。在用fixed-radius Nearest Neighbors(NN)找到邻居后,\(M_{i}:=\overline{\left(\nu_{j}-\bar{\nu}\right)\left(\nu_{j}-\bar{\nu}\right)^{\top}}\)

normal的估计等于\(M_i\)的normalized eigenvector。curvature是\(\sigma=\lambda_{0}\left(\lambda_{0}+\lambda_{1}+\lambda_{2}\right)^{-1}\),这里\(\lambda_{0}<\lambda_{1}<\lambda_{2}\)\(M_i\)的eigenvalues。

这里我们做了两个主要的优化步骤。协方差矩阵\(M_i\)是增量算的,并且只有被新扫到的点影响的normal才会被更新。

1)Incremental Updates 重看一遍

2) Rigid Transform

C. Incremental region growing segmentation

region growing policies 区域生长策略

image-20200329175614898

1)Clusters merging:

image-20200329175857050

2)Growing policies

在准备阶段,PREPARESEEDS会搜集通过CANBESEED测试的点的id,然后把他们通过curvature的增序排列。这样保证区域生长的起始点是最平坦的点,减少segments的数量。

CANGROWTO会返回true,如果seed的normal和邻居点是平行的。因为normals的旋转未知,这个大概通过点乘来确认。另外一个max阈值是点的curvature,为了通过CANBESEED测试。

欧氏距离policies很容易理解,因为增量的区域生长已经基于欧氏距离找到邻居candidate。所以,CANGROWTO和CANBESEED总会返回true,PREPARESEEDS只是搜集还没有被assign的点的id。

3) Segment Tracking

cluster ID仅仅是临时的值来定义点归属于同样的cluster,segment ID是lingtime-long的定义。segmentation的阶段能够让我们鲁棒的跟踪segments和他们在局部地图的持续的views,这也会带来很多好处。

在【1】中,多views不能和同一个segment联系,也会获得不同的IDs,从而导致目标地图的insertion of segment duplicates。

D. Graph-based incremental recognition

从局部点云中提取的segments会被一个generic feature vector描述(【13】中eigenvalue-based descriptor)。局部和target map的segments的候选匹配就会被通过NN搜索找到。如果一个对\(c_i, c_j\)的segment centorids的欧式举例少于一个阈值,那么就是几何一致的。在我们的方案中,我们用graph problem来描述recognition的问题,来定义个Maximum Pairwise Consistent Set (MPCS).

我们也利用了章节3-C.3的segment tracking。

\(\mathcal{S}\left(c_{i}\right)=\left\{c_{j} \in V | j \leq i \wedge \Delta\left(c_{i}, c_{j}\right) \leq \theta_{\Delta}+\epsilon\right\}\)

1)Cache Maintenance

如果一个匹配\(c_i\)第一次被找到,\(\mathcal{S}(c_i)\)就会被计算保存。如果这个匹配没有再被观测,那么就会被删掉。

image-20200330004812996

2)Consistent candidates set identification

image-20200330004856025

为了让两个匹配一致,他们的target segments的举例必须小于等于local map的直径。

3)Consistency Graph Construction

4)MPCS Identification

当一个MPCS的大小大于一个阈值的时候,我们认为一个recognition是成功的。

4. Experiments

A. Baseline

用来比较的baseline是原版的SegMatch[1],是用标注的PCL库组成的。batch voxel filtering是由pcl::VoxelGrid,而batch normals estimation是用pcl::NormalEstimation. Batch Segmentation使用pcl::EuclidianClusterExtractionpcl::RegionGrowing. Recognition是用pcl::GeometricConsistencyGrouping.

B. Performance

1)硬件: 所有实验都是再32GB的RAM,Intel i7-6700K上完成的。RAM的使用从来没有超过1.6G.

。。。

5. Conclusions

我们突出了3D点云定位的incremental的方案。跟之前的不同,这个方案会维护一个segmented local map,然后用增量的几何验证。这个加速可以达到10Hz,可以支持实时。

猜你喜欢

转载自www.cnblogs.com/tweed/p/12596198.html