HDMap: 矢量的地圖git
咱們用立體相機 和 roadmark.算法
咱們引入了路信息 的8-bit 表示.優化
現狀 現存的方法沒有徹底的利用地圖信息, 只是估計了部分pose.spa
咱們展示了6DOF的定位, 用了立體相機.3d
咱們利用了粒子濾波和一個6DOF的優化器. 平均偏差在 - 0.3m,.orm
低精度的航拍圖和向量的2D圖.blog
[3] 用航拍圖提取的roadmark和poles做爲路標. Pole狀的特徵從LiDAR點雲中提取, roadmark像箭頭, 中止線和人行道用圖像檢測. 而後用這些估計位姿.it
[4] 用SVM(Support Vector Machine) 來定義車道線像素, marking是用canny edge來檢測, 而後估計了每一個marking的中心, 最後經過匹配車道線和航拍圖的中心來估計位姿.io
[6] 用了航拍圖提取的牆的方向來修正航向角.class
[7] 用了2D數字地圖來存儲建築
[9] 用點雲的廣度信息來估計位姿.
[10] 用NMI(Normalized互信息).
[11] 用立體相機和3D地圖來定位.
Naver Labs 的地圖11x11km的須要17Mbyte.
用了[13]的矢量地圖.
從立體相機得到視差圖和語義label.
把hdmap從shapefiles轉船成8-bit圖.
用粒子濾波估計4DOF(3DOF和平移和yaw)的位姿. 經過圖像匹配和全局HDmap圖. query的patch和全局HDMap圖都是8-bit圖, 因此能夠用與計算. 最後在非線性優化在算6DOF.
在匹配前, 咱們把HDMap向量數據->8-bit表示, 叫作tile, 保存在圖像.
咱們把上圖的shapefile進行轉化. 第1/2/3 bit表示lane, stop lines, 和signs.
上圖一個塊就是一個tile. 每一個像素都是以8-bit表示, 每一個bit表示一個label.
有一個HDMap中心樹, 這個中心數是由每一個tile的中心組成的.
咱們經過投影有類別的點雲(從立體相機)到z平面(鳥瞰投影). 這個8-bit圖像表示叫作subpatch, 最後會組合成一個patch.
一個patch有 \(l_{patch}\) (5) 個序列的 subpatch.
投影方程:
它把全局座標系裏的點雲投影到了圖像座標(z-plane). 投影的結果包含圖像座標和label信息: \(^{p_{0}} P^{(k)}=\left\{u^{(k)}, v^{(k)}, l^{(k)}\right\}\)
...
\(\overline{\mathbf{T}}_{V}^{G}\) : 表示最終優化的位姿
\(\mathbf{T}_{V}^{G}\) : 里程計的推算位姿
粒子濾波 有三個狀態量(\(t_x, t_y, r_z\)).
粒子權重會根據bit-wise的匹配分數來更新.
對於匹配, patch圖像 (\(I_{p_i}\))是經過 粒子位姿\(\hat{\theta}_{p_{i}}\)和里程計位姿\(\theta_{p_i}\) 來旋轉的 ---- 繞着 patch圖的中心點 \(c_{p_i}\)
給定global HDMap tile圖\(I_G\) 和 patch圖 \(\hat{I_{p_I}}\) , 咱們作了AND操做:
粒子的權重是用上式更新的.
在更新粒子的權重以後, 最後的車輛位姿是用更新後的權重估計的. top 3% 的粒子的平均pose是最終的pose估計.
由於粒子濾波使用裏2D圖像匹配, 只有 \(t_x, t_y, r_z\) 能夠用這個方法計算. 全局高度(\(t_z\))是用HDMap的高度信息更新的.
最後的優化處理了roll和pitch.
從點雲得到平面方程會被轉換到車輛座標, 用RANSAC算法.
..
沒啥.