陳德江, 江 灝, 高永彬, 張家豪
(1 上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院, 上海 201620; 2 上海振華重工電氣集團有限公司, 上海 200125)
近年來,輔助駕駛和自動駕駛正日趨普及,而在其中起著關(guān)鍵作用的就是感知模塊的發(fā)展。 常用的傳感器有激光雷達、單目相機、毫米波雷達等,但是單一傳感器帶來的信息量也是匱乏的,比如普通的單目相機得不出物體的深度信息,僅僅使用激光雷達又無法利用物體豐富的視覺信息。 但是通過多傳感器融合[1]不僅可以獲取更豐富的感知信息,還可以通過傳感器互補來降低硬件成本,比如利用激光雷達來做三維目標檢測,需要至少64 線的激光雷達,因為如果雷達線數(shù)太少,則會因為目標點云過于稀疏而導(dǎo)致檢測精度變差,但是如果能夠?qū)⑾鄼C和激光雷達結(jié)合起來,就能在大幅降低成本的同時獲取超過單一傳感器的更高精度。
國內(nèi)外針對激光雷達和相機融合的目標檢測方法已經(jīng)有了一定的進展,大多是基于深度學(xué)習(xí)方法。Chen 等學(xué)者[2]提出的MV3D-Net[2]利用了點云的俯視圖、前視圖和相機的RBG 圖片,通過VGG16[3]做特征提取后融合在一起進行目標檢測。 Ku 等學(xué)者[4]提出的AVOD[4]利用雷達點云的俯視圖和相機的RGB 圖作為輸入,然后利用FPN(Feature Pyramid Network)進行特征提取,同樣獲得了精確的檢測結(jié)果。 Qi 等學(xué)者[5]提出的Frustum-PointNet 先利用RGB 圖像中目標的二維邊界框進行點云預(yù)處理,將對應(yīng)的雷達點云分離出來,然后將這些屬于對應(yīng)目標的點云輸入到PointNet[6]中進行特征提取,從而回歸出三維目標檢測結(jié)果。 但是這些方法都是依賴于64 線的激光雷達,當前64 線的激光雷達價格昂貴,對于一些大型車輛,如輪胎吊大車、重型卡車等,如果想要激光雷達全覆蓋,就需要至少2 ~4 個激光雷達,這將帶來昂貴的安裝成本。
本文考慮到64 線激光雷達的局限性,基于16線激光雷達和相機兩種傳感器,設(shè)計了一種三維目標檢測方法。 首先,將雷達和相機進行空間和時間上的聯(lián)合標定,獲取相互間的剛體變換矩陣,通過剛體變換統(tǒng)一坐標系后再將雷達點云按照相機的內(nèi)參矩陣投影到圖片上,獲取二維像素點和三維雷達點云之間的對應(yīng)關(guān)系。 然后, 將相機圖片送入YOLOv5 算法進行二維目標檢測[7],得出目標的二維像素范圍,利用聯(lián)合標定過的雷達獲取這些二維像素對應(yīng)的三維點云,最后利用這些三維點云算出目標的三維坐標和邊界框。 通過實際場景測試證明了該方法的可行性。
硬件的合理安裝和精準標定是算法有效運行的基礎(chǔ),本文設(shè)計的實驗平臺如圖1 所示。 圖1 中,左側(cè)為16 激光雷達,右側(cè)為球形相機,中間通過鋼架進行固定。 因為雷達內(nèi)包含轉(zhuǎn)子,在雷達運行的過程中會產(chǎn)生較強的晃動,所以必須做好固定措施。為了能夠適應(yīng)室外天氣,采用帶球罩的相機,方便遮風(fēng)擋雨,而且能夠自由調(diào)整方向,但是球形相機畸變較為嚴重,所以需要做好相機的標定工作[8]。 在進行相機標定時,需要采集各個角度的標定板圖片再進行標定,這樣標定出的相機內(nèi)參更精確。

圖1 硬件平臺設(shè)計圖Fig. 1 Hardware platform design diagram
多傳感器融合除了進行空間上的同步,還需要進行時間上的同步。 空間上的同步即多傳感器聯(lián)合標定統(tǒng)一坐標系,時間上的同步是指同步傳感器獲取數(shù)據(jù)的時間戳,保證2 個傳感器是在相同的時間感知到同樣的物體。
激光雷達和相機有著各自的坐標系[9],參見圖1 中的坐標軸。 其中,激光雷達的X軸朝前,Y軸朝左,Z軸朝上。 相機的X軸朝右,Y軸朝下,Z軸朝前,需要通過聯(lián)合標定的方式算出2 個坐標系之間的剛體變換矩陣。 剛體變換的公式為:
其中,R為3×3 的旋轉(zhuǎn)矩陣;t為3×1 的平移向量;Pl為激光雷達下物體的坐標;Pc為相機坐標系下物體的坐標。
本文采用的多傳感器聯(lián)合標定原理是讓2 個傳感器同時感知到相同的三維點,這些物體在不同的傳感器里有各自的坐標,可以通過多組對應(yīng)點構(gòu)成方程組,但是這些點在數(shù)據(jù)采集時不一定是絕對精準的,可能會因為各種原因產(chǎn)生誤差,所以不存在絕對解,而是存在一個近似的最優(yōu)解,讓標定后的傳感器感知誤差最小,誤差表達方式為:
故而可以采用類似求解點云配準的方式利用SVD 解出2 個傳感器之間的剛體變換,其中旋轉(zhuǎn)矩陣R的求解方法為:
其中,A為激光雷達在激光雷達的坐標系中感受到的一組點;B為相機在相機坐標系中感受到的同一組點;centroid為對應(yīng)點群的中心。 求解出R后就可以進一步求出t,求解方式見下式:
求解出旋轉(zhuǎn)矩陣R和平移向量t后,就可以直接將雷達的坐標系直接轉(zhuǎn)換到相機的坐標系,這時雷達掃描出的點云在經(jīng)過變換后將處于相機的坐標系中。
不同種類的傳感器運行頻率也并不相同,相機在25 Hz 左右,激光雷達在20 Hz 左右。 傳感器除了掃描頻率,數(shù)據(jù)傳輸速率也不一樣,所以相同時間發(fā)生的事情從傳感器到達計算機的時間很可能并不一致,數(shù)據(jù)存在時間錯位,如圖2 所示,所以需要給傳感器產(chǎn)生的數(shù)據(jù)打上時間戳,并且采用合理的同步算法進行數(shù)據(jù)同步。

圖2 傳感器數(shù)據(jù)同步Fig. 2 Sensor data synchronization
本文采取的方式是利用ROS 中的Message Filters 進行時間同步。 ROS 是最常用的機器人操作系統(tǒng)之一,將傳感器數(shù)據(jù)抽象成Topic 進行數(shù)據(jù)的發(fā)布和訂閱,并通過消息隊列的方式對數(shù)據(jù)進行緩存。 Message Filters 同時訂閱激光雷達驅(qū)動和相機驅(qū)動發(fā)布的Topic,但只有在兩者時間戳滿足時間差要求時才會觸發(fā)回調(diào)函數(shù)對傳感器數(shù)據(jù)進行處理,而過期或者時間戳相差較大的數(shù)據(jù)則會舍棄掉。 這樣就可以保證雷達和相機是在相同的時間感知到相同的環(huán)境。
本文主要應(yīng)用場景是基于激光雷達和相機兩種傳感器融合起來在大車前進的車道線內(nèi)進行三維目標檢測,將檢測的結(jié)果反饋給大車的控制中心。 通過相機進行車道線檢測和二維目標識別,并通過雷達賦予目標三維信息,從而得到目標的三維坐標和邊界框,對具體算法實現(xiàn)流程,可給出研究論述如下。
本文針對車道線內(nèi)的興趣區(qū)域進行目標檢測,所以先通過相機進行車道線檢測。 當前對于車道線檢測已經(jīng)有了很多有效的方法,但是大多基于深度學(xué)習(xí)的方式,相對復(fù)雜。 而本文場景中的車道線具有一定的規(guī)律,不存在彎曲的部分,所以可以通過霍夫變換算法進行車道線提取[10],算法流程如圖3 所示。
圖3 中,通過相機采集到的RGB 格式的圖片為圖3(a),然后將圖片從RGB 域轉(zhuǎn)到HSV 域得到圖片、即圖3(b),進行轉(zhuǎn)換主要是為了根據(jù)可行駛區(qū)域的顏色過濾出可能是車道線的部分,有助于排除干擾信息。 在本算法中,過濾條件為[H,S,V] 的數(shù)值介于[20,60,30] 和[40,200,255] 之間,閾值設(shè)置范圍相對較廣能夠保證算法在各種光照下的檢測魯棒性。 接下來再通過Gassian 平滑濾波和Candy濾波得到可能是車道線的輪廓圖、見圖3(c),根據(jù)得到的輪廓圖使用霍夫變換算法,對輪廓圖中的直線進行檢測,直到找到所有的直線。 由于找到的直線不一定屬于車道線,需要根據(jù)直線的長短、斜率等信息進行分類。 在這里,先使用K-means 聚類算法將直線分為2 類,一類屬于左側(cè)車道線,一類屬于右側(cè)車道線,最后再根據(jù)左、右側(cè)車道線的斜率特征做進一步過濾。 將兩側(cè)車道線的集合取均值就得到了完整的車道線表達式,處理后的車道線檢測效果見圖3(d)。

圖3 車道線檢測算法流程Fig. 3 Lane detection algorithm flow chart
確定興趣區(qū)域后,再檢測興趣區(qū)域內(nèi)的目標,本文需要精度高、運行速度快的二維目標檢測算法。YOLO 系列是具有高性能的二維目標檢測算法,本文采用最新版本的YOLOv5。 YOLOv5 實現(xiàn)了端到端的目標檢測,輸入圖片即可輸出檢測結(jié)果,檢測精度高、且檢測速度快。 YOLOv5 的算法網(wǎng)絡(luò)結(jié)構(gòu)[11]如圖4 所示。
圖4 中,主要包括骨干網(wǎng)絡(luò)、頸部網(wǎng)絡(luò)和檢測頭。 骨干網(wǎng)絡(luò)通過CSPNet 結(jié)構(gòu)減少GPU 顯存占用,避免重復(fù)的梯度信息,加速模型訓(xùn)練和運行,讓模型更加輕量和高效,其檢測效果如圖5 所示。 除了較高的檢測精度和極快的運行速度,YOLOv5 本身基于COCO[12]數(shù)據(jù)集進行訓(xùn)練,有著豐富的檢測種類和預(yù)訓(xùn)練模型,本文的應(yīng)用場景主要檢測人、汽車和卡車三種目標,這3 類目標現(xiàn)已存在于預(yù)訓(xùn)練模型的檢測范圍中。 針對部分車輛分類不準確的問題,通過采集和定制當前場景下的數(shù)據(jù)集,基于預(yù)訓(xùn)練模型還可以做進一步的優(yōu)化與完善,提升準確率。

圖4 YOLOv5 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig. 4 YOLOv5 network structure diagram

圖5 YOLOv5 檢測效果Fig. 5 YOLOv5 detection effect
激光雷達在掃描時有很大一部分點云出自地面,這部分點云對于本文的應(yīng)用場景屬于無效信息,并且會拖慢算法運行速度,因此需要過濾掉。 常用的地面去除算法是基于RANSAC[13]的平面擬合算法,通過多次嘗試將地面所處的平面擬合出來,再進行去除,但是計算量較大,而且本文應(yīng)用場景中有很多平面高臺,所以并不適合在該場景中應(yīng)用。 本文采用柵格立柱過濾法[14]。 方法中,將點云空間按照柵格劃分,柵格豎起來形成立柱,立柱中的最高點為Hij,最低點為hij,這里的ij為立柱的索引值,如果該立柱滿足布爾表達式:
其中,s為高度閾值,即立柱中的高度差不超過閾值,則該立柱中的點云為地面。 如果超出閾值,則說明該立柱中的點云有較大的起伏,可能屬于路面上的物體。 地面點云去除算法的效果如圖6 所示。

圖6 地面點云去除效果Fig. 6 Ground point cloud removal effect
由圖6 可知,圖6(a)為16 線激光雷達掃描環(huán)境后輸出的全部點云,圖6(b)為算法檢測出的地面部分,將其剝離之后可以得到非地面部分的有效點云,見圖6(c)。
相機在成像的過程中丟失了深度信息[15],所以通過相機進行目標檢測只能獲取二維的結(jié)果,即只能得出目標在圖像中的位置和目標的種類,但是無法知道目標的實際大小和實際的三維坐標。 研究可知,通過聯(lián)合標定的激光雷達可以補足這個缺陷。首先將激光雷達投影到相機成像平面上并保留對應(yīng)關(guān)系,投影算法為:
其中,P為雷達中的三維點,用X,Y,Z表示三維坐標,經(jīng)過相機內(nèi)參K的轉(zhuǎn)換后得到像素坐標u,v、即在圖像中的坐標,這樣就可以由每個雷達反射點找到在圖片中的位置,同時也可以通過像素點得到對應(yīng)雷達反射點的三維空間坐標,即可以獲取二維像素點和三維雷達點云的映射關(guān)系。 通過激光雷達和相機的聯(lián)合標定可以在將雷達點云變換到相機坐標系后,接著再利用相機標定得到的內(nèi)參矩陣K,這樣就具備了將雷達點云投影到相機圖片上的所有條件,投影效果如圖7 所示。

圖7 激光雷達和相機聯(lián)合標定后的投影效果Fig. 7 Projection effect after joint calibration of the lidar and the camera
至此,通過將二維目標檢測階段的結(jié)果作為三維目標檢測階段的輸入,將2D Bounding Box 中的像素點轉(zhuǎn)化成三維的雷達點云,對這部分雷達點云進行3D Bounding Box 求解[16],計算步驟如下:
首先,計算點云的質(zhì)心PC, 質(zhì)心是指物體質(zhì)量的中心,但是點云是沒有質(zhì)量的,所以這里假設(shè)點的質(zhì)量為單位1 即可,得到點云質(zhì)心坐標為(c0,c1,c2),計算公式為:
然后,計算出點云的協(xié)方差,其中P已經(jīng)減去了質(zhì)心P←P-PC,點云歸一化后的協(xié)方差矩陣為:
最后,求解出協(xié)方差矩陣的特征向量(e0,e1,e0×e1), 結(jié)合點云信息和特征向量即可解出3D Bounding Box 的所有信息,求解公式為:
其中,R為Bounding Box 的旋轉(zhuǎn);Pmax和Pmin為點云的極大值和極小值;Dc為對角線的中點;t為Bounding Box 的平移向量;Bounding Box 的寬、高、深度分別為xmax-xmin,ymax-ymin和zmax-zmin。 由此得到了3D Bounding Box 所需的所有信息,實現(xiàn)了二維檢測到三維檢測的升維。
實驗平臺硬件主要由16 線激光雷達和球形相機構(gòu)成,使用的工控機配置為Intel(R) Core(TM)i7-8700 CPU @ 3.20 GHz,RTX2060 GPU,32 G 內(nèi)存。 實驗硬件平臺與安裝位置如圖8 所示。

圖8 硬件平臺與安裝位置Fig. 8 Hardware platform and installation location
實驗內(nèi)容為:將傳感器硬件平臺安裝在大車前方1.5 m 高處,大車本身行駛在車道線內(nèi),當傳感器在車道線內(nèi)前方20 m 內(nèi)檢測到障礙物時,需要及時將信號傳遞給大車的控制中心,控制中心根據(jù)障礙物的種類和距離進行告警和制動。
通過設(shè)置實驗測試場景進行測試,測試目標包括行人、汽車和卡車三個種類,讓3 個種類的目標分布在車道線內(nèi)的不同距離和位置,測試結(jié)果見表1。

表1 實驗檢測精度Tab. 1 Experimental detection accuracy
檢測效果可視化如圖9 所示。 圖9 中,左側(cè)為車道線檢測和二維目標檢測的可視化效果,右側(cè)為雷達點云視角中的三維目標檢測效果。

圖9 目標檢測效果可視化Fig. 9 Visualization of target detection effect
此外,根據(jù)自動化港口碼頭需求,開發(fā)了一套后端系統(tǒng)及UI 界面。 其中,后端系統(tǒng)基于ROS 操作系統(tǒng)開發(fā),將消息通訊抽象為Topic,滿足實時性要求。 UI 界面如圖10 所示,通過相機和雷達的IP 進行控制,當在車道線上檢測到障礙物時進行告警,并且將告警信息記錄在日志中,方便后期查詢。

圖10 三維目標檢測報警系統(tǒng)UIFig. 10 UI of 3D target detection alarm system
本文針對16 線激光雷達輸出點云過于稀疏而無法進行三維目標檢測的問題,提出了一種基于16線激光雷達和相機融合的三維目標檢測方法。 通過聯(lián)合標定從空間上統(tǒng)一了激光雷達和相機的坐標系,并利用ROS 從時間上對齊了激光雷達和相機的數(shù)據(jù)。 接下來,采用相機的三維投影算法在二維像素和三維點云之間建立了映射關(guān)系。 最后,對目標點云進行包圍框的計算,將二維檢測結(jié)果升級至三維。 實驗結(jié)果表明:該方法可以有效檢測車道線內(nèi)的目標,理論上可以滿足大型車輛三維目標檢測的需求。