咱們說一個LiDar和stereo cameras沒有共視區域的外參標定.app
爲了解決外參標定問題,咱們的方案利用了road markings做爲嘈雜的urban環境下靜態,魯邦的特徵.框架
這個方案使用了road markings來選擇有信息量的圖像來估計外參. 爲了完成穩定優化, 不少cost functions被定義了, 包括:less
因此一個smooth cost curve被造成來避免局部最優.dom
另外咱們也測試了優化收斂性和標定的重複性.ide
外參對於多傳感器很重要.學習
[1] 利用了LiDAR的深度信息來計算兩張圖的光度偏差.測試
[2] 用利用視覺里程計和LiDAR里程計的融合來作一個快速且low drife的里程計.優化
[3] 用conditional random field framework, 利用LiDAR和視覺的信息來估計路面區域.spa
最經常使用的LiDAR和相機的 外參標定用了checkerboard. 也有用circular hole的.3d
這些方法都依賴不一樣sensor data的關聯. 特別由於LiDAR觀測是Non-continuous的(camera也non-continuous啊), 兩種modalities以前找準確關聯並不直接. 並且在同一時刻沒有共視的狀況下是沒有辦法標定的.
爲了general calibration, 有很多用周圍環境來作標定而不用特性目標的方案. [9 - 13] 可是這些方法都須要overlapping FOV.
爲了解決沒有共視的問題, 局部3D點雲累計來保證共視是一個思路.
也有用線的[17, 18, 19], 和手眼標定一個思路.
咱們的sensor系統有4個LiDAR和一個立體相機.
在heterogeneous (混雜的)的傳感器來創建數據關聯.
[12]手動在LiDAR intensity image和圖像在計算外參. 這個intensity image是用融合LiDAR scan和用2D lidar的里程計來融合出來的. 可是這個手動選擇可太煩了.
[9] 經過引入Normalized Mutual information(NMI)來得到最佳關聯. 這個工做經過partical swarm optimization方法(粒子濾波?)來找到NMI最大值來找最佳關聯.
[10] 用互信息Mutual Information metric來估計外參. 若是用單個scan會遇到一些局部最優. 爲了解決這個問題, 這個方法用了多個scan來找到全局最優來最大化MI值.
最近還有更多工做用深度學習的來作外參標定. [11]用CNN框架來估計.
以前說的都須要共視, 也有不須要的. [16] 經過push-broom(推式掃)來標2Dlidar和相機. 外參標定是用edge images和Lidar intensity image來作的, 經過用里程計的結果, 投影3D點.
[14] leveraged NID來估計多相機和2d lidar的最佳外參.
[15] 加入了數據選擇模塊, 經過比較最佳參數附近的NID的值來減小局部最優.
咱們的方案使用了road marking信息來作外參標定, 且不須要共視關係. 爲了減小局部最優勢, 用了多圖, 並且圖會用vanishing point來定義cost. 在優化中, 咱們用圖像和lidar數據定義了多個costs, 包括:
咱們首先用odometry (輪速仍是里程計)和lidar數據生成3d點雲, 而後經過比較stereo圖和lidar intensity image over generated local pointcloud map來標定.
局部建圖部分, 咱們用輪速計, 3軸Fiber Optic Gyro (FOG)和IMU來生成高精度的位姿.
由於沒有共視, **因此咱們首先要累計lidar數據來生成局部點雲圖. 用輪速, FOG和IMu生成的準確的相對位姿來. ** 咱們用[20]裏的方法來計算lidar和lidar-to-vehicle的外參.
由於局部點雲的精度都是依靠車輛的相對位姿的, 這裏咱們累計了80m的局部地圖來最小化可能的來及偏差 (哪裏最小化了?..).
有兩步來創建局部地圖:
1. 在圖像選擇階段, 咱們用stereo dispairty map(雙目的視差圖)來提取road regions。
2. 經過提取線指向vanishing point來尋找有不少road markings的圖來作優化。
3. 局部最優的問題能夠用多圖估計外參的問題來緩解
有不少roadmark的圖會被標記。
[21]從一個disparity map \(D(p_{uv})\)來計算v-disparity。 每一行的disparity的histogram按照v-disparity image來畫。道路區域是在v-disparity圖上擬合一個線\(\pi\)(用RANSAC)弄的。由於v-dispairty image的每一個像素值表示的是disparity map的histogram,在v方向上擬合。結果如Fig.5(c)。
盡頭是從road region估計的。經過線\(\pi\)能夠得到天際線\(L_{horizon}\),它是離盡頭很近的,但不必定準確。這裏用了一個voting process. 咱們用LSD(Line Segment Detector)來檢測線段,每一個線\(l_i={s_i, e_i,c_i}\)。分別表示開始,結束和中間點。
平面\(M={n_x, n_y, n_z, d}\)是經過disparity map \(D(p_{uv})\)。焦距\(f\)和基線\(B\)會用到。而後\(M\)會被一個點雲的RANSAC平面擬合。這個平面會在優化階計算平面擬合cost用。
咱們用【23】的區域生長分割方法來選取global pointcloud裏的road pointcloud。對於外參標定,這個文章用了下述三個costs。
這個cost是來衡量RGB和LiDAR intensity image的不一樣。一個相機edge image \(\widehat{E_{S_L}}\)是從road masked image \(\widehat{I_{S_L}}\)提取(canny)的。Lidar edge圖\(\widehat{E_L}\)是從Lidar intensity image \(\widehat{I_L}\) 上提取(canny)的。
RGB推算的edge圖轉換爲distance transform image \(\widehat{G_{S_L}}\)。
cost是:\(f_{\text {edge}}(\widehat{E_{L}}, \widehat{G_{S_{L}}})=\sum \widehat{E_{L}}\left(p_{u v}\right) \widehat{G_{S_{L}}}\left(p_{u v}\right)\)
\(f_{N I D}(\widehat{I_{S_{L}}}, \widehat{I_{L}})=2-\frac{H(\widehat{I_{S_{L}}})+H(\widehat{I_{L}})}{H(\widehat{I_{S_{L}}}, \widehat{I_{L}})}\)
\(H(X)=-\sum_{x \in X} P(x) \log P(x)\)
\(H(X, Y)=-\sum_{x \in X \atop y \in Y} P(x, y) \log (P(x, y))\)
這裏\(H(X)\)和\(H(X,Y)\)是single entropy和交叉熵。計算的結果在0/1之間。更低的NID表示兩個數據分佈更像。
\(f_{\text {plane}}\left(^{S_{L}} P_{L}, M\right)=\)
\(\sum_{i=1}^{N}\left(n_{x}\left(^{S_{L}} P_{L}\right)_{x}^{i}+n_{y}\left(^{S_{L}} P_{L}\right)_{y}^{i}+n_{z}\left(^{S_{L}} P_{L}\right)_{z}^{i}+d\right)\)
\(f_{\text {sum}}=k_{1} f_{\text {edge}}+k_{2} f_{N I D}+k_{3} f_{\text {plane}}\)
這裏\(k_1 = 2.0, k_2 = 500.0, k_3 = 0.1\).
標定的精度是0.02m和大概0.086°,且不須要人操做。
在這個論文中,咱們假設odometry生成的點雲是局部準確的。可是也有說由於車輛的加速減速致使distortion。(啥意思?不是有IMU輪速啥的麼,你加速減速估計不了麼?)