張 韜,陳有輝,蔣祖堅,廖尉華,覃高峰
(上汽通用五菱汽車股份有限公司,廣西 柳州 545007)
車載激光掃描測量在近年來不斷發(fā)展,并被用于需要獲取高精度的三維點云信息的眾多場景中,適合高效準確的獲取障礙物和建筑物信息,因此也被應(yīng)用于廠區(qū)的無人物流車上進行環(huán)境感知。
點云數(shù)據(jù)的處理,能有效減少車載系統(tǒng)的計算壓力,地面點云的分割能有效降低目標的誤識別和控制模塊的誤制動。地面點云分割的方法通常是基于幾何特性、基于機器學習或基于深度學習,但是機器學習和深度學習需要有效獲得較多數(shù)量的、多場景下的、較為精確的訓練數(shù)據(jù)集,且考慮到車載系統(tǒng)的較低算力和所需的實時性,所以本文使用了點云打在地面與物體上時存在較為明顯且不同的幾何特征來進行濾波。
本文提出的地面點云分割方法主要分為體素網(wǎng)格降采樣、法向量粗分割[1]和TIN 漸進加密方法三個部分。首先對車載激光雷達獲取的原始點云,進行柵格化處理,減少點云的數(shù)量;然后依靠點云打在地面和物體上時的法向量的差異,對地面點云進行初步的濾波;最后根據(jù)三角面片與各點的角度和距離對錯選的點進一步分割,最終得到將地面點剔除的障礙物點云集合。
車載激光雷達采集的點云數(shù)據(jù),會比較密集且復雜,影響后續(xù)的點云分割效率,采用體素網(wǎng)格進行濾波,可以保留點云的幾何結(jié)構(gòu),同時實現(xiàn)大幅度減少電云數(shù)量的目的,最終如圖1 所示,采用各個體素的重心近似表示體素內(nèi)的所有點,減輕后續(xù)計算負荷。
圖1 點云柵格化
體素網(wǎng)格降采樣的具體操作如下:
1)由點云數(shù)據(jù)集,計算三個坐標軸上的最大值和最小值;
2)使用最大值和最小值計算最小的包圍盒邊長lx、ly、lz,計算公式如式(1)所示:
3)定義體素柵格的邊長side,將三個坐標軸均等劃分,分別為p、q、m 份,即柵格的總個數(shù)為sum,計算公式如式(2)、式(3)所示:
4)給柵格編號,記為i、j、k,編號得到計算如式(4)所示:
5)精簡點云數(shù)據(jù),計算柵格的重心,柵格內(nèi)所有的點都以該點表示;如果重心點不存在,則使用離重心最近的點,計算重心如式(5)所示:
式中:n 為體素小柵格中的數(shù)據(jù)點個數(shù),Pp為數(shù)據(jù)點的坐標。
點云打在地面與物體上時,會存在較為明顯且不同的幾何特征,而且根據(jù)幾何特征實現(xiàn)地面點云分割計算量相對較小,適合于車載系統(tǒng)。
單獨的點無法構(gòu)成平面,也沒法求取它的法向量,需要設(shè)置鄰域并選擇附近的點計算[2]。太小的鄰域包含的點少,受噪聲點影響嚴重;太大的鄰域會將本不在同一平面的點包含在內(nèi),影響平面的擬合;因此需要選擇適當?shù)泥徲蚯笕》ㄏ蛄浚唧w步驟如下:
1)對于任意一點Pi,求鄰域中該點與其他任意點Pj的距離,距離公式為式(6):
2)取出距離Pi最近的兩個點Pj、Pk,且三點不能共線;
3)根據(jù)式(7)計算三點擬合得到的局部平面的法向量,a 和b 表示向量;
4)根據(jù)式(8)單位化Pi點的法向量:
5)設(shè)置角度閾值,如果法向量與(0,0,1)或(0,0,-1)的角度差小于閾值,則該點為地面點。
使用法向量能夠簡單且快速的分割一些平面,但是也會將人行道和車頂?shù)确ㄏ蛄繛椋?,0,1)或(0,0,-1)的物體選為地面點,因此需要使用TIN 漸進加密方法對地面點云再分割。
傳統(tǒng)TIN 漸進加密方法[3]的主要思路是選擇種子點構(gòu)建一個初始的稀疏的三角面片,隨后將剩余的點不斷加入考慮是否要更新三角面片來進行加密。主要分為剔除相差、選擇種子點構(gòu)建初始TIN 和迭代加密三個部分,根據(jù)如圖2 所示的流程圖,依次執(zhí)行以下步驟。
圖2 TIN 漸進加密方法流程圖
1.3.1 剔除相差
經(jīng)過體素網(wǎng)格降采樣的車載LiDAR 獲取的點云信息包含粗差,影響濾波效果。三角網(wǎng)對于位置低的粗差點的捕捉十分敏銳,會將位置最低的點選為種子點,加入最開始構(gòu)建的TIN 中,將地面點誤識別為障礙物點,影響激光雷達點云數(shù)據(jù)對地形信息的保留。
1.3.2 選擇種子點構(gòu)建初始TIN
根據(jù)點云數(shù)據(jù)的邊界,確定右下角和左上角的點坐標,從而確定數(shù)據(jù)區(qū)域的長length 和寬width;由設(shè)置的最大障礙物尺寸size,將整個平面分成nrow行ncol列的方格網(wǎng),計算方格網(wǎng)的行數(shù)nrow和列數(shù)ncol,計算公式如式(9)所示:
選擇每個格網(wǎng)中4 個角和z 值最小的點作為種子點,4 個角的點的高程等于離他們最近的種子點的高程。通過創(chuàng)建初始三角網(wǎng),將點云分為種子點集和備選點集。
1.3.3 迭代加密
對剩余的備選點進行判斷,迭代刷新TIN,獲取更準確的三角網(wǎng),直到達到最大迭代次數(shù)或備選點為0。
1)計算備選點Pa所處的三角面片和該點在三角面片中的位置;
2)計算Pa和三角面片的角度θa和距離da,如果θa和距離da都小于相應(yīng)設(shè)置的閾值,則將Pa確定為地面點;否則,進入步驟3)
3)計算三角面片的傾斜角度,如果角度小于閾值,則進入步驟4);
4)根據(jù)Pa的坐標和三角面片的頂點Pc,計算Pa的鏡像點Pb的坐標,計算公式如式(10)所示:
5)計算Pb和三角面片間的角度θb和間隔db,假如θb和db都小于各自的閾值,則Pb為地面點,進入步驟6);反之則該Pa確定為非地面點,回到步驟1),重復步驟;
6)將確定為地面點的點加到三角網(wǎng)中,更新迭代三角網(wǎng),回到步驟1),重復步驟,直到達到最大迭代次數(shù)或備選點為0。
本文實驗數(shù)據(jù)由無人物流車上的Velodyne 16線激光雷達提供,應(yīng)用該車載激光雷達掃描廠區(qū)內(nèi)無人物流線路,獲得包括道路、行人、圍欄、路燈、建筑物和成品車等在內(nèi)的點云信息。為驗證本文方法的有效性,將采集得到的點云數(shù)據(jù)回灌到算法模型中,并使用點云PCL 庫自制的GUI 實現(xiàn)點云的可視化。
利用自主開發(fā)的C++程序?qū)崿F(xiàn)本文算法,對采集到的點云數(shù)據(jù)進行地面點云分割,使用C++程序和pcl 庫及vtk 庫構(gòu)建的GUI 實現(xiàn)點云數(shù)據(jù)的可視化。如圖3 所示,實驗場景為廠內(nèi)無人物流路線的其中一段上坡路段,路旁有圍欄,道中坡上擺放了一個錐桶;如圖4 所示展示了激光雷達點云打到障礙物與地面上的反射點,可以看到能清晰的識別圍欄和錐桶,但錐桶周圍存在大量地面點;經(jīng)過地面點云分割后,如圖5 所示,成功將地面點剔除,雖然也將錐桶底部的少量點云剔除,但保留了錐桶的形狀,地面分割較為成功。
圖3 地面點云分割實驗場景
圖4 地面點云分割前的點云
圖5 地面點云分割后的點云
本文設(shè)計了一種適合于車載激光雷達點云數(shù)據(jù)的地面點云分割方法,在柵格化降采樣的基礎(chǔ)上,聯(lián)合使用了法向量判別和不規(guī)則三角網(wǎng)漸進加密的辦法,完成了地面點云的分割過濾。
實車道路采集的點云數(shù)據(jù)回灌表明,該辦法能較好地實現(xiàn)地面點云剔除的目標,且保證了障礙物點云數(shù)據(jù)的精度,保留了障礙物的形狀特征,同時計算量不大,較好地適配車載系統(tǒng)的需求。