# LiteratureReview LeGO-LOAM

Abstract

我们提出了一种轻量的, ground-optimized的lidar里程计和建图方案.

是ground-optimized, it leverages the presence of a ground plane in its segmentation and optimization step.

我们首先用点云分割来滤出噪声, 特征提取来获得有区分度的 planar / edge 特征.

一个two-step LM优化.

我们用LeGO-LOAM和LOAM比较, 发现LeGO获得了类似或者更好的精度, 但是计算力少.

1. Introduction

视觉办法在loop detection上有优势.

lidar在晚上也能工作. 一个经典的办法是ICP. 当点很多的时候, ICP的计算力需求很大. 有很多ICP的变种来提升它的效率. [3]使用了point-to-plane的ICP. [4] Generalized-ICP提出了两个scan的平面匹配.

Feature-based方法也得到了更多关注. 这些特征需要适合高效的匹配, 而且对视角有不变性. 很多detector, 比如Point Feature Histograms (PFH)和Viewpoint Feature Histograms(VFH)被提出. 一个提取一般目标的特征方案用Kanade-Tomasi角点在[11]中被引入. [12]提出了提取线和面特征.

很多用点云注册的方案也被提出了. [13]和[14]用点在局部的cluster计算的曲率来提特征点. [15]选择了有高曲率的点, 假设场景都是充满平面的. [16] 假设环境是由平面组成的, 用了plane-based registration的方法. 室外环境比如森林会限制它的应用.

[18]提出了segmentation-based registration方案. SegMatch是第一个用点云分割的. 一个特征vector会用每个segment的eigenvalue和shape histograms来计算. 随机森林会被用来匹配. 虽然它能提供在线的位姿估计, 但是只能1Hz.

一个低漂移的实时lidar里程计和建图方案(LOAM)在[19], [20]中被提出. LOAM做了point feature to edge/plane scan-matching来找scan之间的匹配. 特征在点和它的领域的roughness来计算. 有很高roughness度的特征是edge. 类似的, 有低roughness的点是planar feature. 实时的表现是通过把估计分体分成两块来做的. 一个算法跑高频率, 并且以低精度估计传感器速度. 另一个传感器跑低频率, 以高精度估计移动. 最后融合.


lightweight and ground-optimized (LeGO-LOAM).

  • 平面feature会用来获得\([t_z, \theta_{roll}, \theta_{pitch}]\).
  • 剩下的平移\([t_x, t_y, \theta_{yaw}]\)通过匹配edge特征来获得。

我们同时也集成了回环的能力。

2. System Hardware

VLP-16可以测100m,误差+-3cm. vertical FOV(30°)。horizontal FOV 360°。16线的resolution是2°。 horizontal angular resolution是0.1°到0.4°(根据旋转速度)。

在这个paper里,scan rate是10Hz,angular resolution是0.2°。

3. LightWeight LiDAR Odometry and Mapping

A. System Overview

# LiteratureReview LeGO-LOAM

B. Segmentation

\(P_t\) 是在\(t\)时刻的点云. \(P_t\)会首先被投影到一个range image. 被投影的range image的精度是1800x16. 每个点云就变成了一个像素. value \(r_i\)就是欧氏距离。 因为倾斜的地形(sloped terrain)很常见,我们不会假设地面是平的。用了【22】里的column-wise evaluation,也就是ground plane estimation。在这个处理之后,代表地面的电晕就不会用来分割了。

用了基于图像的segmentation【23】来把range image clusters。来自一个cluster的点被assign一个label。

假设机器人的场景是充满噪声的。e.g. 树叶就是琐碎而不可依赖的特征。我们会忽略少于30个点的cluster。

# LiteratureReview LeGO-LOAM

C. Feature Extraction

特征提取的过程跟【20】类似。但是,不是在raw point cloud中提取,我们从ground points和segmented points里提取。

\(c=\frac{1}{|S| \cdot\left\|r_{i}\right\|}\left\|\sum_{j \in S, j \neq i}\left(r_{j}-r_{i}\right)\right\|\)

为了平均的从各个方向来提取特征。我们把图像horizontally分为几个子图。然后我们把子图的每一行根据它的roughness排序。跟LOAM类似,我们用一个阈值\(c_{th}\)来区分。比阈值小的\(c\)就是平面特征。这样就有\(n_{\mathbb{F}_e}\)个edge特征点。我们把360°的range image分为6个子图。每个子图的分辨率是300x16.\(n_{F_{e}}, n_{F_{p}}, n_{\mathbb{F}_{e}},\) and \(n_{\mathbb{F}_{p}}\)分别是2,4,40,80.

D. Lidar Odometry

两个scal的平移是通过point-to-edge和point-to-plane的scan匹配。也是跟【20】一样。

但是我们也注意到一些提升。

1)Label Matching

没啥东西。

2) Two-step L-M Optimization

在【20】里,一系列的非线性表达式(edge和平面点的距离)被编译到一个单一的comprehensive distance vector.然后用LM来找到最小距离。

我们引入了一个2-step LM优化。

  • \([t_z,\theta_{roll}, \theta_{pitch}]\) 使用平面做的。
  • \([t_x, t_y, \theta_{yaw}]\) 是用edge做的,然后把z, roll, pitch作为约束。最后融合这6个*度。我们认为这个两步走可以减少计算时间达35%。

E. Lidar Mapping

lidar mapping模块匹配特征(当前的,和点云图)来refine pose,但是是在很低的频率。这里也用了LM。

主要的区别是final点云图的存储。我们不是存储单个点云图,而是存每个特征组\(\{ \mathbb{F^t_e, \mathbb{F}^t_p} \}\)。

我们也可以集合pose-graph到LeGO里,然后调整位子。

4. Experiment

A. Small-scale UGV Test

# LiteratureReview LeGO-LOAM

5. Conlusions and Discussion

没啥。

上一篇:Lidar Camera fusion slam


下一篇:lego loam 跑镭神32线激光雷达