LR:HDMI-Loc

Abstract

HDMap: 矢量的地图

我们用立体相机roadmark.

我们引入了路信息8-bit 表示.

现状 现存的方法没有完全的利用地图信息, 只是估计了部分pose.

我们展现了6DOF的定位, 用了立体相机.

我们利用了粒子滤波和一个6DOF的优化器. 平均误差在 - 0.3m,.

1. Introduction

A. 2D Digital Map-based Localization

低精度的航拍图向量的2D图.

[3] 用航拍图提取的roadmark和poles作为路标. Pole状的特征从LiDAR点云中提取, roadmark像箭头, 停止线和人行道用图像检测. 然后用这些估计位姿.

[4] 用SVM(Support Vector Machine) 来定义车道线像素, marking是用canny edge来检测, 然后估计了每个marking的中心, 最后通过匹配车道线和航拍图的中心来估计位姿.

[6] 用了航拍图提取的墙的方向来修正航向角.

[7] 用了2D数字地图来存储建筑

B. 3D Pointcloud Map-Based Localization

[9] 用点云的广度信息来估计位姿.

[10] 用NMI(Normalized互信息).

[11] 用立体相机和3D地图来定位.

C. HD Map-based Localization

Naver Labs 的地图11x11km的需要17Mbyte.

2. Proposed Method

用了[13]的矢量地图.

  1. 从立体相机获得视差图语义label.

  2. 把hdmap从shapefiles转船成8-bit图.

  3. 用粒子滤波估计4DOF(3DOF和平移和yaw)的位姿. 通过图像匹配和全局HDmap图. query的patch和全局HDMap图都是8-bit图, 所以可以用与计算. 最后在非线性优化在算6DOF.

B. Pre-processing and 8-bit Representation

在匹配前, 我们把HDMap向量数据->8-bit表示, 叫做tile, 保存在图像.

1. HDMap -> 8 bit image tile

我们把上图的shapefile进行转化. 第1/2/3 bit表示lane, stop lines, 和signs.

上图一个块就是一个tile. 每个像素都是以8-bit表示, 每个bit表示一个label.

2. Search Tree for HD Map Tiles

有一个HDMap中心树, 这个中心数是由每个tile的中心组成的.

3. Stereo Image to Labeled Pointcloud

4. Labeled Pointcloud to Subpatch

我们通过投影有类别的点云(从立体相机)到z平面(鸟瞰投影). 这个8-bit图像表示叫做subpatch, 最后会组合成一个patch.

一个patch有 (l_{patch}) (5) 个序列的 subpatch.

C. Patch Maintenance

1. Patch Update

投影方程:

[^{p_{0}} P=pi_{0}left({ }^{G} P_{S, t} ight) ]

它把全局坐标系里的点云投影到了图像坐标(z-plane). 投影的结果包含图像坐标和label信息: (^{p_{0}} P^{(k)}=left{u^{(k)}, v^{(k)}, l^{(k)} ight})

2. Patch Selection

...

D. Bitwise Particle Filter

(overline{mathbf{T}}_{V}^{G}) : 表示最终优化的位姿

(mathbf{T}_{V}^{G}) : 里程计的推算位姿

粒子滤波 有三个状态量((t_x, t_y, r_z)).

1. Partical Re-sampling

[n_{ ext {particle}}=min left(n_{min } frac{l_{max }}{n_{ ext {patch}} cdot l_{ ext {patch}}}, n_{max } ight) ]

2. Partical Prediction

3. Candidate Tileset Creation

4. Particle Weight Update

粒子权重会根据bit-wise的匹配分数来更新.

对于匹配, patch图像 ((I_{p_i}))是通过 粒子位姿(hat{ heta}_{p_{i}})和里程计位姿( heta_{p_i}) 来旋转的 ---- 绕着 patch图的中心点 (c_{p_i})

[hat{I}_{p_{i}}=tleft(mathbf{c}_{p_{i}} ight) rleft(hat{ heta}_{p_{i}}- heta_{p_{i}} ight) tleft(-mathbf{c}_{p_{i}} ight) I_{p_{i}} ]

给定global HDMap tile图(I_G) 和 patch图 (hat{I_{p_I}}) , 我们做了AND操作:

[I_{M, p_{i}}=operatorname{AND}left(I_{G}, hat{I}_{p_{i}} ight) ]

粒子的权重是用上式更新的.

5. Pose and Height Estimation

在更新粒子的权重之后, 最后的车辆位姿是用更新后的权重估计的. top 3% 的粒子的平均pose是最终的pose估计.

因为粒子滤波使用里2D图像匹配, 只有 (t_x, t_y, r_z) 可以用这个方法计算. 全局高度((t_z))是用HDMap的高度信息更新的.

E. Optimization

最后的优化处理了roll和pitch.

从点云获得平面方程会被转换到车辆坐标, 用RANSAC算法.

[V_{mathbf{n}_{t}}=left{{ }^{V} n_{t, x},{ }^{V} n_{t, y},{ }^{V} n_{t, z},{ }^{V} d_{t} ight} ]

[$r_{x}^{*}, r_{y}^{*}=underset{r_{x}, r_{y}}{operatorname{argmin}} sum_{k=0}^{N}left({ }^{V} mathbf{n}_{t} cdot{ }^{V} P_{m a p}^{(k)} ight)$ ]

3. Experimental Results

..

4. Conclusion

没啥.

原文地址:https://www.cnblogs.com/tweed/p/13653909.html