李玲星, 張小俊
(河北工業(yè)大學(xué)機(jī)械工程學(xué)院, 天津 300401)
自動(dòng)駕駛通過激光雷達(dá)、毫米波雷達(dá)和攝像頭對(duì)車輛周圍環(huán)境做精確識(shí)別來實(shí)現(xiàn)自主避障和轉(zhuǎn)向。在車輛的自動(dòng)駕駛過程中,運(yùn)用的關(guān)鍵技術(shù)有環(huán)境感知、決策和控制等,而道路邊緣檢測(cè)是自動(dòng)駕駛車輛環(huán)境感知的重要組成部分。道路邊緣檢測(cè)指利用車身上搭載的傳感器對(duì)前方道路進(jìn)行感知,有效的從點(diǎn)云數(shù)據(jù)中提取道路邊緣信息,有利于進(jìn)行目標(biāo)檢測(cè)以及可行駛區(qū)域檢測(cè),劃分出自車可通行的區(qū)域,為之后的路徑規(guī)劃提供支撐。朱學(xué)葵等[1]針對(duì)結(jié)構(gòu)化、半結(jié)構(gòu)化道路,采用對(duì)激光雷達(dá)標(biāo)定、分層與中值濾波,提取各層的左右邊界點(diǎn),然后使用隨機(jī)抽樣一致性(random sample consensus,RANSAC)算法對(duì)左右邊界點(diǎn)進(jìn)行直線擬合,并使用卡爾曼濾波器進(jìn)行直線跟蹤。但所采用的道路邊緣提取算法在十字路口或道路存在車輛等道路參與者的情況下無法提取正確的道路邊緣信息。Kong等[2]提出一種新穎的半監(jiān)督LiDAR點(diǎn)云分割框架,有效利用LiDAR傳感器和自動(dòng)駕駛場(chǎng)景中的結(jié)構(gòu)先驗(yàn)對(duì)分割模型進(jìn)行一致性約束,在主流的自動(dòng)駕駛數(shù)據(jù)集上實(shí)現(xiàn)了優(yōu)異的分割性能。Lai等[3]針對(duì)大多數(shù)研究方法都集中于聚合局部特征,從而忽略了模型的長(zhǎng)距離依賴。提出了一種能夠捕捉到長(zhǎng)程上下文信息,并具有較強(qiáng)的泛化能力和高性能的分層Transformer。李強(qiáng)等[4]提出一種基于3D激光雷達(dá)的實(shí)時(shí)道路邊緣檢測(cè)算法,首先對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行網(wǎng)格化處理,求出每個(gè)網(wǎng)格中的高度差,并使用閾值進(jìn)行點(diǎn)云分割,再由近及遠(yuǎn)逐個(gè)提取左右道路邊緣,利用最小二乘法對(duì)左右道路邊緣網(wǎng)格進(jìn)行曲線擬合平滑。但所提出的道路邊緣檢測(cè)算法易受道路環(huán)境影響,且無法解決復(fù)雜道路口的道路邊緣檢測(cè)問題。陳俊吉等[5]根據(jù)道路邊沿的幾何特征與三維點(diǎn)云特征,提出一種基于隨機(jī)抽樣一致性(RANSAC)算法的地面分割方法,濾除了預(yù)設(shè)感興趣區(qū)域內(nèi)的地面數(shù)據(jù)點(diǎn),然后將剩余的無序點(diǎn)進(jìn)行有序柵格化投射處理,根據(jù)道路邊沿區(qū)域的幾何特征與點(diǎn)云分布特征進(jìn)行匹配篩選,再融合RANSAC的最小二乘法,以完成道路邊沿曲線的魯棒擬合。所提方法沒有考慮車輛等道路參與者對(duì)無序點(diǎn)進(jìn)行有序柵格化投射處理時(shí)帶來的干擾。段建民等[6]提出改進(jìn)的具有噪聲的基于密度的聚類方法(density-based spatial clustering of applications with noise,DBSCAN)算法對(duì)雷達(dá)數(shù)據(jù)進(jìn)行聚類,以使智能汽車獲得前方道路和障礙物信息,根據(jù)不同的密度參數(shù),多次調(diào)用該算法完成多密度聚類,結(jié)合提出的道路邊沿、路面和障礙物等信息提取方法,在結(jié)構(gòu)化或半結(jié)構(gòu)化的城市道路中實(shí)時(shí)準(zhǔn)確地提取智能汽車的可行駛區(qū)域信息。
針對(duì)道路邊緣檢測(cè)問題,現(xiàn)通過簡(jiǎn)要目標(biāo)檢測(cè)算法,過濾交通參與者對(duì)點(diǎn)云道路邊界提取的影響;再提取道路邊界點(diǎn)云,并對(duì)檢測(cè)結(jié)果進(jìn)行跟蹤,保證算法的魯棒性與可靠性。
針對(duì)使用激光雷達(dá)數(shù)據(jù)進(jìn)行道路邊緣檢測(cè)的問題,當(dāng)前學(xué)者沒有考慮車輛等道路交通參與者對(duì)道路邊緣檢測(cè)的影響以及只用簡(jiǎn)單的跟蹤算法對(duì)道路邊緣參數(shù)進(jìn)行跟蹤,沒有考慮激光雷達(dá)載體本車的運(yùn)動(dòng)學(xué)模型。針對(duì)以上問題,提出基于3D激光雷達(dá)點(diǎn)云數(shù)據(jù)的道路邊緣檢測(cè)算法,激光雷達(dá)道路邊緣檢測(cè)流程如圖1所示。首先,使用點(diǎn)云去地面分割算法進(jìn)行點(diǎn)云過濾,得到非地面點(diǎn)云;其次,對(duì)非地面點(diǎn)云數(shù)據(jù)進(jìn)行網(wǎng)格化處理,根據(jù)車輛等目標(biāo)投射的點(diǎn)云數(shù)據(jù)結(jié)構(gòu),使用區(qū)域生長(zhǎng)算法進(jìn)行柵格聚類,從而從網(wǎng)格中分離出車輛等道路參與者目標(biāo),得到剩余的道路點(diǎn)云;再次,使用360°激光雷達(dá)點(diǎn)云數(shù)據(jù),根據(jù)道路邊緣點(diǎn)云在二維平面內(nèi),能夠有效地遮擋激光發(fā)射中心點(diǎn)與非道路邊緣點(diǎn)之間的連線,從而得到道路邊緣點(diǎn)云和非道路邊緣點(diǎn)云;最后使用RANSAC算法對(duì)道路邊緣點(diǎn)云進(jìn)行多項(xiàng)式曲線擬合,并使用擴(kuò)展Kalman濾波器對(duì)道路邊緣進(jìn)行跟蹤。實(shí)驗(yàn)結(jié)果表明,所提激光雷達(dá)道路邊緣檢測(cè)算法能夠有效地提取出復(fù)雜路口、車輛等交通參與者干擾等場(chǎng)景的道路邊緣[7]。
圖1 道路邊緣檢測(cè)流程圖Fig.1 Road edge detection flowchart
點(diǎn)云預(yù)處理主要步驟如下。
步驟1從原始點(diǎn)云數(shù)據(jù)中過濾地面點(diǎn)云。
步驟2從剩余非地面點(diǎn)云中進(jìn)行車輛等道路交通參與者檢測(cè),并從非地面點(diǎn)云中過濾車輛等道路交通參與者點(diǎn)云。
3D激光雷達(dá)點(diǎn)云能夠有效覆蓋車輛360°周圍環(huán)境,將點(diǎn)云原始數(shù)據(jù)進(jìn)行解析后能夠獲取到每一個(gè)點(diǎn)的三維坐標(biāo),直接使用ROS bag包已有點(diǎn)云數(shù)據(jù)進(jìn)行道路邊緣檢測(cè)。根據(jù)參考文獻(xiàn)[8]提供的點(diǎn)云去地面算法,如圖2所示,將點(diǎn)云數(shù)據(jù)在笛卡爾坐標(biāo)系下的x-y平面轉(zhuǎn)換到一個(gè)無窮長(zhǎng)半徑的圓面,從而進(jìn)行去地面點(diǎn)云操作,將車輛周圍360°范圍內(nèi)的區(qū)域,按照固定角度分辨率劃分為扇形區(qū)域,在同一個(gè)扇形區(qū)域,按照固定距離劃分為柵格單元。圖3為3D激光雷達(dá)原始數(shù)據(jù),圖4為去地面點(diǎn)云后的點(diǎn)云數(shù)據(jù)。
圖2 地面點(diǎn)云檢測(cè)示意圖[8]Fig.2 Schematic diagram of ground point cloud detection[8]
圖3 3D激光雷達(dá)原始點(diǎn)云數(shù)據(jù)圖 Fig.3 3D LiDAR raw point cloud data map
圖4 去除地面點(diǎn)云后點(diǎn)云數(shù)據(jù)圖Fig.4 Point cloud data map after removing ground point cloud
由圖3、圖4可以看出,使用的點(diǎn)云去地面算法能夠有效地對(duì)地面點(diǎn)云進(jìn)行濾除,但道路邊緣內(nèi)存在的車輛等道路交通參與者對(duì)點(diǎn)云道路邊緣檢測(cè)算法帶來一定的干擾。
針對(duì)車輛等道路交通參與者的檢測(cè)問題,王凱歌等[9]使用歐式聚類算法對(duì)車輛等道路交通參與者進(jìn)行目標(biāo)檢測(cè)。關(guān)超華等[10]使用改進(jìn)具有噪聲的基于密度的聚類方法(DBSCAN)進(jìn)行車輛探測(cè),從而進(jìn)行目標(biāo)檢測(cè)。蘇致遠(yuǎn)等[11]利用激光雷達(dá)的相鄰掃描點(diǎn)進(jìn)行地面分割,并用DBSCAN聚類方法進(jìn)行障礙物的分割,然后利用迭代端點(diǎn)擬合(iterative end point fit, IEPF)算法對(duì)障礙物輪廓曲線進(jìn)行分割和擬合。Qi等[12]基于多尺度特征和PointNet的深度神經(jīng)網(wǎng)絡(luò)模型進(jìn)行目標(biāo)檢測(cè),該方法改進(jìn)了PointNet提取局部特征的能力,能夠?qū)崿F(xiàn)復(fù)雜場(chǎng)景下LiDAR點(diǎn)云的自動(dòng)分類。Maturana等[13]提出VoxNet點(diǎn)云網(wǎng)絡(luò)模型,VoxNet為了模仿2D CNN,直接把點(diǎn)云影射到voxel grid中,然后執(zhí)行3D CNN,最終處理成一個(gè)向量。Su等[14]提出MVCNN點(diǎn)云處理算法,在點(diǎn)云周圍不同的虛擬相機(jī)位置產(chǎn)生不同的2D圖,然后用2D CNN處理這些圖,最后做分類。Li等[15]針對(duì)如何降低計(jì)算參數(shù),保持模型性能方面,設(shè)計(jì)用于細(xì)粒度幾何建模的專用局部點(diǎn)聚合器來提高準(zhǔn)確性和降低延時(shí)。Chen等[16]提出一種純稀疏的3D 檢測(cè)框架 VoxelNeXt。該方法可以直接從sparse CNNs 的 backbone網(wǎng)絡(luò)輸出的預(yù)測(cè) sparse voxel 特征來預(yù)測(cè)3D物體,無需借助轉(zhuǎn)換成anchor、 center、voting等中間狀態(tài)的媒介。然而,無論傳統(tǒng)算法或深度學(xué)習(xí)都存在不同的優(yōu)缺點(diǎn),傳統(tǒng)算法對(duì)目標(biāo)的分類缺乏精度,深度學(xué)習(xí)對(duì)異形車等未學(xué)習(xí)的點(diǎn)云數(shù)據(jù)缺乏檢測(cè)精度[17-20]。因此,將點(diǎn)云數(shù)據(jù)柵格化,如圖5所示,首先將非地面點(diǎn)云投影到如圖5所示的柵格單元中,圖中綠色單元格表示在該區(qū)域存在障礙物,白色單元格表示該區(qū)域不存在障礙物;其次,使用區(qū)域生長(zhǎng)算法對(duì)柵格單元進(jìn)行分割;最后,根據(jù)車輛等道路交通參與者的尺寸大小以及其他特征,從而將車輛等道路交通參與者從非地面點(diǎn)云中分離處理,從而得到剩余除車輛等道路交通參與者外的非地面點(diǎn)云[8]。所圖6所示,得到車輛等道路交通參與者過濾后的非地面點(diǎn)云數(shù)據(jù)。因?yàn)椴捎昧塑囕v等道路交通參與者的尺寸大小以及其他特征的先驗(yàn)數(shù)據(jù),從而將這些點(diǎn)云從非地面點(diǎn)云中分割出來,可以避免道路邊緣檢測(cè)時(shí),乘用車、商用車等目標(biāo)對(duì)道路邊緣檢測(cè)的影響以及將乘用車、商用車等目標(biāo)邊緣誤檢測(cè)成道路邊緣,故而本文方法有效地提升了道路邊緣檢測(cè)精度。
圖5 點(diǎn)云數(shù)據(jù)柵格化 Fig.5 Rasterization of point cloud data
圖6 非地面點(diǎn)云進(jìn)行車輛等目標(biāo)過濾后的點(diǎn)云圖Fig.6 Point cloud image after filtering vehicles and other targets using non ground point clouds
為從濾除出車輛等道路交通參與者的點(diǎn)云中提取道路邊緣點(diǎn)云,如圖7所示,根據(jù)點(diǎn)云固有特性,在道路邊緣點(diǎn)云在二維平面內(nèi),能夠有效地遮擋激光發(fā)射中心點(diǎn)與非道路邊緣點(diǎn)之間的連線,從而區(qū)分點(diǎn)云是邊緣點(diǎn)云或非邊緣點(diǎn)云。
圖7 道路邊緣點(diǎn)云判斷示意圖Fig.7 Schematic diagram of road edge point cloud judgment
圖7中點(diǎn) 1、點(diǎn) 2、點(diǎn)3分別是3個(gè)激光雷達(dá)非地面點(diǎn)云,為判斷點(diǎn)云是道路邊緣點(diǎn)云還是非道路邊緣點(diǎn)云,將每一個(gè)點(diǎn)云進(jìn)行固定半徑膨脹,如圖7所示,點(diǎn) 2 外的黑色實(shí)線圓為點(diǎn)云點(diǎn)2膨脹后的虛擬大小,從激光發(fā)射中心引出黑色實(shí)線圓的左右切線,得到如圖7所示的左右邊界。在點(diǎn)云二維平面內(nèi),假設(shè)每一個(gè)點(diǎn)云都是一個(gè)不透光的固定半徑實(shí)心圓,則道路邊緣點(diǎn)實(shí)心圓將有效的遮擋激光發(fā)射中心與非道路邊緣點(diǎn)之間的連線,從而區(qū)分點(diǎn)云是道路邊緣點(diǎn)還是非道路邊緣點(diǎn)。由圖7可以看出,點(diǎn)云點(diǎn)1與激光發(fā)射中心之間的連線被點(diǎn)云點(diǎn)2實(shí)心圓遮擋,點(diǎn)云點(diǎn)3與激光發(fā)射中心之間的連線不被點(diǎn)云點(diǎn)1實(shí)心圓遮擋。以此類推,從而提取出道路邊緣點(diǎn)。
使用RANSAC算法對(duì)道路邊緣點(diǎn)云進(jìn)行曲線擬合,其坐標(biāo)系如圖8所示,道路邊緣點(diǎn)曲線采用車道線方程式,如式(1)所示。
圖8 車輛坐標(biāo)系示意圖Fig.8 Schematic diagram of vehicle coordinate system
f(y)=C0+C1y+C2y2+C3y3
(1)
式(1)中:C0為車輛離道路邊緣的偏移距離;C1為道路邊緣偏航角;C2為道路邊緣曲率且向右彎曲為正;C3為道路邊緣曲率變化率且為正時(shí)代表曲率半徑逐漸變小、為負(fù)時(shí)代表曲率半徑逐漸變大;y為車輛坐標(biāo)系下道路邊緣點(diǎn)的縱軸坐標(biāo)值。為防止多項(xiàng)式擬合參數(shù)不能正確的描述道路邊緣點(diǎn)云,提出式(2)對(duì)多項(xiàng)式參數(shù)進(jìn)行評(píng)價(jià),即
(2)
為保證單幀道路邊緣檢測(cè)結(jié)果不受環(huán)境的影響,采用濾波器算法對(duì)道路邊緣檢測(cè)結(jié)果進(jìn)行跟蹤,大大提高道路邊緣檢測(cè)的穩(wěn)定性和抗干擾能力??紤]到傳統(tǒng)卡爾曼濾波器將系統(tǒng)狀態(tài)方程與測(cè)量方程都線性化,而道路邊緣模型中的狀態(tài)方程與測(cè)量方程均為非線性,因此使用擴(kuò)展卡爾曼濾波器(extended Kalman filter,EKF)對(duì)道路邊緣進(jìn)行跟蹤估計(jì),有效提高道路邊緣檢測(cè)識(shí)別的精度,保證算法的有效性與魯棒性[21-25]。
道路邊緣多項(xiàng)式參數(shù)估計(jì)的擴(kuò)展EKF狀態(tài)方程和測(cè)量方程表達(dá)式為
(3)
式(3)中:υk為k時(shí)刻輸入控制量;xk為k時(shí)刻狀態(tài)向量;zk為k時(shí)刻觀測(cè)向量;xk+1為由前一時(shí)刻xk的值進(jìn)行的估計(jì)值;k為時(shí)間;f()和h()分別為系統(tǒng)非線性狀態(tài)函數(shù)和觀測(cè)函數(shù);ωk和νk分別為k時(shí)刻零均值。
為有效地對(duì)道路邊緣結(jié)果多項(xiàng)式曲線進(jìn)行跟蹤,避免擴(kuò)展EKF更新階段使用前后幀不匹配的多項(xiàng)式觀測(cè)值曲線對(duì)狀態(tài)向量進(jìn)行了更新,剛開始對(duì)第一幀道路邊緣檢測(cè)狀態(tài)量向量x0進(jìn)行初始化[21-22]。之后,只要道路邊緣檢測(cè)有檢測(cè)結(jié)果輸入,而上一幀沒有對(duì)應(yīng)的道路邊緣檢測(cè)結(jié)果信息,即把新檢測(cè)到的道路邊緣檢測(cè)結(jié)果狀態(tài)量為zk賦給xk,即增加一條道路邊緣多項(xiàng)式。上一幀有對(duì)應(yīng)的道路邊緣檢測(cè)結(jié)果信息,則代入邊緣EKF更新階段,得到修正后的道路邊緣檢測(cè)信息。
邊緣EKF分為兩個(gè)階段,即預(yù)測(cè)階段和更新階段。
(1)預(yù)測(cè)階段。
(4)
(5)
(2)更新階段。
(6)
(7)
Pk|k=(I-KkHk)Pk|k-1
(8)
(9)
(10)
狀態(tài)轉(zhuǎn)移矩陣和觀測(cè)矩陣計(jì)算公式為
(11)
(12)
分別使用車輛激光雷達(dá)數(shù)據(jù)進(jìn)行道路邊緣提取,計(jì)算單元為域控制器,其配置為32 GB內(nèi)存,32TOPS算力,激光雷達(dá)數(shù)據(jù)為多個(gè)激光雷達(dá)拼接完成的點(diǎn)云數(shù)據(jù),單幀點(diǎn)云數(shù)據(jù)大約32萬個(gè)點(diǎn)云。道路邊緣檢測(cè)采用調(diào)和平均值(F-measure)評(píng)測(cè)指標(biāo)[26],若某條道路邊緣擬合結(jié)果判斷為正確需滿足C0與真值誤差小于15 cm,同時(shí)C1、C2、C3與真值正負(fù)相同。
(13)
(14)
(15)
式中:nTP為擬合為正確的道路邊緣曲線數(shù)量;nFP為誤檢道路邊緣曲線數(shù)量;nFN為漏檢的道路邊緣曲線數(shù)量;P為精確率;R為召回率。
以一車輛從右側(cè)超車場(chǎng)景進(jìn)行實(shí)時(shí)道路邊緣檢測(cè),其檢測(cè)結(jié)果如圖9~圖11所示,白色點(diǎn)云為非地面點(diǎn)云,其他顏色點(diǎn)云為道路邊緣點(diǎn)。為驗(yàn)證本文算法的可靠性以及經(jīng)濟(jì)性,采用經(jīng)典的PointNet++語義分割網(wǎng)絡(luò)進(jìn)行對(duì)比,采用針對(duì)特定城市道路建立的數(shù)據(jù)集進(jìn)行算法驗(yàn)證,實(shí)驗(yàn)結(jié)果統(tǒng)計(jì)如表1所示,實(shí)驗(yàn)表明,所提算法檢測(cè)性能與PointNet++相差不大,但不需要GPU的支持,同時(shí)算法幀率滿足工程運(yùn)用的實(shí)時(shí)性要求。同時(shí),以及非深度學(xué)習(xí)方法能夠適應(yīng)不同環(huán)境的需求,且不要大量的數(shù)據(jù)標(biāo)注以及數(shù)據(jù)積累,有效地降低了開發(fā)成本。
表1 實(shí)驗(yàn)結(jié)果對(duì)比表Table 1 Calculation results of power
圖9 前方無車輛場(chǎng)景下道路邊緣提取結(jié)果 Fig.9 Road edge extraction results in the scene of no vehicles ahead
圖11 前方車輛左變道完成道路邊緣提取結(jié)果Fig.11 Left lane change of the vehicle ahead completes road edge extraction results
創(chuàng)造性提出一種能夠有效避免交通參與者對(duì)點(diǎn)云道路邊緣提取的算法。首先采用點(diǎn)云分割算法將點(diǎn)云劃分為地面點(diǎn)云和非地面點(diǎn)云,其次,在非地面點(diǎn)云中提取交通參與者,得到過濾交通參與者的非地面點(diǎn)云,再次,根據(jù)點(diǎn)云的固有特性,提取道路邊緣點(diǎn),最后,采用RANSAC算法對(duì)道路邊緣點(diǎn)進(jìn)行曲線擬合,采用EKF對(duì)曲線擬合參數(shù)進(jìn)行濾波。經(jīng)過多組試驗(yàn)數(shù)據(jù)驗(yàn)證,顯示所提道路邊緣檢測(cè)算法能夠有效地對(duì)道路邊緣進(jìn)行提取,且能夠準(zhǔn)確地處理不同曲率的道路。同時(shí),所提算法對(duì)計(jì)算資源的需求較低,滿足道路邊緣檢測(cè)的實(shí)時(shí)性和魯棒性需求,有效地提高車輛可行駛區(qū)域的檢測(cè)水平,對(duì)自動(dòng)駕駛環(huán)境感知具有較大的幫助,并且針對(duì)不同道路環(huán)境具有強(qiáng)的遷移性,有效地降低了算法開發(fā)成本。