色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 車端激光和雙目相機的自動標(biāo)定算法

          車端激光和雙目相機的自動標(biāo)定算法

          發(fā)布人:計算機視覺工坊 時間:2021-09-14 來源:工程師 發(fā)布文章

          1.png

          摘要

          在車端配置一個雙目相機再加上一個激光雷達(dá)已經(jīng)成為一種比較常用的配置。但是為了融合相機和激光數(shù)據(jù)我們需要一個復(fù)雜的標(biāo)定過程。本文提供了一種不需要人干預(yù)的自動化的雙目和激光雷達(dá)的外參估計方法。本文的標(biāo)定方法是克服在自動駕駛車輛中的傳感器的常見的限制,如低分辨率和特殊的傳感器的位置(如你在車端在沒有升降臺的情況下不能讓車上下動,roll,pitch旋轉(zhuǎn))。為了證明算法的可行性,作者分別在仿真和真實環(huán)境中做的實驗都表現(xiàn)出了比較好的結(jié)果。

          代碼地址:在公眾號「計算機視覺工坊」,后臺回復(fù)「車端激光」,即可直接下載。

          一、介紹

          高級駕駛輔助系統(tǒng)(ASAS, Advanced Driver Assistance Systems)或者是自動駕駛的系統(tǒng)需要準(zhǔn)確的環(huán)境感知來正確的進(jìn)行路徑規(guī)劃,在可能影響駕駛方法的情況下(例如光照的變化),這些系統(tǒng)必需要有一定程度的魯棒性。因此車端配置的傳感器需要可以在不同的情況下互補。視覺系統(tǒng)可以提供場景的外觀信息,所以在車端系統(tǒng)中很常見。雙目視覺能提供一定范圍內(nèi)的場景的深度信息,所以作為一種經(jīng)濟高效的傳感器,可以提供車周圍一定范圍內(nèi)稠密的點云信息。而激光雷達(dá)的特點是測量精度高(測量飛行時間,根據(jù)點的線束和角度信息投影到空間坐標(biāo)系),而且可以提供360度范圍內(nèi)的點云信息。(但是相機的深度信息畢竟不準(zhǔn)確,但是分辨率高;激光的測量雖然準(zhǔn),但是分辨率很低,特別是z軸上,造成純激光的系統(tǒng)都會有很大的z軸漂移)。

          由于激光和視覺都有他們的缺陷和優(yōu)勢,所以兩個傳感器可以融合起來。但是我們?nèi)诤系臅r候,一個精準(zhǔn)的外參就很重要了。(比如我們要利用得到像素點的深度,需要利用外參把單幀或者多幀激光點云利用外參投影到圖像上獲得像素點的深度,如果外參不準(zhǔn),我們深度恢復(fù)的結(jié)果也很難準(zhǔn)。還有一些語義信息的投影諸如此類的融合都需要一個比較準(zhǔn)的外參)。

          當(dāng)前外參估計的方法可能需要復(fù)雜的過程或者缺乏泛化能力,標(biāo)定的精度完全取決于標(biāo)定的環(huán)境或者初值的準(zhǔn)確程度。本文提出了一種針對車端雙目相機和激光雷達(dá)的標(biāo)定的方法,和現(xiàn)有的方法不同,本文沒有對系統(tǒng)提出任何強有力的假設(shè),可以標(biāo)定16線這種低分辨率的激光雷達(dá),也可以允許傳感器之間的位姿很不同。本文的方法只是假設(shè)兩個融合的數(shù)據(jù)沒有很大的時間間隔,這是很容易做到的(激光一般是10HZ,相機是30HZ)。

          二、相關(guān)工作

          在過去幾年,關(guān)于不同的傳感器的外參標(biāo)定的工作很多,主要是自動駕駛和多傳感器融合的機器人。這其中最多的研究就是關(guān)于相機和激光雷達(dá)的,由于移動平臺的固有限制,比如傳感器智能采集到一個或者四個面(東西南北,上下就看不到)。標(biāo)定的過程一般是在傳感器運行正常的人工布置的系統(tǒng)中執(zhí)行的。傳統(tǒng)的方法一般會需要人工標(biāo)注:https://github.com/MegviiRobot/CamLaserCalibraTool(這是2007年IROS的方法,Extrinsic Self Calibration of a Camera and a 3D Laser Range Finder from Natural Scenes),然而由于機器人平臺經(jīng)常出現(xiàn)標(biāo)定的錯誤,所以這個過程自動進(jìn)行最好。

          標(biāo)定的過程是需要找圖像平面和激光點云在不同視角下的對應(yīng)點,所以一般都會用一些特殊的標(biāo)定板作為目標(biāo),例如三角板,多邊形或者球體?,F(xiàn)有的方法中基于物體形狀的多樣性來找到他們在不同傳感器的位置,但是盡管如此,場景中的平面很普遍,因為可以利用深度信息和提供的特定的興中基于幾何的計算很容易檢測出來。另外,Scott等人基于運動跟蹤的方法也解決了沒有共視關(guān)系的傳感器之間的標(biāo)定的問題(Exploiting Known Unknowns: Scene Induced Cross-Calibration of Lidar-Stereo Systems, 2015年IROS)。

          近些年來稠密的3D傳感器發(fā)展很快(例如掃描儀,非重復(fù)掃描特性的固態(tài)激光雷達(dá))。所以有一些研究這種稠密3D傳感器的標(biāo)定的工作。Automatic Cameraand Range Sensor Calibration using a single Shot(2012. ICRA)把幾塊標(biāo)定板當(dāng)做目標(biāo)位置,提出了one-shot的方法。Calibration of RGB Camera With Velodyne LiDAR(2014)提出了單一視角下基于標(biāo)定區(qū)域圓形特征的標(biāo)定方法。

          第二種方法是不急于人工設(shè)計的標(biāo)定目標(biāo),而是利用環(huán)境中的特征。Line-based Extrinsic Calibration of Range and Image Sensors(2013,ICRA)這篇論文利用場景中的線段特征來計算傳感器的外參。這種方法適應(yīng)于室內(nèi)有大量線特征的場景。在室外的道路場景,利用地面和一些障礙物可以相機和激光的外參。

          另外,如何評價校準(zhǔn)方法的準(zhǔn)確程度也是一個沒有被解決的問題。因為在實際標(biāo)定的時候我們很難得到傳感器之間的外參的真值。Automatic Online Calibration of Cameras and Lasers中提出了一種方法,基于場景的不連續(xù)性來計算目標(biāo)函數(shù)的變化得到外參的誤差。

          三、標(biāo)定算法

          本文提出的標(biāo)定方法標(biāo)定的是雙目相機之間的外參和相機到激光雷達(dá)的外參。如下圖所示:

          2.png

          相機和激光雷達(dá)之間的剛體變換可以表示為:

          3.png

          其中前三個表示兩個坐標(biāo)系之間的平移,后三個表示的就是兩個坐標(biāo)系之間的旋轉(zhuǎn)(RPY)。有了這個外參之后我們可以很容易得到相機到激光的外參的變換矩陣形式,利用這個矩陣我們可以很容易把相機系下的點轉(zhuǎn)換到激光坐標(biāo)系下。為了得到外參,作者采集了很多雙目圖像(時間同步后的)和激光幀的掃描,系統(tǒng)中假設(shè)相機的內(nèi)參是已知的,圖片是經(jīng)過畸變矯正的。

          本文只用了一個單個的校準(zhǔn)目標(biāo),而且他只能在特定的視角下才可以觀測到。這樣可以避免在標(biāo)定過程中的需要處理多個標(biāo)定目標(biāo)或者場景的變化。作者利用Calibration of RGB Camera With Velodyne LiDAR論文中的思路,在一個平面上挖了四個對稱的圓孔,這些孔作為相機和激光雷達(dá)可見的明顯特征。因此在我們放置激光和視覺的時候兩個傳感器的視野內(nèi)要有一定的重疊,以便圓形孔與至少兩個激光雷達(dá)光束相交,并且從相機完全可見。

          4.png

          整個系統(tǒng)除了上述假設(shè)外沒有任何其他假設(shè),沒有對兩個傳感器的旋轉(zhuǎn)和平移有什么要求。標(biāo)定的過程分為兩個階段:兩個點云(圖像三角化出來的和激光掃描的)的參考點分割;利用點云對齊得到外參。

          5.png

          A. 數(shù)據(jù)表示

          本文提出的方法是基于要標(biāo)定的傳感器的,利用3D激光雷達(dá)我們可以表示點云為(x,y,z)的集合。雙目相機得到的信息主要利用兩個:灰度圖和深度信息。其中深度信息是利用雙目匹配的算法,可以得到稠密的3D點云信息。在標(biāo)定過程中利用兩個點云的相似性來計算兩個傳感器之間的外參。激光的點云集合表示為P^l_0,相機的點云表示為 P^c_0。對于雙目的匹配,本文利用的是SGM算法,這種方法可以得到比較準(zhǔn)的深度估計的結(jié)果。其中邊界定位的問題可以很好的利用反射信息解決。利用有一定的紋理的標(biāo)定板來解決雙目匹配的問題。利用濾波器和距離信息可以很好的處理點云,保證處理后的點云來自兩個傳感器共視的部分來更好的做標(biāo)定。

          B. 目標(biāo)分割

          標(biāo)定算法的第一步是提取標(biāo)定板上不連續(xù)的點。所以針對來自激光雷達(dá)和雙目相機的點云執(zhí)行幾個連續(xù)分割的過程。分割的第一步是找到點云的表示集合形狀的點集。也即是找到標(biāo)定板上點。利用標(biāo)定板是一個平面的優(yōu)點,我們直接在原始點云中執(zhí)行平面檢測的算法。有一些嚴(yán)格的約束來保證我們找到的平面確實是標(biāo)定板的平面。第一是在執(zhí)行RANSAC時δ plane的選取是很嚴(yán)格的;第二是檢測出來的平面需要和傳感器坐標(biāo)系中的Z軸平行(角度差在一個很小的范圍內(nèi))。

          當(dāng)我們找到了標(biāo)定板的平面后,點和平面的距離大于閾值將被剔除,這樣我們就得到了平面上的點云。如圖3a和圖4a。然后是利用濾波的方法去除不是不連續(xù)點的點云,由于兩個傳感器采集到的點云的密度不同,這個過程是不同的。首先對于激光點云,本文主要參考Automatic Online Calibration of Cameras and Lasers中的方法來找到深度不連續(xù)的點。對于每一個在標(biāo)定板上的點,通過計算他和相鄰點的深度的差值來得到一個表示:

          6.png

          這表示第i個點和他左邊和右邊點深度差值的最大值,利用計算得到的值我們可以剔除所有連續(xù)的點,如圖3b所示。而對于雙目相機的點云,我們保留投影到強度圖像邊緣的點,然后基于Sobel濾波器在雙目的左目進(jìn)行濾波,在計算得到的Sobel圖像中對應(yīng)值比較低的點被剔除,如圖4b所示。

          C. 圓檢測

          最后一個步驟是從標(biāo)定板上找到三個圓在的位置,圓的圓心會用來當(dāng)做關(guān)鍵點做兩幀點云的對齊工作。為了提升圓檢測的準(zhǔn)確度,本文進(jìn)行了一個濾波的操作來去除不屬于圓的點。根據(jù)不連續(xù)性已經(jīng)把標(biāo)定板上的點基本濾干凈了,但是標(biāo)定板邊緣的點還存在。對于激光點云,只保存線上有圓的那些線束的點,然后在濾除環(huán)中的一些外點。對于雙目相機的點云,由于標(biāo)定板的邊界被很密集的表示,所以我們可以基于線段來消除。利用采樣一致性檢測找到線段,并根據(jù)線段的方向和標(biāo)定板的尺寸選擇正確的是邊緣的線段,以防從圓中刪除有用的信息。實驗表明了作者的邊界濾波的方法很好,能夠有效的濾除邊緣線段。經(jīng)過濾除邊緣后的表示如圖3c和4c表示。

          現(xiàn)在相機和激光雷達(dá)的基于點表示的標(biāo)定板上的圓我們已經(jīng)可以得到了。最后在相機和激光雷達(dá)掃到的標(biāo)定板的2D平面上進(jìn)行圓的檢測。把第二階段得到的點云投影到平面上,然后基于平面方程的約束找到在平面上的點。然后在XY平面上根據(jù)已知的圓的半徑基于抽樣一致性檢測來檢測圓。為了避免檢測到錯誤的結(jié)果。作者把標(biāo)定的傳感器到平面的距離也做為了一個約束。最后把檢測到的中心投影到3D的空間中。我們就可以得到圖3d和4d。這里需要注意的是由于圓的分割是在二維空間進(jìn)行的,所以這里的傳感器需要分辨率稍微高一點(論文中說16線的就可以),平面上的圓可以由三個點確定,所以需要兩個雷達(dá)的線穿過每個圓(這樣就最少有四個點在圓上)。

          如果標(biāo)定板在兩個傳感器的表示足夠準(zhǔn)確,我們就可以基于檢測得到的四個圓心進(jìn)行配準(zhǔn)。同時為了提升對過程中噪聲的魯棒性,圓心在n幀的窗口上累積。然后利用聚類算法在點云配準(zhǔn)階段找到點云的質(zhì)心。所以本文的方法要求在標(biāo)定的整個過程標(biāo)定系統(tǒng)都保持靜止。本文基于歐幾里得距離的聚類策略設(shè)定一定的閾值來進(jìn)行聚類來剔除異常值對系統(tǒng)的影響。根據(jù)窗口長度的約束,可以最每個點集中點的最大值和最小值進(jìn)行嚴(yán)格的約束。

          D.匹配

          最后一步的匹配通過最小化聚類的圓的中心的參考點的距離來得到相機和激光雷達(dá)的外參。匹配的過程主要分為兩個部分:在假設(shè)沒有旋轉(zhuǎn)的情況下求最優(yōu)的變換矩陣,這其實就是在計算兩個點云之間的平移,可以通過一個三維的向量來表示三個軸的平移。通過四個參考點得到12個方程基于最小二乘的可以求出三個軸上的平移。

          7.png

          激光系下和相機系下每對點可以構(gòu)建三個方程,點通過他在標(biāo)定板的不同位置來命名:top-left (tl), top-right (tr), bottom-left, (bl) and bottom-right (br)。最后基于QR分解找到方程的最小二乘解。最后是匹配的過程,這個過程估計平移和旋轉(zhuǎn)(xyz rpy)。作者直接基于A method for Registration of 3-D Shapes的方法來最小化距離點之間的距離。

          實驗

          作者分別在仿真環(huán)境和真實環(huán)境中做了精度評價的實驗。作者基于Gazebo環(huán)境中配置了九種不同的傳感器設(shè)置,具體的擺放如下表所示:

          8.png

          仿真中用的傳感器是一個雙目相機+16線的激光雷達(dá),評估出來的精度:

          9.png10.png

          作者也在實際場景中了實驗,由于無法采集真值,所以智能通過投影的效果來判斷標(biāo)定的效果:

          11.png

          仿真環(huán)境搭建:

          下載仿真環(huán)境的代碼:https://github.com/beltransen/velo2cam_gazebo,如果你用的是ubuntu18.04則需要更新/velo2cam_gazebo-master/gazebo_plugins/velodyne_gazebo_plugin中的內(nèi)容,利用https://bitbucket.org/DataspeedInc/velodyne_simulator/src/master/中對應(yīng)文件夾中的文件替換。

          把/velo2cam_gazebo-master/gazebo_models文件夾中文件移到.gazebo/models

          直接利用launch文件進(jìn)行仿真,例如:roslaunch velo2cam_gazebo mono_hdl64_p1_real.launch ,這里正常情況下會報一大推找不到模型的錯誤。

          我們需要在https://github.com/osrf/gazebo_models找對應(yīng)的model下載,但是好像缺的太多了,我就很暴力的把他們都下載了下來,大家可以在百度云下載,然后把他們放到.gazebo/models,再運行就好了(這里在launch文件中g(shù)ui是false,我們需要把他改為true才會自動打開gazebo):鏈接: https://pan.baidu.com/s/1J0ftVrmewjYeLdCQZ4wqpg 提取碼: nfgx 。

          運行結(jié)果如下:

          12.png13.png

          我們可以根據(jù)算法得到的結(jié)果和真值比較判斷算法的精度。

          [1] Guindel C , J Beltrán, D Martín, et al. Automatic Extrinsic Calibration for Lidar-Stereo Vehicle Sensor Setups[J]. IEEE, 2017.

          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: AI

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉