柳廣照,曹海強(qiáng),劉桂宇
(一汽解放汽車有限公司 吉林 長(zhǎng)春 130011)
未來戰(zhàn)爭(zhēng)向高度信息化方向發(fā)展,“智能化”是未來作戰(zhàn)系統(tǒng)最終目標(biāo),而“智能化”武器也必然要求配套的機(jī)動(dòng)平臺(tái)智能化。智能車包括遙控車輛、跟隨車輛和自主行駛車輛,是車輛和智能技術(shù)結(jié)合的產(chǎn)物,具有自主環(huán)境感知、自主導(dǎo)航和路徑規(guī)劃、自主規(guī)避障礙行駛的能力。尤其是感知系統(tǒng),是實(shí)現(xiàn)無人駕駛的基礎(chǔ),其為路徑規(guī)劃和車輛控制提供依據(jù),保證著車輛的行駛安全。同時(shí),影響車輛行駛安全的關(guān)鍵性因素是障礙物,對(duì)于障礙物檢測(cè)便是環(huán)境感知的重要任務(wù)之一。障礙物信息包括障礙物類別信息、位置信息和運(yùn)動(dòng)信息,車輛通過獲取的各個(gè)障礙物信息結(jié)合局部路徑規(guī)劃來做出具體的避障行為從而確保行車安全。本文研究的激光雷達(dá)障礙物檢測(cè)系統(tǒng),是無人車環(huán)境感知系統(tǒng)的重要組成部分,能夠?qū)崿F(xiàn)對(duì)無人車周邊環(huán)境的精確三維建模[1]。
激光雷達(dá)障礙物識(shí)別系統(tǒng)主要由路面識(shí)別控制器、激光雷達(dá)、攝像頭、加速度傳感器、供電電源及顯示屏組成,激光雷達(dá)安裝在車輛頂部,攝像頭安裝在駕駛室前擋風(fēng)玻璃內(nèi)側(cè),加速度傳感器安裝在激光雷達(dá)正下方,控制器、顯示器、電源安裝在駕駛室。
該系統(tǒng)主要通過激光雷達(dá)采集環(huán)境信息,并通過攝像頭、加速度傳感器數(shù)據(jù)進(jìn)行補(bǔ)充和修正,在智能域控制器中對(duì)信息進(jìn)行處理??刂破鞑捎糜ミ_(dá)Jetson Xavier 控制器,該控制器算力行業(yè)領(lǐng)先,能夠部署較大規(guī)模的深度學(xué)習(xí)人工智能算法,滿足算法開發(fā)需求。激光雷達(dá)使用速騰80 線激光雷達(dá),點(diǎn)云稠密,對(duì)周圍環(huán)境表征良好。系統(tǒng)簡(jiǎn)圖見圖1。
激光雷達(dá)感知模塊從輸入激光點(diǎn)云開始,以此經(jīng)過點(diǎn)云融合子模塊(Fusion)、深度學(xué)習(xí)感知子模塊(CNNSeg)、傳統(tǒng)方法感知子模塊(NCut)、跟蹤子模塊(Tracking)。子模塊及子模塊間關(guān)系,見圖2。
點(diǎn)云融合子模塊:接收各激光雷達(dá)驅(qū)動(dòng)的點(diǎn)云數(shù)據(jù),做時(shí)戳同步后,根據(jù)外參標(biāo)定轉(zhuǎn)換到自車坐標(biāo)系,并將相鄰時(shí)間的不同傳感器點(diǎn)云拼接為一個(gè)點(diǎn)云輸出。
深度學(xué)習(xí)感知子模塊:輸入拼接后的點(diǎn)云數(shù)據(jù),采用CNNSeg 算法檢測(cè)出障礙物信息,包括位置、朝向、尺寸、類型,并調(diào)用NCut 子模塊,將去除地面點(diǎn)和障礙物點(diǎn)的點(diǎn)云數(shù)據(jù)發(fā)送到NCut 子模塊,待NCut 檢測(cè)完成后,將兩種算法的檢測(cè)結(jié)果合并發(fā)送到跟蹤子模塊。
傳統(tǒng)方法感知子模塊:由CNNSeg 子模塊調(diào)用,可以通過配置文件選擇不調(diào)用,收到經(jīng)過CNNSeg 過濾的點(diǎn)云,采用NCut 方法對(duì)點(diǎn)云做分割,并返回目標(biāo)檢測(cè)結(jié)果,包括位置、朝向、尺寸,由CNNSeg 子模塊合并后發(fā)送到跟蹤子模塊。
跟蹤子模塊:接收感知結(jié)果,采用卡爾曼濾波和匈牙利匹配,跟蹤匹配多幀間的目標(biāo),并計(jì)算輸出目標(biāo)的速度大小和方向。
點(diǎn)云拼接子模塊輸入各激光雷達(dá)對(duì)應(yīng)驅(qū)動(dòng)的點(diǎn)云數(shù)據(jù),首先對(duì)各點(diǎn)云數(shù)據(jù)進(jìn)行時(shí)間同步,同步后的各激光點(diǎn)云坐標(biāo)分別根據(jù)外參轉(zhuǎn)換到自車坐標(biāo)系,最后在自車坐標(biāo)系下將多個(gè)激光雷達(dá)的點(diǎn)云拼接為一幀點(diǎn)云,并輸出到后續(xù)分割子模塊。點(diǎn)云拼接時(shí)間同步流程見圖3。
時(shí)間同步方法具體是,以多個(gè)激光雷達(dá)中的一個(gè)為主傳感器(如果只有一個(gè)激光雷達(dá)則跳過當(dāng)前子模塊),可以從任意時(shí)刻開始接收激光點(diǎn)云,若收到次激光點(diǎn)云,則緩存到對(duì)應(yīng)buffer,若收到主激光雷達(dá)點(diǎn)云,則等待50 ms 后到各個(gè)次激光雷達(dá)點(diǎn)云中搜索時(shí)間戳最近的一幀,若該幀時(shí)戳與主激光點(diǎn)云時(shí)戳相差超過50 ms 則舍棄,否則進(jìn)入坐標(biāo)轉(zhuǎn)換步驟。時(shí)間同步的具體流程圖見圖4。
經(jīng)過點(diǎn)云時(shí)間同步之后,見圖5,局部放大之后可以看出同一車輛不同雷達(dá)掃描點(diǎn)云有很好的吻合度。
基于深度學(xué)習(xí)的障礙物感知流程圖,見圖6。該模塊從點(diǎn)云拼接模塊獲取點(diǎn)云數(shù)據(jù)后,經(jīng)過特征提取模塊獲得點(diǎn)云特征,將該特征以及預(yù)訓(xùn)練好的深度學(xué)習(xí)模型送入模型推理模塊得到模型輸出,輸出的特征經(jīng)過后處理模塊之后得到深度學(xué)習(xí)感知結(jié)果[2]。
2.2.2 模型推理
推理模塊使用特征提取模塊的特征以及預(yù)訓(xùn)練好的深度學(xué)習(xí)模型(ONNX 格式),使用TensorRT 庫(kù)進(jìn)行模型推理,即使用特征和模型,調(diào)用TensorRT 庫(kù)的函數(shù)進(jìn)行模型推理[3],過程說明見圖8。模型推理的輸出為同點(diǎn)云特征相同尺寸的多通道矩陣:(1)柵格所屬障礙物類別;(2)柵格所屬障礙物置信度;(3)柵格是否為地面;(4)柵格所屬障礙物高度;(5)柵格所屬障礙物x 方向夾角;(6)柵格所屬障礙物y 方向夾角;(7)柵格所屬障礙物的長(zhǎng)度;(8)柵格所屬障礙物的寬度;(9)柵格所屬障礙物高度;(10)柵格中心到所屬障礙物中心的x 方向偏移量;(11)柵格中心到所屬障礙物中心的y 方向偏移量。最后,將模型推理的輸出整理成11 通道矩陣,存儲(chǔ)在內(nèi)存中,傳遞給后處理模塊。
2.2.1 特征提取
得到拼接點(diǎn)云后,將點(diǎn)云按照預(yù)定義的感知范圍和柵格尺寸,將點(diǎn)云轉(zhuǎn)換成柵格化的特征。本模塊對(duì)每個(gè)柵格提取的特征共8 種類別:(1)柵格內(nèi)最高點(diǎn)高度;(2)柵格內(nèi)平均高度;(3)柵格內(nèi)點(diǎn)的數(shù)目;(4)柵格中心點(diǎn)相對(duì)于原點(diǎn)坐標(biāo)的夾角;(5)柵格內(nèi)最高點(diǎn)的反射率;(6)柵格內(nèi)平均反射率;(7)柵格相對(duì)于原點(diǎn)坐標(biāo)的距離;(8)柵格內(nèi)是否為空(沒有任何點(diǎn))。最后,將該8 種特征以8 通道矩陣的形式存儲(chǔ)在內(nèi)存中,傳遞給模型推理模塊,見圖7。
網(wǎng)絡(luò)模型采用U-Net 網(wǎng)絡(luò),輸入特征和輸出特征有相同的尺寸,可以更好地表現(xiàn)局部特征,使檢測(cè)網(wǎng)絡(luò)有更好的召回率,網(wǎng)絡(luò)結(jié)構(gòu)見圖9。
先找到原始點(diǎn)云數(shù)據(jù)中地面平面點(diǎn),并將其去除,本文使用的方法為射線路面點(diǎn)提取算法。算法的核心是以射線的形式對(duì)點(diǎn)云進(jìn)行重構(gòu)。我們現(xiàn)在將點(diǎn)云的(x,y,z)三維空間降到(x,y)平面來看,計(jì)算每一個(gè)點(diǎn)到車輛正方向(x 軸)的平面夾角θ,我們對(duì)360 度以激光雷達(dá)的角度分辨率進(jìn)行微分,每一份的角度為0.18 度,同一夾角上的n 線激光雷達(dá)有n 束這樣的射線。對(duì)同一夾角的線束上的點(diǎn)按照半徑的大小進(jìn)行排序,通過前后兩點(diǎn)的坡度是否大于事先設(shè)定的坡度閾值,從而判斷點(diǎn)是否為地面點(diǎn)[4]。
下一步,利用聚類算法將單獨(dú)的障礙物分割出來,利用最小凸包法畫出每個(gè)障礙物的邊界框。在此基礎(chǔ)上,求出并畫出包圍每個(gè)障礙物的邊界框的最小面積矩形,并與利用視覺算法識(shí)別的障礙物進(jìn)行融合,得到障礙物的類別信息。
算法的聚類采用傳統(tǒng)的歐氏聚類算法,在歐幾里德聚類中。我們使用的基本的數(shù)據(jù)結(jié)構(gòu)為KD Tree(k-維樹)[5]。KD 樹是在一個(gè)歐幾里德空間中組織點(diǎn)的基本數(shù)據(jù)結(jié)構(gòu),它本質(zhì)上就是一個(gè)每個(gè)節(jié)點(diǎn)都未k 維點(diǎn)的二叉樹。在PCL 中,由于點(diǎn)云的三維屬性,所用到的K-維樹即為3 維樹。在本文的方法中,我們通過將點(diǎn)云Z 軸設(shè)置為0,得到了一個(gè)二維樹。原因在于,一方面無需關(guān)注點(diǎn)云簇在z 方向的搜索順序,兩個(gè)物體在z 方向疊在一起可以將其視為一個(gè)障礙物,另一方面希望能夠加快聚類速度以滿足無人車感知實(shí)時(shí)性的需求。歐氏聚類通過判斷距離閾值,判斷點(diǎn)云是否為同一個(gè)物體。
在激光雷達(dá)與攝像頭融合算法中,根據(jù)傳感器之間的外參關(guān)系及攝像頭內(nèi)參,將障礙物點(diǎn)云映射到圖像坐標(biāo)系,通過計(jì)算點(diǎn)云包圍框與攝像頭深度學(xué)習(xí)識(shí)別到的包圍框之間的重疊率,判斷兩者是否為同一個(gè)物體,若不是同一個(gè)物體,則將攝像頭識(shí)別到的類別檢測(cè)結(jié)果返回給激光點(diǎn)云障礙物。
后處理模塊根據(jù)模型推理模塊的輸出,首先遍歷柵格置信度,找到所有置信度滿足閾值的柵格;其次,遍歷每個(gè)上一步中篩選的柵格,根據(jù)柵格x 方向偏移以及y 方向偏移量,找出中心;再次,對(duì)于中心相同或者相近的柵格,將其聚類得到多個(gè)cluster;最后,根據(jù)每個(gè)cluster 中所有柵格的分類分?jǐn)?shù),相對(duì)中心的偏移量以及尺寸,加權(quán)平均得到障礙物類別、位置和尺寸。流程見圖10。
本文算法在KITTI 數(shù)據(jù)集進(jìn)行了測(cè)試,檢測(cè)的可視化效果見圖11。
最后在kitti 數(shù)據(jù)集上進(jìn)行驗(yàn)證,在二維俯視圖重合度為0.7 的情況下,容易、中等、困難數(shù)據(jù)的平均準(zhǔn)確率統(tǒng)計(jì)見表1。
表1 不同難度數(shù)據(jù)的平均準(zhǔn)確率 單位:%
本算法融合了深度學(xué)習(xí)高精確及傳統(tǒng)幾何低漏檢處理優(yōu)勢(shì),可以對(duì)車輛周圍的障礙物進(jìn)行準(zhǔn)確識(shí)別,并通過跟蹤模塊獲得障礙物速度信息,實(shí)現(xiàn)了對(duì)周圍環(huán)境的準(zhǔn)確建模,能夠?yàn)楹罄m(xù)路徑規(guī)劃算法提供準(zhǔn)確輸入。