李玲星, 張小俊
(河北工業大學機械工程學院, 天津 300401)
自動駕駛通過激光雷達、毫米波雷達和攝像頭對車輛周圍環境做精確識別來實現自主避障和轉向。在車輛的自動駕駛過程中,運用的關鍵技術有環境感知、決策和控制等,而道路邊緣檢測是自動駕駛車輛環境感知的重要組成部分。道路邊緣檢測指利用車身上搭載的傳感器對前方道路進行感知,有效的從點云數據中提取道路邊緣信息,有利于進行目標檢測以及可行駛區域檢測,劃分出自車可通行的區域,為之后的路徑規劃提供支撐。朱學葵等[1]針對結構化、半結構化道路,采用對激光雷達標定、分層與中值濾波,提取各層的左右邊界點,然后使用隨機抽樣一致性(random sample consensus,RANSAC)算法對左右邊界點進行直線擬合,并使用卡爾曼濾波器進行直線跟蹤。但所采用的道路邊緣提取算法在十字路口或道路存在車輛等道路參與者的情況下無法提取正確的道路邊緣信息。Kong等[2]提出一種新穎的半監督LiDAR點云分割框架,有效利用LiDAR傳感器和自動駕駛場景中的結構先驗對分割模型進行一致性約束,在主流的自動駕駛數據集上實現了優異的分割性能。Lai等[3]針對大多數研究方法都集中于聚合局部特征,從而忽略了模型的長距離依賴。提出了一種能夠捕捉到長程上下文信息,并具有較強的泛化能力和高性能的分層Transformer。李強等[4]提出一種基于3D激光雷達的實時道路邊緣檢測算法,首先對點云數據進行網格化處理,求出每個網格中的高度差,并使用閾值進行點云分割,再由近及遠逐個提取左右道路邊緣,利用最小二乘法對左右道路邊緣網格進行曲線擬合平滑。但所提出的道路邊緣檢測算法易受道路環境影響,且無法解決復雜道路口的道路邊緣檢測問題。陳俊吉等[5]根據道路邊沿的幾何特征與三維點云特征,提出一種基于隨機抽樣一致性(RANSAC)算法的地面分割方法,濾除了預設感興趣區域內的地面數據點,然后將剩余的無序點進行有序柵格化投射處理,根據道路邊沿區域的幾何特征與點云分布特征進行匹配篩選,再融合RANSAC的最小二乘法,以完成道路邊沿曲線的魯棒擬合。所提方法沒有考慮車輛等道路參與者對無序點進行有序柵格化投射處理時帶來的干擾。段建民等[6]提出改進的具有噪聲的基于密度的聚類方法(density-based spatial clustering of applications with noise,DBSCAN)算法對雷達數據進行聚類,以使智能汽車獲得前方道路和障礙物信息,根據不同的密度參數,多次調用該算法完成多密度聚類,結合提出的道路邊沿、路面和障礙物等信息提取方法,在結構化或半結構化的城市道路中實時準確地提取智能汽車的可行駛區域信息。
針對道路邊緣檢測問題,現通過簡要目標檢測算法,過濾交通參與者對點云道路邊界提取的影響;再提取道路邊界點云,并對檢測結果進行跟蹤,保證算法的魯棒性與可靠性。
針對使用激光雷達數據進行道路邊緣檢測的問題,當前學者沒有考慮車輛等道路交通參與者對道路邊緣檢測的影響以及只用簡單的跟蹤算法對道路邊緣參數進行跟蹤,沒有考慮激光雷達載體本車的運動學模型。針對以上問題,提出基于3D激光雷達點云數據的道路邊緣檢測算法,激光雷達道路邊緣檢測流程如圖1所示。首先,使用點云去地面分割算法進行點云過濾,得到非地面點云;其次,對非地面點云數據進行網格化處理,根據車輛等目標投射的點云數據結構,使用區域生長算法進行柵格聚類,從而從網格中分離出車輛等道路參與者目標,得到剩余的道路點云;再次,使用360°激光雷達點云數據,根據道路邊緣點云在二維平面內,能夠有效地遮擋激光發射中心點與非道路邊緣點之間的連線,從而得到道路邊緣點云和非道路邊緣點云;最后使用RANSAC算法對道路邊緣點云進行多項式曲線擬合,并使用擴展Kalman濾波器對道路邊緣進行跟蹤。實驗結果表明,所提激光雷達道路邊緣檢測算法能夠有效地提取出復雜路口、車輛等交通參與者干擾等場景的道路邊緣[7]。

圖1 道路邊緣檢測流程圖Fig.1 Road edge detection flowchart
點云預處理主要步驟如下。
步驟1從原始點云數據中過濾地面點云。
步驟2從剩余非地面點云中進行車輛等道路交通參與者檢測,并從非地面點云中過濾車輛等道路交通參與者點云。
3D激光雷達點云能夠有效覆蓋車輛360°周圍環境,將點云原始數據進行解析后能夠獲取到每一個點的三維坐標,直接使用ROS bag包已有點云數據進行道路邊緣檢測。根據參考文獻[8]提供的點云去地面算法,如圖2所示,將點云數據在笛卡爾坐標系下的x-y平面轉換到一個無窮長半徑的圓面,從而進行去地面點云操作,將車輛周圍360°范圍內的區域,按照固定角度分辨率劃分為扇形區域,在同一個扇形區域,按照固定距離劃分為柵格單元。圖3為3D激光雷達原始數據,圖4為去地面點云后的點云數據。

圖2 地面點云檢測示意圖[8]Fig.2 Schematic diagram of ground point cloud detection[8]

圖3 3D激光雷達原始點云數據圖 Fig.3 3D LiDAR raw point cloud data map

圖4 去除地面點云后點云數據圖Fig.4 Point cloud data map after removing ground point cloud
由圖3、圖4可以看出,使用的點云去地面算法能夠有效地對地面點云進行濾除,但道路邊緣內存在的車輛等道路交通參與者對點云道路邊緣檢測算法帶來一定的干擾。
針對車輛等道路交通參與者的檢測問題,王凱歌等[9]使用歐式聚類算法對車輛等道路交通參與者進行目標檢測。關超華等[10]使用改進具有噪聲的基于密度的聚類方法(DBSCAN)進行車輛探測,從而進行目標檢測。蘇致遠等[11]利用激光雷達的相鄰掃描點進行地面分割,并用DBSCAN聚類方法進行障礙物的分割,然后利用迭代端點擬合(iterative end point fit, IEPF)算法對障礙物輪廓曲線進行分割和擬合。Qi等[12]基于多尺度特征和PointNet的深度神經網絡模型進行目標檢測,該方法改進了PointNet提取局部特征的能力,能夠實現復雜場景下LiDAR點云的自動分類。Maturana等[13]提出VoxNet點云網絡模型,VoxNet為了模仿2D CNN,直接把點云影射到voxel grid中,然后執行3D CNN,最終處理成一個向量。Su等[14]提出MVCNN點云處理算法,在點云周圍不同的虛擬相機位置產生不同的2D圖,然后用2D CNN處理這些圖,最后做分類。Li等[15]針對如何降低計算參數,保持模型性能方面,設計用于細粒度幾何建模的專用局部點聚合器來提高準確性和降低延時。Chen等[16]提出一種純稀疏的3D 檢測框架 VoxelNeXt。該方法可以直接從sparse CNNs 的 backbone網絡輸出的預測 sparse voxel 特征來預測3D物體,無需借助轉換成anchor、 center、voting等中間狀態的媒介。然而,無論傳統算法或深度學習都存在不同的優缺點,傳統算法對目標的分類缺乏精度,深度學習對異形車等未學習的點云數據缺乏檢測精度[17-20]。因此,將點云數據柵格化,如圖5所示,首先將非地面點云投影到如圖5所示的柵格單元中,圖中綠色單元格表示在該區域存在障礙物,白色單元格表示該區域不存在障礙物;其次,使用區域生長算法對柵格單元進行分割;最后,根據車輛等道路交通參與者的尺寸大小以及其他特征,從而將車輛等道路交通參與者從非地面點云中分離處理,從而得到剩余除車輛等道路交通參與者外的非地面點云[8]。所圖6所示,得到車輛等道路交通參與者過濾后的非地面點云數據。因為采用了車輛等道路交通參與者的尺寸大小以及其他特征的先驗數據,從而將這些點云從非地面點云中分割出來,可以避免道路邊緣檢測時,乘用車、商用車等目標對道路邊緣檢測的影響以及將乘用車、商用車等目標邊緣誤檢測成道路邊緣,故而本文方法有效地提升了道路邊緣檢測精度。

圖5 點云數據柵格化 Fig.5 Rasterization of point cloud data

圖6 非地面點云進行車輛等目標過濾后的點云圖Fig.6 Point cloud image after filtering vehicles and other targets using non ground point clouds
為從濾除出車輛等道路交通參與者的點云中提取道路邊緣點云,如圖7所示,根據點云固有特性,在道路邊緣點云在二維平面內,能夠有效地遮擋激光發射中心點與非道路邊緣點之間的連線,從而區分點云是邊緣點云或非邊緣點云。

圖7 道路邊緣點云判斷示意圖Fig.7 Schematic diagram of road edge point cloud judgment
圖7中點 1、點 2、點3分別是3個激光雷達非地面點云,為判斷點云是道路邊緣點云還是非道路邊緣點云,將每一個點云進行固定半徑膨脹,如圖7所示,點 2 外的黑色實線圓為點云點2膨脹后的虛擬大小,從激光發射中心引出黑色實線圓的左右切線,得到如圖7所示的左右邊界。在點云二維平面內,假設每一個點云都是一個不透光的固定半徑實心圓,則道路邊緣點實心圓將有效的遮擋激光發射中心與非道路邊緣點之間的連線,從而區分點云是道路邊緣點還是非道路邊緣點。由圖7可以看出,點云點1與激光發射中心之間的連線被點云點2實心圓遮擋,點云點3與激光發射中心之間的連線不被點云點1實心圓遮擋。以此類推,從而提取出道路邊緣點。
使用RANSAC算法對道路邊緣點云進行曲線擬合,其坐標系如圖8所示,道路邊緣點曲線采用車道線方程式,如式(1)所示。

圖8 車輛坐標系示意圖Fig.8 Schematic diagram of vehicle coordinate system
f(y)=C0+C1y+C2y2+C3y3
(1)
式(1)中:C0為車輛離道路邊緣的偏移距離;C1為道路邊緣偏航角;C2為道路邊緣曲率且向右彎曲為正;C3為道路邊緣曲率變化率且為正時代表曲率半徑逐漸變小、為負時代表曲率半徑逐漸變大;y為車輛坐標系下道路邊緣點的縱軸坐標值。為防止多項式擬合參數不能正確的描述道路邊緣點云,提出式(2)對多項式參數進行評價,即
(2)

為保證單幀道路邊緣檢測結果不受環境的影響,采用濾波器算法對道路邊緣檢測結果進行跟蹤,大大提高道路邊緣檢測的穩定性和抗干擾能力??紤]到傳統卡爾曼濾波器將系統狀態方程與測量方程都線性化,而道路邊緣模型中的狀態方程與測量方程均為非線性,因此使用擴展卡爾曼濾波器(extended Kalman filter,EKF)對道路邊緣進行跟蹤估計,有效提高道路邊緣檢測識別的精度,保證算法的有效性與魯棒性[21-25]。
道路邊緣多項式參數估計的擴展EKF狀態方程和測量方程表達式為
(3)
式(3)中:υk為k時刻輸入控制量;xk為k時刻狀態向量;zk為k時刻觀測向量;xk+1為由前一時刻xk的值進行的估計值;k為時間;f()和h()分別為系統非線性狀態函數和觀測函數;ωk和νk分別為k時刻零均值。
為有效地對道路邊緣結果多項式曲線進行跟蹤,避免擴展EKF更新階段使用前后幀不匹配的多項式觀測值曲線對狀態向量進行了更新,剛開始對第一幀道路邊緣檢測狀態量向量x0進行初始化[21-22]。之后,只要道路邊緣檢測有檢測結果輸入,而上一幀沒有對應的道路邊緣檢測結果信息,即把新檢測到的道路邊緣檢測結果狀態量為zk賦給xk,即增加一條道路邊緣多項式。上一幀有對應的道路邊緣檢測結果信息,則代入邊緣EKF更新階段,得到修正后的道路邊緣檢測信息。
邊緣EKF分為兩個階段,即預測階段和更新階段。
(1)預測階段。
(4)
(5)
(2)更新階段。
(6)
(7)
Pk|k=(I-KkHk)Pk|k-1
(8)
(9)
(10)
狀態轉移矩陣和觀測矩陣計算公式為
(11)
(12)

分別使用車輛激光雷達數據進行道路邊緣提取,計算單元為域控制器,其配置為32 GB內存,32TOPS算力,激光雷達數據為多個激光雷達拼接完成的點云數據,單幀點云數據大約32萬個點云。道路邊緣檢測采用調和平均值(F-measure)評測指標[26],若某條道路邊緣擬合結果判斷為正確需滿足C0與真值誤差小于15 cm,同時C1、C2、C3與真值正負相同。
(13)
(14)
(15)
式中:nTP為擬合為正確的道路邊緣曲線數量;nFP為誤檢道路邊緣曲線數量;nFN為漏檢的道路邊緣曲線數量;P為精確率;R為召回率。
以一車輛從右側超車場景進行實時道路邊緣檢測,其檢測結果如圖9~圖11所示,白色點云為非地面點云,其他顏色點云為道路邊緣點。為驗證本文算法的可靠性以及經濟性,采用經典的PointNet++語義分割網絡進行對比,采用針對特定城市道路建立的數據集進行算法驗證,實驗結果統計如表1所示,實驗表明,所提算法檢測性能與PointNet++相差不大,但不需要GPU的支持,同時算法幀率滿足工程運用的實時性要求。同時,以及非深度學習方法能夠適應不同環境的需求,且不要大量的數據標注以及數據積累,有效地降低了開發成本。

表1 實驗結果對比表Table 1 Calculation results of power

圖9 前方無車輛場景下道路邊緣提取結果 Fig.9 Road edge extraction results in the scene of no vehicles ahead

圖11 前方車輛左變道完成道路邊緣提取結果Fig.11 Left lane change of the vehicle ahead completes road edge extraction results
創造性提出一種能夠有效避免交通參與者對點云道路邊緣提取的算法。首先采用點云分割算法將點云劃分為地面點云和非地面點云,其次,在非地面點云中提取交通參與者,得到過濾交通參與者的非地面點云,再次,根據點云的固有特性,提取道路邊緣點,最后,采用RANSAC算法對道路邊緣點進行曲線擬合,采用EKF對曲線擬合參數進行濾波。經過多組試驗數據驗證,顯示所提道路邊緣檢測算法能夠有效地對道路邊緣進行提取,且能夠準確地處理不同曲率的道路。同時,所提算法對計算資源的需求較低,滿足道路邊緣檢測的實時性和魯棒性需求,有效地提高車輛可行駛區域的檢測水平,對自動駕駛環境感知具有較大的幫助,并且針對不同道路環境具有強的遷移性,有效地降低了算法開發成本。