蘭建平,郭文韜,楊亞會,張友兵,葉子恒,董馮雷
(湖北汽車工業學院 汽車工程師學院,湖北 十堰 442002)
近年來,隨著計算機軟硬件技術的迅速發展,各種人工智能算法加速落地應用,在汽車行業,智能化和網聯化成為汽車發展的新方向[1]。相對于傳統汽車,智能網聯汽車增加了環境感知、路徑規劃、決策控制等軟硬件系統,能夠在無人或少人干預的情況下實現自主駕駛。為推動智能網聯汽車發展,培養智能網聯汽車相關產業人才,中國汽車工程學會于2017年創辦了第一屆無人駕駛方程式大賽。無人駕駛方程式賽車以電動方程式賽車為基礎,通過對賽車進行線控改裝[2],并配備各類智能傳感器及人工智能算法來實現賽車的無人駕駛功能,其中環境感知系統是無人駕駛賽車能否實現的第一步,獲取準確的周圍環境信息是無人駕駛的保障[3]。多傳感器融合環境感知已成為眾多學者研究的熱點問題。
國內外學者對無人駕駛的目標檢測算法進行了大量研究,單一傳感器由于自身局限性,難以涵蓋所有場景和需求,因此,在實際應用中,往往采取多傳感器融合來解決這些問題。Chen等[4]提出一種基于多視角融合的三維目標檢測算法,通過將傳感器獲取到的不同類型數據進行融合,實現對車輛的精準定位、跟蹤和預測;Ku等[5]提出一種基于激光雷達和攝像頭等不同類型傳感器的目標檢測算法,通過神經網絡模型實現對車輛周圍環境中物體的準確識別,但資源占用較大,難以保證實時性;王華東等[6]在融合過程中,使用傳統算法進行錐桶顏色識別,但受光線影響較大,需要不斷調節相機的曝光時間,不利于多場景下的部署;Huang等[7]提出的基于原始點云與圖像進行融合的目標檢測算法,在圖像方面取得了不錯的效果,但仍然存在一些限制,在非高斯白噪聲和捕獲復雜背景情況下可能會影響結果準確率;Dhall等[8]提出利用關鍵點回歸算法和取交集融合算法,獲取錐桶的顏色和位置,但結果的可靠性偏低,需要進一步提高。
FSAC賽車感知系統的目的是獲得錐桶的準確位置和顏色,從而確定賽道邊界,為之后的規劃決策提供準確的邊界信息。通過對FSAC感知融合算法的研究,利用激光雷達和相機設計并實現錐桶目標檢測算法,以解決復雜賽場環境中的錐桶檢測問題。
FSAC賽道障礙物均為錐桶,針對該目標對象設計了基于激光雷達的錐桶檢測算法,其流程如圖1所示。

圖1 激光雷達錐桶檢測算法流程框圖
根據八字繞環、直線加速、高速循跡賽道和激光雷達在賽車上的安裝位置,確定激光雷達的掃描范圍,以激光雷達中心作為坐標系原點,對3個掃描方向進行限制,獲得對應賽道的感興趣區域(region of interest,ROI),保留有效激光點云,減少點云數量,從而提升后續檢測效率。
根據特定場景設定點云的ROI,去除由于設備精度或環境因素造成的噪聲點或離群點,以降低點云的數據量[9],針對不同賽道將ROI劃分為3個集合區域,具體設置為:

Z∈[εz-,εz+]}
(1)
式中:i∈[0,1,2],Fi為高速循跡賽道截取第i個感興趣區域內的點云數據集合;δi∈[10i,10(i+1)]為ROI;I為輸入點云數據集合,(X,Y,Z)∈I,最終確定各個賽道的ROI如表1所示。

表1 ROI范圍 m
獲取ROI后,對于賽道錐桶目標檢測來說,數據量還很龐大,后續處理將會消耗大量的算力資源,因此還需要對點云數據進行濾波處理。
采用體素濾波對點云進行降采樣。體素濾波又稱為體素柵格法,是一種常用的降采樣方法,其優點是計算效率高、采樣點均勻。該方法首先按照預先設定的3D體素網格的大小對整個點云建立軸向包圍盒,計算每個3D體素網格的重心并作為該體素網格的采樣值,因此濾波前后的點云密度和點云數量由設置的3D體素網格大小決定。局部體素網格如圖2所示。

圖2 局部體素網格示意圖
將各個方向的3D體素網格尺寸設置為l,以此計算網格與激光點的對應關系,設點云中某點坐標為(x,y,z),由式(2)得出網格編碼(a,b,c)。

(2)
設置激光點云總數為A,進而由式(3)求得各個網格的中心坐標(xcenter,ycenter,zcenter),對該幀所有點云進行計算,從而獲取每個網格與激光點云每個點的對應關系,完成體素濾波。

(3)
為進一步減少激光點云數量,需要剔除地面點云數據,地面點云的分布可定義為平面模型,采用隨機采樣一致性(random sample consensus,RANSAC)算法擬合平面模型[10]。
從體素濾波輸出的點云中選取3個點,通過選取的點繪制一個平面,設定一個誤差允許值,記錄該范圍內的所有點云數目,并重復該步驟。
設迭代次數為k,選取內點數目為n,由式(4)計算屬于內群點的概率為α。
(4)
由于并不確定α是多少,n個點中含內群點的概率為αn,其中n個點中含內群點中至少一個不是內群點的概率為1-αn,進行k次迭代之后,不含離散點的概率為(1-αn)k,擬合成功后的概率為p,由式(5)計算可得。
p=1-(1-αn)k
(5)
通過k次迭代后,獲取包含點最多的平面,完成平面擬合,獲取地面剔除后的點云數據。
在經過濾波及地面分割算法后,基本只保留了錐桶障礙物信息,但由于此類點云仍存在非錐桶點云數據,會導致誤檢問題的出現。由于錐桶尺寸固定,可以采用一種基于條件歐式聚類的算法,通過設定閾值進行條件歐式聚類,同時去除非錐桶點云數據。
求解空間中2點的歐氏距離dAB,設空間中點A為(xA,yA,zA)和點B為(xA,yA,zA),求解過程如式(6)所示。
(6)
歐式聚類將某一閾值內的點云定義為一個類別,通過迭代計算,確定在檢測范圍內沒有該類別的點云。歐式聚類算法只關注距離問題,從而導致忽略障礙物的幾何特征。為更加準確地獲取錐桶障礙物的點云簇,在歐式聚類算法的基礎上,設每個點云簇D在各個坐標軸中最大值和最小值的差值分別為Xd,Yd和Zd,從而判斷結果是否符合錐桶目標物的大小。由于激光雷達掃描到的錐桶方向并不一定是正前方,對X、Y軸的差值閾值進行放大以滿足泛化能力,取錐桶底面對角線長度作為X軸、Y軸的閾值,點云簇的集合如式(7)所示。
(7)
式中:Di為第i個點云簇集合;D為最終保留的錐桶有效點云集合;d為錐桶底部對角線的長度;h為錐桶的高度,考慮泛化性,閾值范圍可進行一定的放大處理。經過條件歐式距離算法處理之后,獲取錐桶點云數據。
各階段激光雷達錐桶檢測算法處理效果如圖3所示。可以看出,在對ROI進行體素濾波之后,剔除部分無效點云數據,再經過RANSAC算法處理之后,剔除地面點云數據,此時仍存在一些非錐桶數據,最后經過條件歐式聚類之后,獲得純凈的錐桶檢測結果。

圖3 點云數據處理過程示意圖
YOLO算法[11]為典型的單階段目標檢測算法,該算法可以兼顧檢測速度和準確性,廣泛應用于實時檢測項目中。YOLOv7在COCO(common objects in context) 數據集中,檢測速度和精度均優于之前版本[12]。由于無人駕駛賽車對實時性和準確性的要求高,可采用YOLOv7作為賽車錐桶障礙物檢測算法。
YOLOv7基于相似神經網絡構建,采用了Darknet作為基礎網絡架構。Darknet是一個輕量級神經網絡,具有較少的參數和計算量,適合進行實時目標檢測任務。該算法通過將待檢測圖像劃分為S×S的網格[13],在每個邊界值預測目標類別的概率,即該邊界框內存在目標物體的條件概率。將目標對象類別概率和置信度相乘得到該狀態下的類別概率,獲得分類結果的置信度值。YOLOv7算法[14]檢測原理如圖4所示。
錐桶圖像數據集采用各參賽高校聯合制作的FSAC-COCO數據集,從中選取包含各個時段(早、中、晚)、天氣(晴天、雨天、多云)和光線(順光、逆光)的數據,提高目標檢測網絡模型在推理時的泛化能力,盡可能保證各類別(紅、黃、藍)錐桶標注數量處于平衡狀態,以避免目標檢測網絡模型過擬合和樣本不均衡等情況。最終選取8 000張圖像作為有效數據集,使用5 600張圖像(整體數據集的70%)作為訓練數據集,1 600張圖像(整體數據集的20%)作為驗證數據集,800張圖像(整體數據集的10%)作為測試數據集,部分標注情況如圖5所示。

圖5 部分FSAC-COCO數據集標注情況
采取YOLOv7算法對選取的數據集進行訓練測試,優化器使用隨機梯度下降法,訓練過程中參數設置如下:初始學習率為0.01,批量大小(batch size)為8,訓練回合數(Epoch)為300。模型訓練過程中,損失函數變化曲線如圖6所示,訓練過程前25輪下降最快,在255次迭代訓練之后,損失曲線下降趨于平緩,最終完成收斂,平均檢測精度達到97.8%。

圖6 損失函數變化曲線
訓練完成后,加載所獲取的權重文件,對獲取的圖像進行檢測,在不同場景中,檢測結果如圖7所示,并通過ROS發布錐桶檢測框在圖像中的位置和顏色信息,供融合算法使用。

圖7 不同場景錐桶檢測結果
在融合算法模塊,將激光雷達和相機進行時空對齊,使用激光雷達點云檢測模塊對點云數據進行處理,獲得障礙物的空間位置,利用相機目標檢測算法對圖像信息檢測,并獲得障礙物的顏色信息,將兩者的檢測結果進行目標匹配[15],最終獲得匹配完成后障礙物的準確空間位置和顏色信息,激光雷達與相機融合匹配流程如圖8所示。

圖8 融合信息匹配流程框圖
時間和空間對齊是傳感器數據融合中的關鍵部分,為了確保后續融合模塊接收到的圖像、點云在數據生成的時間上盡可能相近,需要使各個傳感器數據時間戳對齊。同時,由于不同傳感器在賽車上安裝位置不同,即各自坐標系不同,因此也需要進行空間對齊,將不同傳感器的同一目標在同一坐標系下進行融合匹配[16]。
3.1.1時間對齊
由于激光雷達和相機產生時間戳格式有所不同,需要找到一個全局基準時間戳,將激光雷達和相機數據生成的局部時間戳轉換為全局時間戳[17],最終對不同傳感器的全局時間戳進行時間對齊。
采用機器人操作系統(robot operating system,ROS)自帶的時間戳作為全局基準時間戳,當一幀圖像和激光點云數據產生時,對應ROS驅動節點則會為其打上ROS全局基準時間戳,方便后續時間對齊。
激光雷達默認設置為600 r/min,即10 Hz的數據采集頻率,而使用的相機擁有40 Hz的數據采集頻率,因此選取較低頻率的激光雷達點云時間作為基準。
激光點云和圖像檢測結果的時間同步流程如圖9所示。

圖9 點云和圖像檢測結果時間同步流程框圖
以激光點云錐桶檢測結果為時間同步模塊觸發信號,當圖像錐桶檢測結果加入圖像目標隊列,且點云錐桶檢測結果到來時,直接進行時間戳同步。再以激光點云錐桶檢測結果所對應ROS時間戳作為基準,利用最近鄰匹配算法匹配最近的時間戳,同時判斷時間誤差是否小于誤差閾值,滿足約束條件則將檢測結果傳入融合匹配模塊。
3.1.2空間對齊
激光雷達與相機聯合標定通常使用基于目標物的標定策略,利用激光雷達與相機共同采集同一目標物的特征作為約束條件,以匹配特征并求解兩者坐標系的外參矩陣[18]。通過外參矩陣與相機內參矩陣可將激光雷達坐標系(Xl,Yl,Zl)轉換到相機坐標系(Xc,Yc,Zc)與像素坐標系(u,v),具體映射關系如式(8)和式(9)所示:
(8)
(9)
式中:(u,v)為激光雷達坐標點在像素坐標系下的坐標;s為縮放因子,通常設為1/Zc;fx、fy為相機的焦距;R、T分別為激光雷達到相機的旋轉矩陣和平移矩陣;dx、dy為每個像素在x和y方向的物理尺寸,坐標位置轉化過程如圖10所示。

圖10 坐標位置轉化過程
采用棋盤格標定板作為激光雷達與相機的共視目標物如圖11所示,采用點到平面方法進行標定,標定過程為:

圖11 激光雷達與相機外參標定示意圖
1) 設置初始旋轉、平移矩陣;
2) 在相機坐標系中找到標定板平面并計算出平面法向量nc和平面距相機坐標系原點的距離d;
3) 在激光雷達坐標系中找到標定板平面點Pl,保存有效的nc、d、Pl,并調整標定板的不同位姿;
4)滿足式(10)的約束條件,優化R、T;
nc(RPl+T)+d=0
(10)
5) 重復步驟2)—步驟4)直至滿足標定要求。
激光雷達與相機聯合標定完成之后,對標定結果進行驗證,圖12為原始點云投影至像素坐標系的效果圖,可以看出,激光點云基本與圖像中的錐桶重合對應。

圖12 激光點云與圖像錐桶匹配效果圖
激光雷達和相機融合算法在點云與圖像檢測結果的基礎上,采用目標級融合方案對點云錐桶檢測結果與圖像錐桶檢測結果進行融合,最終獲得錐桶位置和顏色信息。
激光雷達和相機檢測對象匹配問題可轉化為最近鄰算法的匹配[19]問題,該算法主要用于處理樣本之間的匹配問題。它通過計算樣本之間的相似度或距離,將一個樣本從一組中取出與另一組中最相似或最接近的樣本進行匹配。
將同一錐桶障礙物的激光點云投影至像素坐標系下,計算兩者檢測結果中心點之間的距離,確定最近距離的匹配情況,作為最后的輸出結果[20]。數據融合算法流程如圖13所示,大致步驟如下:

圖13 數據融合算法流程框圖
1) 獲取經時空對齊后基于激光雷達與相機的錐桶檢測結果。
2) 利用激光雷達坐標系到相機坐標系的變換矩陣,將基于激光雷達的錐桶檢測結果中錐桶的質心點坐標Ls投影至像素坐標系。
3) 對投影結果進行首次最近鄰匹配,由式(11)計算投影后的點云質心點Ls(ul,vl)與基于相機的錐桶檢測結果邊界框的中心點(uc,vc)的距離Di,設定距離閾值為T,判定是否關聯,直至遍歷完所有置質心點[20]。在首次最近鄰匹配過程中,匹配關聯前需檢查該圖像錐桶檢測結果是否已被匹配,若匹配,則更新歐式距離最近的對象為匹配對象。
(11)
4) 在首次匹配結束后對剩余的對象進行二次最近鄰匹配。
5) 將從關聯匹配成功的圖像中獲取到的錐桶顏色信息與激光雷達獲取到的錐桶位置信息進行融合。
上述數據融合步驟中,使用二次最近鄰匹配[21]的主要原因是在賽場中可能出現距離較近的一些錐桶,如賽道起始點附近的錐桶,它們之間的距離較近,使用一次最近鄰匹配會出現漏檢情況。針對此情況,在首次匹配后使用二次最近鄰匹配防止對象漏檢。最終根據最優匹配情況將錐桶位置和顏色整合,實現激光點云與圖像的數據融合。
測試位置為學校方程式測試場地,可以很好地模擬比賽場地。激光雷達采用Velodyne-32C,相機采用Basler ace-acA1920-40gc,計算平臺相關配置參數如表2所示。

表2 計算平臺配置
使用大學生方程式賽車進行該算法的測試驗證,賽車上傳感器和計算平臺安裝位置如圖14所示。將本文提出的算法部署到該賽車上進行測試。

圖14 FSAC方程式賽車
在實驗測試中,分別在復雜的錐桶場景下進行靜態測試,以及在高速循跡賽道中進行動態測試。
4.2.1靜態測試
在靜態測試中,在前方10 m的區域內進行隨機擺放交通錐桶,通過控制卷閘門高度來控制進光量,從而調節光照的強弱,分多組進行測試,共測試了236組錐桶(包含79個紅色錐桶,94個藍色錐桶和63個黃色錐桶)。實驗結果如圖15所示,圖15(a)為相機檢測效果圖,圖15(b)為經過融合算法處理后,獲得的顏色和位置信息。

圖15 靜態錐桶檢測匹配圖
分別采用文獻[8]的取交集融合算法與本文的二次最近鄰匹配融合檢測算法進行靜態測試,測試結果如表3所示。與取交集融合算法相比,融合匹配結果的準確率提高了2.61%,平均誤差降低了33.33%。

表3 靜態測試算法性能指標對比
4.2.2動態測試
靜態測試完成后,對賽車進行動態測試,在測試場地嚴格按照賽事要求擺放高速循跡賽道,設置賽車速度為30 km/h進行測試[22],調用ROS中Rviz進行可視化展示。檢測結果如圖16所示,圖16(a)為相機檢測結果,檢測到3個紅色錐桶和3個藍色錐桶,可以準確獲取圖像錐桶檢測框和顏色;圖16(b)為激光雷達與相機融合的檢測效果,將二者結果匹配融合后,獲得匹配后的錐桶顏色和位置,從而獲取賽道邊界,提供給之后的規劃決策模塊。

圖16 動態測試結果圖
分別采用文獻[8]的算法與本文算法進行動態測試,從中提取20個不同時刻的檢測狀態,在相機采集的視角內共出現382個錐桶,取交集融合算法檢測到217個錐桶,本文算法檢測到238個錐桶。對動態檢測結果進行對比分析,結果如表4所示。本文算法檢測的準確率為96.21%,平均位置偏差為0.067 m,平均用時2.212 ms,比取交集融合算法的準確率提升了5.52%,誤差降低了29.47%,速度提升了21.66%。

表4 動態測試算法性能指標對比
從測試結果中得出,動態測試中的平均誤差相對于靜態測試會偏高一些,并繪制動態測試中檢測到的各個錐桶位置偏差圖,如圖17所示,最大位置誤差未超過0.07 m,相對錐桶和賽車自身尺寸來說是很小的,滿足準確性的要求;跑動測試中融合檢測的平均用時為2.212 ms,對于10 Hz的激光雷達,即每幀有100 ms的處理時間,滿足賽車跑動的實時性要求。通過本文感知系統獲得的錐桶顏色和位置信息,為FSAC賽車的決策規劃模塊提供了準確的邊界信息。

圖17 本文錐桶位置偏差圖
1) 為實現無人駕駛賽車的障礙物檢測任務,提出了一種基于激光雷達和相機的賽道錐桶檢測算法,解決了單一傳感器在某些場景下的缺陷,從而為FSAC賽車獲取障礙物的位置和顏色提供了解決方案。
2) 測試結果表明,與取交集融合算法相比,本文中提出的算法擁有更高的目標檢測準確性和實時性,有效提升了賽車的跑動速度。
3) 本文中提出的算法可部署到園區無人駕駛和施工道路錐桶檢測等特定場景的感知系統中并可進行自適應調整滿足實際需求。