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,或者已知的相對起始點。app

Contributionside

  • 基於segment matching的3D點雲定位方法。
  • 一組用來normal estimation, segmentation和recognition的增量算法。
  • incremental approach和batch solution在urban駕駛下的比較

a) Incremental point cloud segmentation測試

[3]提出了稠密點雲分割的區域生長方法。 對每一個輸入點雲,分割只會作一次,還有後續的融合步驟。這裏只會考慮平面的分割,而咱們的方案更泛化。【5】提出分割深度圖。上述的全部方案都沒有基於分割結果提出retrieving models的方案。優化

b) Efficient geometric verificationspa

在stereo images的時候,有提出減小匹配數量的策略。【7】提出了RANSAC只能作空間一致性的檢查。上述的方法都有圖像的視差的假設,全部他們的精度受高disparity和視角強烈變化的影響。rest

3. Method

image-20200329154230344

A. Dynamic Voxel Grid

持續的3D點雲輸入被filtered,而後再一個Local cloud裏用voxel的方法累積。咱們沒有用每次有新觀測的時候更新整個local cloud的batch voxel filtering方法,而是更新只有被新的點雲影響的voxel。咱們用DVG,一個高效的數據結構可以支持動態的插入和移除。code

被佔的voxel會被保存在一個vector裏,每一個voxel保存它的index,centroid和包含的點數。爲了減小噪聲,一個voxel會在有特定數量的點數的時候被認爲是active。orm

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,能夠支持實時。

相關文章
相關標籤/搜索