加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 激光雷達(dá)點(diǎn)云處理的具體流程
    • 01、點(diǎn)云預(yù)處理層面
    • 02、感知功能層面的處理
    • 03、定位功能層面的處理
    • 參考文獻(xiàn)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

激光點(diǎn)云系列之一:詳解激光雷達(dá)點(diǎn)云數(shù)據(jù)的處理過程

2023/02/21
4822
閱讀需 43 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者?| 奚少華

隨著激光雷達(dá)的上車數(shù)量的不斷攀升,如何用好激光雷達(dá)成為了重中之重,而用好激光雷達(dá)的關(guān)鍵點(diǎn)之一就在于處理好點(diǎn)云數(shù)據(jù)。

激光點(diǎn)云指的是由三維激光雷達(dá)設(shè)備掃描得到的空間點(diǎn)的數(shù)據(jù)集,每一個點(diǎn)云都包含了三維坐標(biāo)(XYZ)和激光反射強(qiáng)度(Intensity),其中強(qiáng)度信息會與目標(biāo)物表面材質(zhì)與粗糙度、激光入射角度、激光波長以及激光雷達(dá)的能量密度有關(guān)。

為了更進(jìn)一步解釋清楚點(diǎn)云,筆者梳理了點(diǎn)云的相關(guān)參數(shù)和特點(diǎn)。

表:激光雷達(dá)點(diǎn)云的相關(guān)參數(shù)

表:點(diǎn)云的特點(diǎn)

從點(diǎn)云的采集原理來看,以ToF路線的激光雷達(dá)為例,激光點(diǎn)云是由車載激光掃描系統(tǒng)向周圍發(fā)射激光信號,然后收集反射回來的激光信號得來的,并通過光速、激光從發(fā)射到返回的時間等信息來測得目標(biāo)物的距離信息,再結(jié)合IMU、里程計、GNSS等信息計算出前方目標(biāo)物的三維坐標(biāo)信息和距離信息。

此外,在點(diǎn)云的采集和分析過程中,感知算法人員需要根據(jù)車載激光雷達(dá)的特點(diǎn)與工作原理,并結(jié)合激光雷達(dá)的角分辨率、視場角等相關(guān)參數(shù),才能更好地利用點(diǎn)云。

那么,激光雷達(dá)點(diǎn)云在車端的處理環(huán)節(jié)中,具體有哪些處理過程和方法?又如何優(yōu)化?

此后,為了驗證這些問題,筆者先后訪談了圖達(dá)通算法負(fù)責(zé)人許建博士和系統(tǒng)及應(yīng)用負(fù)責(zé)人Leon、上汽高級經(jīng)理殷瑋、縱目科技感知算法工程師湯強(qiáng)、禾賽科技的專家等。在此,筆者感謝各路專家給予的支持,并整理出如下系列的文章,以供讀者參閱。

以下為激光點(diǎn)云處理系列文章的第一篇內(nèi)容。

激光雷達(dá)點(diǎn)云處理的具體流程

聊完何謂點(diǎn)云及其特征后,下文將繼續(xù)分析激光雷達(dá)點(diǎn)云在自動駕駛中的處理流程。在此之前,有兩點(diǎn)需要說明。

其一,激光雷達(dá)點(diǎn)云被用于感知和定位時,點(diǎn)云會先完成預(yù)處理,然后按照不同用途進(jìn)行不同的處理,并在點(diǎn)云的應(yīng)用細(xì)節(jié)上也會不同。

湯強(qiáng)說:“激光雷達(dá)用于定位的話,算法模型會要求點(diǎn)云的數(shù)據(jù)量盡可能多,并且區(qū)別于感知,定位還需要道路數(shù)據(jù)。如車道線或地標(biāo),它們對于激光的反射率和普通路面的反射率是不同的,激光雷達(dá)通過這種方式來獲取路面信息的數(shù)據(jù)。激光雷達(dá)用于感知的話,它會有一個預(yù)處理的過程,會確定一個ROI范圍,隨后用這一區(qū)域的點(diǎn)云數(shù)據(jù)來完成后續(xù)的檢測?!?/p>

其二,每家企業(yè)在點(diǎn)云的具體應(yīng)用過程中,還會根據(jù)各自技術(shù)方案與應(yīng)用場景不同,會存在些許處理流程上的差異,但大部分處理流程皆相同。

為了更詳細(xì)地闡述點(diǎn)云的處理流程,筆者結(jié)合專家訪談的內(nèi)容與公開信息,梳理出激光雷達(dá)點(diǎn)云在自動駕駛應(yīng)用中的普遍流程。

圖:激光點(diǎn)云的處理流程

01、點(diǎn)云預(yù)處理層面

1.1?原始點(diǎn)云數(shù)據(jù)的接收與解析

(1)點(diǎn)云數(shù)據(jù)的接收

激光雷達(dá)的原始點(diǎn)云數(shù)據(jù)都會被存放在一個數(shù)據(jù)包里(pcap),此時數(shù)據(jù)包里面的數(shù)據(jù)都是一連串的字節(jié)符號,無法直接使用。

以Velodyne的16線激光雷達(dá)為例,原始點(diǎn)云數(shù)據(jù)的接收主要是通過UDP(用戶數(shù)據(jù)報協(xié)議)的形式向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。具體來說,在激光雷達(dá)的web端進(jìn)行設(shè)置或通過命令行進(jìn)行設(shè)置后,技術(shù)人員會在接收端匹配激光雷達(dá)的IP地址與自身的UDP端口號,從而即可接收原始點(diǎn)云數(shù)據(jù)。

從數(shù)據(jù)的內(nèi)容來看,該型號的激光雷達(dá)在垂直方向上(-15°到+15°)有16線的激光束,其每幀的數(shù)據(jù)長度固定為1248字節(jié),這些字節(jié)包括前42字節(jié)的前數(shù)據(jù)包標(biāo)識、12組數(shù)據(jù)包、4字節(jié)時間戳和最后兩字節(jié)雷達(dá)型號參數(shù)。

?圖:Velodyne-16激光雷達(dá)每一幀的點(diǎn)云數(shù)據(jù)情況

(數(shù)據(jù)來源:《Velodyne VLP-16激光雷達(dá)數(shù)據(jù)格式解析》)

每個數(shù)據(jù)包中的數(shù)據(jù)都包含了激光光束的旋轉(zhuǎn)角度、距離值、反射強(qiáng)度的信息。例如,“B6 07”代表了激光雷達(dá)的探測距離,“2A”代表了激光的反射強(qiáng)度,但這些信息都是以兩字節(jié)表示,需要進(jìn)一步解析這些數(shù)據(jù)。

?圖:Velodyne-16激光雷達(dá)數(shù)據(jù)包的一部分?jǐn)?shù)據(jù)

(數(shù)據(jù)來源:《Velodyne VLP-16激光雷達(dá)數(shù)據(jù)格式解析》)

(2)點(diǎn)云數(shù)據(jù)(pcd)的解析

數(shù)據(jù)包(pcap)中的原始數(shù)據(jù)需要進(jìn)一步轉(zhuǎn)換為可被感知技術(shù)人員使用的pcd格式的數(shù)據(jù)集。

點(diǎn)云數(shù)據(jù)的pcd格式文件是激光點(diǎn)云的一種存儲格式,pcd文件主要是由笛卡爾坐標(biāo)(x,y,z)和強(qiáng)度值i組成的列表,即每個點(diǎn)云都會附帶獨(dú)有的三維坐標(biāo)系和能量反射強(qiáng)度。

在這個坐標(biāo)系中,x軸指向汽車的前部,y軸指向汽車的左側(cè)。由于這個坐標(biāo)系采用右手定則,坐標(biāo)系z軸指向汽車上方。

圖:點(diǎn)云pcd坐標(biāo)

(數(shù)據(jù)來源:《學(xué)習(xí)筆記:點(diǎn)云庫PCL介紹》)

為了闡述點(diǎn)云數(shù)據(jù)的解析過程,筆者還是以上文Velodyne-16激光雷達(dá)的某幀點(diǎn)云數(shù)據(jù)包為例,并根據(jù)公開信息梳理如下。

第一步,計算激光線的旋轉(zhuǎn)角度值。

例如,上圖數(shù)據(jù)包前一部分的第一行的旋轉(zhuǎn)角度為0xE0、0x63。

a)?反轉(zhuǎn)兩個字節(jié)變成十六進(jìn)制63 E0

b)?把63 E0變成無符號的十進(jìn)制為25568

c)?再把25568除以100得到255.68,那么得到的值255.68就是當(dāng)前的旋轉(zhuǎn)角度值

第二步,計算16線激光分別測得的距離。

例如,上圖數(shù)據(jù)包前一部分的第一個激光線的距離,其值為“B6 07 2A”,其中“ B6 07”為距離“2A”為反射強(qiáng)度。

a)?反轉(zhuǎn)兩個距離字節(jié)“?B6 07”,將其變成“07 B6”

b)?把“07 B6”變成無符號的十進(jìn)制為1974

c)?由于該型號激光雷達(dá)的分辨率為2.0mm,所以激光束測得的目標(biāo)物距離為1974*2=3948mm

d)?將3948mm轉(zhuǎn)化為米計量的單位,即3.948m

第三步,獲得該幀的時間戳和激光雷達(dá)型號參數(shù)。

例如,上圖數(shù)據(jù)包后一部分的最后六個字節(jié)的數(shù)據(jù)“6D 69 94 0F 37 22”。

a)?前四個字節(jié)的數(shù)據(jù)“6D 69 94 0F”為該幀的時間戳,然后反轉(zhuǎn)順序“0F 94 69 6D”

b)?將“0F 94 69 6D”轉(zhuǎn)換為十進(jìn)制的值261384557微秒(μs)

c)?把261384557除以1000000可獲得當(dāng)前的時間,即261.384557秒(s)

d)?后兩個字節(jié)“37 22”表示雷達(dá)的型號和參數(shù)

第四步,把角度和距離信息轉(zhuǎn)化為三維坐標(biāo)XYZ值。

三維坐標(biāo)XYZ值可通過旋轉(zhuǎn)角度α(已在第一步中求得)、垂直角度ω(每束激光線對應(yīng)的固定值)和距離值R(已在第二步中求得)來綜合求出,具體的坐標(biāo)換算如下圖所示。

?圖:目標(biāo)物點(diǎn)云的三維坐標(biāo)計算

(數(shù)據(jù)來源:《Velodyne VLP-16激光雷達(dá)數(shù)據(jù)格式解析》)

1.2?運(yùn)動畸變補(bǔ)償

運(yùn)動畸變是指在一幀時間內(nèi),激光雷達(dá)或者其載體在發(fā)生運(yùn)動后,產(chǎn)生的點(diǎn)云位置不一樣的問題。

要理解運(yùn)動畸變補(bǔ)償,我們首先要知道自動駕駛車端的激光雷達(dá)點(diǎn)云為什么會產(chǎn)生運(yùn)動畸變。

其實(shí),激光雷達(dá)發(fā)射的一幀激光點(diǎn)云會由多個激光點(diǎn)組成,而這些激光點(diǎn)云是由掃描器件經(jīng)過一次掃描后才形成的。在靜止的場景中時,車輛處于靜止?fàn)顟B(tài)且場景中的目標(biāo)物也處于相對靜止?fàn)顟B(tài),那么采集到的一幀點(diǎn)云是沒有畸變的,每條激光線束最終會形成一個閉合的圓形。

?圖:靜止?fàn)顟B(tài)下的車輛點(diǎn)云不產(chǎn)生畸變

在運(yùn)動場景下,如車輛高速行駛或者轉(zhuǎn)彎時,一幀點(diǎn)云中的起始點(diǎn)云和終止點(diǎn)云只能在不同坐標(biāo)系下獲得測量結(jié)果,這便導(dǎo)致了三維環(huán)境信息產(chǎn)生了畸變。如下圖所示,當(dāng)車輛在運(yùn)動過程中,車端上的激光雷達(dá)在掃描完一圈后,在最后一束激光照射到目標(biāo)物時,跟第一束激光照射到目標(biāo)時相比,目標(biāo)物的空間位置已發(fā)生了相對位移——該物體在兩個不同時刻的點(diǎn)云,顯示在坐標(biāo)系中的信息是不同的。

圖:目標(biāo)物在不同時刻被激光照射到的情況

運(yùn)動畸變補(bǔ)償就是為了解決上述問題——把激光在采集過程中的運(yùn)動軌跡計算出來,并在對應(yīng)的激光點(diǎn)云上補(bǔ)償這部分運(yùn)動位移帶來的變化,將同一幀的點(diǎn)云統(tǒng)一到同一時刻的坐標(biāo)系下。

為了進(jìn)一步解釋運(yùn)動畸變補(bǔ)償,某主機(jī)廠感知算法工程師舉例說:“比如,若車端配有IMU或者輪式里程計,感知算法人員就可以通過IMU和輪式里程計(或者直接用IMU)的方式,推算出0.1秒內(nèi)車是怎么運(yùn)動的,然后利用運(yùn)動模型來做運(yùn)動畸變補(bǔ)償。”

常見的運(yùn)動畸變補(bǔ)償?shù)姆椒ǎ?/strong>

純估計方法(ICP/VICP)

迭代最近點(diǎn)(ICP)方法是采用ICP算法來匹配兩個點(diǎn)云,通過不斷地算法迭代后,將點(diǎn)云之間的誤差縮至最小。

VICP方法是ICP算法的變種形式,模型假設(shè)車輛是在勻速運(yùn)動,在進(jìn)行匹配點(diǎn)云的同時估計車輛的自身速度。

迭代最近點(diǎn)(ICP)和VICP被統(tǒng)稱為“純估計方法”。

傳感器輔助方法(IMU/ODOM)

慣性測量單元(IMU)方法是在IMU隊列中查找相鄰兩幀IMU的數(shù)據(jù),然后通過球面線性插值的方式計算掃描點(diǎn)所在時刻的激光雷達(dá)位姿,并應(yīng)用齊次坐標(biāo)系變化將兩個點(diǎn)云坐標(biāo)變換至同一坐標(biāo)系下。

輪式里程計(ODOM)方法是通過求解當(dāng)前幀激光雷達(dá)數(shù)據(jù)中每個點(diǎn)云對應(yīng)的坐標(biāo)系下的里程計位姿后,再根據(jù)求得的位姿把每個點(diǎn)云坐標(biāo)都轉(zhuǎn)化到同一坐標(biāo)系下(需要轉(zhuǎn)化兩次),最后重新封裝該幀點(diǎn)云數(shù)據(jù)。

慣性測量單元(IMU)和輪式里程計(ODOM)被統(tǒng)稱為傳感器輔助方法。

融合的方法

該方法是同時使用里程計和ICP的融合方案,會先利用里程計方法進(jìn)行矯正,去除大部分的運(yùn)動畸變,再通過ICP方法進(jìn)行匹配,得到里程計的誤差值,再把誤差值均攤到每個點(diǎn)云上,并重新對點(diǎn)云位置進(jìn)行修正。最后,再利用ICP方法進(jìn)行迭代,直至誤差收斂為止。

1.3 點(diǎn)云組幀

感知算法人員在完成點(diǎn)云的運(yùn)動畸變補(bǔ)償后,會發(fā)現(xiàn)一個問題:激光雷達(dá)發(fā)送的點(diǎn)云數(shù)據(jù)包中的點(diǎn)云數(shù)量其實(shí)非常少,完全無法用來進(jìn)行后續(xù)感知和定位層面的處理工作。

此時,感知算法人員就需要對這些數(shù)據(jù)包進(jìn)行點(diǎn)云組幀的處理。

關(guān)于點(diǎn)云組幀,某L4解決方案商的感知算法工程師說:“以單激光雷達(dá)為例,感知算法人員會把多個點(diǎn)云數(shù)據(jù)包疊加到同一幀上,讓這一幀上的點(diǎn)云數(shù)據(jù)能包含上萬個點(diǎn)云,以便后續(xù)感知和定位流程的處理。若車端有多個激光雷達(dá),感知算法人員會分別解析這幾個激光雷達(dá)的點(diǎn)云數(shù)據(jù)包,然后把解析后的點(diǎn)云數(shù)據(jù)集合在同一時刻上,讓其變成一個大的數(shù)據(jù)包。例如,技術(shù)人員會把車端多個激光雷達(dá)在t時刻的點(diǎn)云都匯集在一起,作為一幀點(diǎn)云數(shù)據(jù)來處理?!?/p>

1.4 外參變化

點(diǎn)云數(shù)據(jù)通過解析得到的點(diǎn)云坐標(biāo)系屬于激光雷達(dá)坐標(biāo)系,而在實(shí)際的自動駕駛技術(shù)應(yīng)用中,仍需要將激光雷達(dá)的坐標(biāo)系轉(zhuǎn)化為車輛的坐標(biāo)系,這個建立聯(lián)系的過程稱之為點(diǎn)云的外參變化。

由于激光雷達(dá)與車體是剛性連接,所以在車輛運(yùn)動過程中,兩者之間的相對姿態(tài)和位移是固定不變的,只需要建立兩者相對坐標(biāo)系之間的位置關(guān)系,通過旋轉(zhuǎn)或者平移的方式,就能將這兩個三維坐標(biāo)系統(tǒng)一到一個三維坐標(biāo)系下(也稱為全局坐標(biāo)系或世界坐標(biāo)系)。

1.5 濾波處理

在激光雷達(dá)獲取點(diǎn)云數(shù)據(jù)的過程中,由于受到產(chǎn)品自身系統(tǒng)、待測物體表面及掃描環(huán)境等因素的影響,點(diǎn)云數(shù)據(jù)中會不可避免地夾雜著一些噪點(diǎn)(離群點(diǎn)),需要將其直接剔除或者以平滑的方式進(jìn)行處理。這些噪點(diǎn)(離群點(diǎn))會在后續(xù)的點(diǎn)云處理環(huán)節(jié)中(如點(diǎn)云分割、特征提取、點(diǎn)云配準(zhǔn)等)讓模型結(jié)果產(chǎn)生一定的誤差。因此,在實(shí)際的點(diǎn)云處理流程中,感知人員會對點(diǎn)云進(jìn)行濾波處理。

噪點(diǎn)是指對模型處理無用的點(diǎn)云數(shù)據(jù)。

離群點(diǎn)是指遠(yuǎn)離主觀測區(qū)域的點(diǎn)云數(shù)據(jù)。

在與專家的訪談交流中,筆者了解到,在自動駕駛行業(yè)內(nèi),噪點(diǎn)一般包含了離群點(diǎn)。所以,后續(xù)的文章中,筆者將以噪點(diǎn)來統(tǒng)稱。

下表為筆者梳理的自動駕駛行業(yè)內(nèi)常見的濾波算法。

表:自動駕駛行業(yè)內(nèi)常見的濾波算法

02、感知功能層面的處理

在整個點(diǎn)云預(yù)處理工作完成后,感知算法人員會將點(diǎn)云數(shù)據(jù)分別進(jìn)行感知和定位層面的處理。

在感知層面的流程中,點(diǎn)云數(shù)據(jù)主要是用于3D目標(biāo)檢測,即自動駕駛系統(tǒng)需要識別檢測出車輛感知區(qū)域內(nèi)的障礙物,從而采取避障等措施。

在點(diǎn)云預(yù)處理工作完成后,感知層面的處理會有兩個分支:一個是應(yīng)用傳統(tǒng)的3D目標(biāo)檢測方法,包括點(diǎn)云分割、目標(biāo)物的聚類分析等;另一個是直接應(yīng)用深度學(xué)習(xí)模型來完成3D目標(biāo)檢測。

下文將分別拆解基于兩種不同方法下的點(diǎn)云3D目標(biāo)檢測流程。

2.1 基于傳統(tǒng)方法的感知數(shù)據(jù)處理

(1)地面點(diǎn)云分割

在進(jìn)行目標(biāo)檢測后,點(diǎn)云數(shù)據(jù)中會有很大一部分點(diǎn)云屬于地面點(diǎn)數(shù)據(jù),并呈現(xiàn)出一定的紋理狀,這會對后續(xù)目標(biāo)物的點(diǎn)云處理流程產(chǎn)生影響。

一方面,若不將這些地面點(diǎn)云數(shù)據(jù)進(jìn)行分割及去除,這些無效的點(diǎn)云數(shù)據(jù)就會對位于地面上的物體點(diǎn)云數(shù)據(jù)造成干擾,會降低目標(biāo)障礙物分割算法的準(zhǔn)確性和魯棒性;另一方面,由于點(diǎn)云數(shù)據(jù)量過大,這就會增加模型對計算量的需求。

所以,在進(jìn)行后續(xù)工作前,感知算法人員需要先對地面點(diǎn)云進(jìn)行過濾處理。

由于卷積神經(jīng)網(wǎng)絡(luò)模型一般會以滑窗的方式對每一塊局部區(qū)域提取特征,然后做分類回歸,所以深度學(xué)習(xí)的方法往往不需要預(yù)先分割出地面點(diǎn)云。在自動駕駛領(lǐng)域,考慮到硬件性能的占用、開發(fā)周期、模型成熟度等因素,感知算法人員一般會采用傳統(tǒng)算法來進(jìn)行地面點(diǎn)云分割。

筆者梳理了幾種常用的地面點(diǎn)分割方法:

平面柵格法

主要思路:平面柵格法通常是根據(jù)設(shè)定好的尺寸建立平面網(wǎng)格(也可以做多層網(wǎng)格或者三維體素),然后將原始點(diǎn)云投影到各自的網(wǎng)格中,對每個網(wǎng)格中的點(diǎn)云集合提取特征,比如平均高度、最大高度、高度差、密度等等。

技術(shù)亮點(diǎn):不考慮矢量特征,讓后續(xù)規(guī)劃控制能更易于實(shí)現(xiàn)。

存在的問題:當(dāng)激光雷達(dá)線束比較少的時候,比如16線激光雷達(dá)在采集道路數(shù)據(jù)時,車輛前方20米以外的地面上,能夠打到的激光點(diǎn)已經(jīng)比較少了,而且打到障礙物上的激光線束一般也只有一條。如果在柵格中采用高度特征進(jìn)行地面過濾,低矮的障礙物很容易會被當(dāng)成地面點(diǎn)過濾掉。

點(diǎn)云法向量

主要思路:點(diǎn)云的法向量是指通過設(shè)置點(diǎn)云的角度閾值來分割地面的點(diǎn)云,一般地面點(diǎn)云的法向量是垂直方向,只需要通過模型來求解點(diǎn)云法向量與地面法向量的夾角,并與設(shè)定好的閾值來作對比和分類。該方法需要其鄰域點(diǎn)做支持,而鄰域的大小一般由鄰域半徑值或臨近點(diǎn)個數(shù)來表示。過大的鄰域會抹平三維結(jié)構(gòu)細(xì)節(jié)使得法向量過于粗糙,而過小的鄰域由于包含了太少的點(diǎn)受噪聲干擾程度較強(qiáng)。

技術(shù)亮點(diǎn):該方法可以較好地提取出道路兩旁法向量突變的點(diǎn)云集合構(gòu)成路沿,從而配合柵格化將道路區(qū)域、非道路區(qū)域、障礙物進(jìn)行劃分。

存在的問題:

1)根據(jù)法向量方法的假設(shè),該方法一定要先對點(diǎn)云進(jìn)行校正,如果不進(jìn)行校正,那么很可能出現(xiàn)某一幀沒有地面點(diǎn)被分割出來的極端情況(激光雷達(dá)傾斜角度過大)。

2)法向量方法對于平臺類型障礙物(如路沿邊上的長方形花壇)生成的點(diǎn)無法有效區(qū)分。

模型擬合法-平面擬合(RANSAC)

主要思路:RANSAC平面擬合是指通過隨機(jī)選區(qū)的三個點(diǎn)云來建立平面方程,并將點(diǎn)云數(shù)據(jù)依次代入平面方程內(nèi),然后根據(jù)設(shè)置好的距離閾值來判定,該點(diǎn)是否為平面內(nèi)的點(diǎn)。例如,閾值范圍內(nèi)的點(diǎn)為內(nèi)點(diǎn),而閾值外的點(diǎn)為外點(diǎn)。迭代次數(shù)最多的平面方程即為地面方程,而方程內(nèi)的內(nèi)點(diǎn)為地面點(diǎn)集,反之為障礙物的點(diǎn)云集。

技術(shù)亮點(diǎn):當(dāng)數(shù)據(jù)中有大量的異常數(shù)據(jù)時,該方法也能高精度地估計模型參數(shù)——能從大規(guī)模點(diǎn)云數(shù)據(jù)中,更容易地估計出地面點(diǎn)云集。

存在的問題:

1)考慮到排水的因素,交通道路通常是中間凸起、兩邊低洼,類似于拱橋形狀。雖然曲率不大,但是通過隨機(jī)采樣的一致性算法計算地平面,可能會得到傾斜于一側(cè)的平面作為地面方程。

2)在上下坡的時候,由于地面非絕對平面,該方法計算出的地面方程,會出現(xiàn)把前方地面點(diǎn)集作為障礙物點(diǎn)的情況。

3)由于RANSAC是在點(diǎn)云空間隨機(jī)地取三個點(diǎn)構(gòu)建平面,如果場景中存在大塊墻面時,會出現(xiàn)將墻面作為地面方程的情況。

面元網(wǎng)格法

主要思路:基于面元的分割可以分為局部類型或者表面類型,常采用區(qū)域增長的方式進(jìn)行地面分割。其核心是基于點(diǎn)法線之間角度的比較,將滿足平滑約束的相鄰點(diǎn)合并在一起,以一簇點(diǎn)集的形式輸出,每簇點(diǎn)集被認(rèn)為是屬于相同平面。

技術(shù)亮點(diǎn):該方法能夠較好地應(yīng)對地面存在曲率的情況,對于比較平緩的曲面或者平面能夠達(dá)到較好的分割效果。

存在的問題:

1)實(shí)際道路中的噪聲點(diǎn)太多,直接使用區(qū)域增長的方式分割地面,會出現(xiàn)較多零星的地面點(diǎn)被當(dāng)成障礙物點(diǎn)云集合地情況。

2)區(qū)域增長算法的時耗較大,對于實(shí)時性要求較高的感知算法模塊,需要進(jìn)一步優(yōu)化。比如將平面的區(qū)域增長降為到邊緣,或者劃分區(qū)域,在小范圍內(nèi)進(jìn)行分割等等。

(2)目標(biāo)物的點(diǎn)云分割

在去除掉地面點(diǎn)云后,接下來感知算法人員就需要將目標(biāo)物點(diǎn)云進(jìn)行有效地分割、分塊,從而便于對目標(biāo)物進(jìn)行單獨(dú)處理,即點(diǎn)云分割。目標(biāo)障礙物的點(diǎn)云分割是根據(jù)空間、幾何和紋理等特征對點(diǎn)云進(jìn)行劃分。

筆者梳理了幾個常用的點(diǎn)云分割方法:

基于邊緣的方法

主要思路:基于邊緣的方法是指由物體的形狀是尤其邊緣來描述的,所以通過定位目標(biāo)物邊緣點(diǎn)云快速變化的點(diǎn),來尋找靠近目標(biāo)物邊緣區(qū)域的點(diǎn)并進(jìn)行分割。

技術(shù)亮點(diǎn):該方法采用了可重構(gòu)多環(huán)網(wǎng)絡(luò)的算法優(yōu)化機(jī)制,提高了算法運(yùn)行的效率。

存在的問題:

1)該方法較適用簡單場景(如低噪聲、均勻密度),不適用于擁有大量三維點(diǎn)云的數(shù)據(jù)集。

2)面對存在不連續(xù)邊緣的目標(biāo)物點(diǎn)云數(shù)據(jù),若不采用點(diǎn)云填充,就不能直接用于識別檢測。

基于區(qū)域增長的方法

主要思路:基于區(qū)域增長的方法是指通過使用鄰域信息來將具有相似屬性的附近點(diǎn)歸類,以獲得到分割區(qū)域,并區(qū)分出不同區(qū)域之間的差異性。該方法主要分為兩類:種子區(qū)域方法和非種子區(qū)域方法。其中,種子區(qū)域方法是通過選擇多個種子點(diǎn)來開始做分割,以這些種子點(diǎn)為起始點(diǎn),通過添加種子的鄰域點(diǎn)的方式逐漸形成點(diǎn)云區(qū)域;非種子區(qū)域方法是將所有點(diǎn)都分為一個區(qū)域,然后將其劃分為更小的區(qū)域。

技術(shù)亮點(diǎn):相比于邊緣的方法,該方法的分割準(zhǔn)確度會更高。

存在的問題:方法依賴于選取的起始種子點(diǎn)或者區(qū)域細(xì)分位置,若選取的不恰當(dāng),就會導(dǎo)致分割過度或不足等問題。

基于屬性的方法

主要思路:基于屬性的方法是先計算目標(biāo)物點(diǎn)云的屬性,例如距離、密度、水平或垂直方向的點(diǎn)云分布等,并以此來定義測量點(diǎn)之間的領(lǐng)域,然后將每個方向上的法向量的斜率和點(diǎn)鄰域的數(shù)據(jù)之差作為聚類的屬性。

技術(shù)亮點(diǎn):相比于前兩個方法,基于屬性的方法可以消除異常值和噪點(diǎn)的影響。

存在的問題:該方法依賴于點(diǎn)之間鄰域的定義和點(diǎn)云數(shù)據(jù)的點(diǎn)密度,在處理大量輸入點(diǎn)的多維屬性時,會導(dǎo)致模型對計算量的需求過大。

(3)目標(biāo)物聚類分析

在目標(biāo)物點(diǎn)云分割完后,感知算法人員就需要將點(diǎn)云圖中各個已分割的點(diǎn)云聚類成若干個整體,即把具有相似程度較高的點(diǎn)云組成一組,以便降低后續(xù)模型的計算量——這個過程就被稱為點(diǎn)云聚類。

常見的點(diǎn)云聚類方法如下:

K-means

主要思路:K-means 聚類算法是指將整個點(diǎn)云數(shù)據(jù)集分為 k 個具有某種統(tǒng)一特征的點(diǎn)云簇。首先,從每個點(diǎn)云簇中隨機(jī)選擇k個點(diǎn)作為點(diǎn)云簇的中心點(diǎn)。然后,對每個點(diǎn)云簇分別計算每個點(diǎn)云簇與上述k個點(diǎn)之間的實(shí)際距離,依據(jù)距離值最小的原則將其聚類到該點(diǎn)云簇。之后再對聚類的點(diǎn)云簇計算形心坐標(biāo),并更新點(diǎn)云簇中心點(diǎn)。最后,模型會重復(fù)上述步驟,直到點(diǎn)云簇中心點(diǎn)不再變化。

技術(shù)亮點(diǎn):準(zhǔn)確定性高、可處理較大數(shù)據(jù)量、運(yùn)算速度快。

存在的問題:該方法需要預(yù)先設(shè)定K值和初始聚類中心,實(shí)時性差。

DBSCAN

主要思路:DBSCAN通過引入密度的概念,即要求聚類空間中的一定區(qū)域內(nèi)所包含對象的數(shù)據(jù)量不小于某一給定閾值。該方法能夠在具有噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的簇,可將密度足夠大的相鄰區(qū)域連接,能夠有效地處理異常數(shù)據(jù),主要用于對空間數(shù)據(jù)的聚類。

技術(shù)亮點(diǎn):

1)可以聚類任意形狀點(diǎn)云

2)可以有效去除噪聲點(diǎn)

存在的問題:

1)對內(nèi)存資源消耗大

2)對處理器的要求高

3)需要預(yù)先設(shè)定聚類區(qū)域的半徑和觸發(fā)的閾值

歐式聚類

主要思路:歐式聚類(也稱為歐幾里得聚類)是指基于歐式距離聚類的方法,在激光雷達(dá)的點(diǎn)云數(shù)據(jù)中,同一個物體的點(diǎn)云簇中兩點(diǎn)之間的距離小于一定的值,而不同物體之間的點(diǎn)云簇之間的距離大于一定的值。歐式聚類算法就是根據(jù)此種原理,將歐幾里德距離小于設(shè)定距離閾值的點(diǎn)合并成一類,從而完成聚類過程。

技術(shù)亮點(diǎn):該方法運(yùn)算速度快,且具有良好通用性。

存在的問題:該方法需要預(yù)設(shè)固定距離的閾值,這會導(dǎo)致近處的目標(biāo)物聚類效果會較好,而遠(yuǎn)處的聚類會出現(xiàn)欠分割或者截斷的問題。

(4)匹配與跟蹤

在做完前面的部分后,感知算法人員基本上已經(jīng)可以從已處理完的數(shù)據(jù)上獲知這些點(diǎn)云具體代表了什么目標(biāo)物,而接下來需要做的就是對目標(biāo)物的匹配和跟蹤,即預(yù)測下一時刻,目標(biāo)物出現(xiàn)在哪個區(qū)域。在障礙物檢測中,匹配的精確度是后續(xù)多傳感器融合的基礎(chǔ)。

通常來說,匹配和跟蹤的算法流程是先將目標(biāo)預(yù)測的結(jié)果與測量的點(diǎn)云數(shù)據(jù)計算關(guān)聯(lián)矩陣,然后利用匈牙利算法(其核心原理是尋找增廣路徑,從而達(dá)成最大匹配)進(jìn)行匹配關(guān)系的確定,最后將點(diǎn)云數(shù)據(jù)分為匹配上的目標(biāo)和未匹配上的目標(biāo)兩類,將其分別保存,并為跟蹤做準(zhǔn)備。

2.2 基于深度學(xué)習(xí)的感知數(shù)據(jù)處理

在自動駕駛領(lǐng)域中,隨著點(diǎn)云的數(shù)據(jù)量越來越大,傳統(tǒng)的目標(biāo)檢測算法已經(jīng)無法滿足實(shí)際需求。筆者在與各個專家的交談后獲知,當(dāng)前點(diǎn)云3D目標(biāo)檢測主要采用了深度學(xué)習(xí)模型。

某主機(jī)廠感知算法工程師說:“在感知層面的目標(biāo)檢測中,點(diǎn)云在預(yù)處理完成后,就直接放入深度學(xué)習(xí)模型中,或者是先降采樣后再放入深度學(xué)習(xí)模型?!?/p>

常用的基于深度學(xué)習(xí)的目標(biāo)檢測方法:

PointNet

主要思路:PointNet首先為點(diǎn)云中的每一個點(diǎn)計算特征,然后通過一個與點(diǎn)云順序無關(guān)的操作將這些特征組合起來,得到屬于全體點(diǎn)云的特征,這個特征可以直接用于任務(wù)識別。

技術(shù)亮點(diǎn):

1)直接將點(diǎn)云數(shù)據(jù)輸入網(wǎng)絡(luò),而不是將其規(guī)范化;

2)對旋轉(zhuǎn)不變性和置換不變性的利用。

√旋轉(zhuǎn)不變性:所有的點(diǎn)做相同的變換(旋轉(zhuǎn)平移),不影響對形狀的表達(dá)。

√置換不變性:任意交換各點(diǎn)的位置,不影響對形狀的表達(dá)。

存在的問題:無法獲得局部特征,這使得PointNet方法很難對復(fù)雜場景進(jìn)行分析。

?圖:PointNet的網(wǎng)絡(luò)結(jié)構(gòu)

PointNet++

主要思路:PointNet++是基于PointNet方法得出,主要借鑒了CNN的多層感受野的思想。CNN通過分層不斷地使用卷積核掃描圖像上的像素并做內(nèi)積,使得越到后面的特征圖感受野越大,同時每個像素包含的信息也越多。PointNet++就是仿照了這樣的結(jié)構(gòu),先通過在整個點(diǎn)云的局部采樣并劃一個范圍,將里面的點(diǎn)作為局部的特征,用PointNet進(jìn)行一次特征提取。

技術(shù)亮點(diǎn):

1)沒有量化帶來的信息損失,也無需調(diào)節(jié)量化超參數(shù)。

2)忽略空白區(qū)域,避免了無效的計算。

存在的問題:

1)無法利用成熟的基于空間卷積的2D物體檢測算法。

2)雖然避免了無效計算,但是GPU對于點(diǎn)云的處理效率遠(yuǎn)低于對網(wǎng)格數(shù)據(jù)的處理效率。

?圖:PointNet(左側(cè)部分)與PointNet++(中間部分)的分割效果對比

?圖:PointNet++的網(wǎng)絡(luò)結(jié)構(gòu)

VoxelNet

主要思路:VoxelNet主要是講三維點(diǎn)云轉(zhuǎn)化為voxel結(jié)構(gòu),然后以鳥瞰圖的方式來處理這個結(jié)構(gòu)。此處的voxel結(jié)構(gòu)就是利用相同尺寸的立方體來劃分三維空間,其中每個立方體稱為voxel(體素)。

VoxelNet有兩個主要過程,第一個被稱為VFE(Voxel Feature Extraction)是voxel的特征提取過程,第二個是類似YOLO的目標(biāo)檢測過程。

技術(shù)亮點(diǎn):

1)可以直接在稀疏的點(diǎn)云數(shù)據(jù)上進(jìn)行任務(wù)檢測,并避免了人工特征工程帶來的信息瓶頸。

2)可以更有效地利用GPU的并行運(yùn)算優(yōu)勢。

存在的問題:VoxelNet對于數(shù)據(jù)表示(為適應(yīng)模型運(yùn)算而重建的一種新數(shù)據(jù)結(jié)構(gòu))比較低效,并且中間層的3D卷積對計算量的需求太大,導(dǎo)致其運(yùn)行速度只有大約2FPS(Frame Per Second),遠(yuǎn)低于實(shí)時性的要求。

圖:VoxelNet的網(wǎng)絡(luò)結(jié)構(gòu)

SECOND

主要思路:SECOND是一種基于VoxelNet方法優(yōu)化后的點(diǎn)云檢測方法,其網(wǎng)絡(luò)的整體結(jié)構(gòu)和實(shí)現(xiàn)大部分與原先的VoxelNet相近,同時在VoxelNet的基礎(chǔ)上改進(jìn)了中間層的3D卷積,采用稀疏卷積來完成,提高了訓(xùn)練的效率和網(wǎng)絡(luò)推理的速度。同時,SECOND還提出了一個新的損失函數(shù)與點(diǎn)云數(shù)據(jù)增強(qiáng)策略。SECOND網(wǎng)絡(luò)結(jié)構(gòu)主要由三部分組成:VFE特征提取階段,稀疏卷積層,RPN網(wǎng)絡(luò)。

技術(shù)亮點(diǎn):利用稀疏卷積提高了模型的推理速度。

存在的問題:雖然SECOND相比VoxelNet來說,其速度有所提升,但仍然保留了3D卷積。

圖:SECOND的網(wǎng)絡(luò)結(jié)構(gòu)

PointPillar

主要思路:PointPillar把落到每個網(wǎng)格內(nèi)的點(diǎn)直接疊放在一起,形象地稱其為柱子(Pillar),然后利用與PointNet相似的方式來學(xué)習(xí)特征,最后再把學(xué)到的特征向量映射回網(wǎng)格坐標(biāo)上,得到與圖像類似的數(shù)據(jù)。

技術(shù)亮點(diǎn):

1)通過學(xué)習(xí)特征而不是依賴固定的編碼器,PointPillars可以利用點(diǎn)云表示的全部信息。

2)通過對柱而不是體素進(jìn)行操作,不需要手動調(diào)整垂直方向的裝箱。

3)網(wǎng)絡(luò)中只使用2D卷積,不使用3D卷積,對計算量的需求小、運(yùn)行高效。

4)無需手動調(diào)整即可使用不同的點(diǎn)云配置。

存在的問題:點(diǎn)特征的學(xué)習(xí)被限制在網(wǎng)格內(nèi),無法有效地提取相鄰區(qū)域的信息。

圖:PointPillar的網(wǎng)絡(luò)結(jié)構(gòu)

PCT

主要思路:PCT主要是利用Transformer固有的順序不變性,避免定義點(diǎn)云數(shù)據(jù)的順序,并通過注意力機(jī)制進(jìn)行特征學(xué)習(xí)。網(wǎng)絡(luò)結(jié)構(gòu)整體分為三部分:輸入嵌入、注意力層和點(diǎn)云的分類與分割。

技術(shù)亮點(diǎn):

1)PCT具有固有的置換不變性,更適合點(diǎn)云學(xué)習(xí)。

2)相比于主流的PointNet網(wǎng)絡(luò),PCT的分割邊緣更加清晰。

圖:PointNet(左側(cè)部分)與PCT(中間部分)的分割效果對比

存在的問題:PCT是一種有效的全局特征提取網(wǎng)絡(luò),然而它忽略了點(diǎn)云深度學(xué)習(xí)中同樣重要的局部鄰域信息。

圖:PCT網(wǎng)絡(luò)結(jié)構(gòu)

雖然當(dāng)前深度學(xué)習(xí)已經(jīng)在自動駕駛行業(yè)內(nèi)被廣泛應(yīng)用,但是深度學(xué)習(xí)在點(diǎn)云數(shù)據(jù)處理中也會遇到一些挑戰(zhàn)。

一方面,點(diǎn)云作為場景中點(diǎn)的位置具有稀疏和非結(jié)構(gòu)化的性質(zhì),因此它們的密度和數(shù)量都隨著場景中對象的變化而變化。另一方面,由于自動駕駛汽車行駛時需要非??焖俚刈龀龇磻?yīng),因此必須實(shí)時執(zhí)行物體檢測,而這意味著檢測網(wǎng)絡(luò)必須在兩次掃描之間的時間間隔內(nèi)提供計算結(jié)果。

所以,深度學(xué)習(xí)雖然可用、好用,但不可盡用。

許建說:“深度學(xué)習(xí)等AI算法目前還做不到100%的精準(zhǔn)識別和檢測,容易導(dǎo)致目標(biāo)漏檢。AI算法是3D點(diǎn)云感知的非常重要的手段,但是不能只靠AI。通過綜合應(yīng)用AI算法和傳統(tǒng)算法,可以解決數(shù)據(jù)樣本空間的不完備性問題,從而避免目標(biāo)漏檢情況?!?/p>

03、定位功能層面的處理

3.1 特征提取

自動駕駛車輛在路上行駛時,其實(shí)車輛是不知道自己在哪的,所以用點(diǎn)云數(shù)據(jù)做定位的第一步就是先要讓自動駕駛車輛知道“我在哪里”。

此時,感知算法人員就需要先提取周邊場景的目標(biāo)物特征,并通過這些特征和所獲取到的相對距離信息來建立一個小地圖,知道車輛的相對初始位置。

點(diǎn)云特征提取往往是實(shí)時的,這會導(dǎo)致點(diǎn)云的數(shù)據(jù)量會非常大,而現(xiàn)有量產(chǎn)車的硬件性能有限。所以,為了減少點(diǎn)云數(shù)據(jù)的計算量,點(diǎn)云數(shù)據(jù)在被提取特征時,一般會被優(yōu)先提取一些較為明顯的特征,比如物體的輪廓信息。

某主機(jī)廠感知算法工程師說:“激光雷達(dá)不會像視覺一樣,視覺會有深度的語義信息,而激光雷達(dá)為了減少計算量,只會提取目標(biāo)物的特征,主要是提取目標(biāo)物的“線面角”特征。比如,電線桿就是線的特征,路面就是面的特征,建筑物的角點(diǎn)就是角的特征?!?/p>

3.2 地圖匹配?

在提取完周圍目標(biāo)物的特征后,感知算法人員就需要根據(jù)這些特征來進(jìn)行點(diǎn)云地圖匹配,來獲取各個點(diǎn)云之間的相對位姿。點(diǎn)云地圖匹配一般可分為幀間匹配和高精地圖匹配。

幀間匹配,也叫子圖匹配,指將前后幀上有相同特征的點(diǎn)云做匹配,最后得到一張局部小地圖。

高精地圖匹配,指將優(yōu)化后的點(diǎn)云與高精地圖做匹配。

在自動駕駛行業(yè)內(nèi),自動駕駛方案商或者主機(jī)廠都會應(yīng)用這兩種不同方案,但常用的匹配方案還是以幀間匹配為主。

某主機(jī)廠感知算法工程師說:“只有L4的無人駕駛項目或許是基于高精地圖定位方案的地圖匹配,而主機(jī)廠主要做的是幀間匹配,因為量產(chǎn)車的定位方案不可能都基于高精地圖。另外,高精地圖匹配的計算量很大,在應(yīng)用時必須先做降采樣的工作。”

3.3 位姿優(yōu)化

上文也提到,點(diǎn)云數(shù)據(jù)在做完匹配后,可以獲取各點(diǎn)云間的相對位姿,而相對位姿的準(zhǔn)確性會影響構(gòu)建地圖的準(zhǔn)確性,所以需要對點(diǎn)云的相對位姿做一定的優(yōu)化。

通常來說,相對位姿的不準(zhǔn)確主要是由于一些不可控因素造成的,如點(diǎn)云被物體遮擋或者激光雷達(dá)視場角的限制。點(diǎn)云的位姿優(yōu)化通過一定的點(diǎn)云坐標(biāo)系的剛體變化(旋轉(zhuǎn)或平移)來得到最優(yōu)相對位姿。

參考文獻(xiàn)

【1】激光雷達(dá)(LiDAR)點(diǎn)云數(shù)據(jù)知多少?

https://blog.csdn.net/OpenDataLab/article/details/124962277

【2】學(xué)習(xí)筆記:點(diǎn)云庫PCL(Point Cloud Library )介紹

https://blog.csdn.net/jeffliu123/article/details/126137566

【3】點(diǎn)云概念與點(diǎn)云處理

https://blog.csdn.net/hongju_tang/article/details/85008888

【4】一文總結(jié)激光雷達(dá)基本性能指標(biāo)

http://www.360doc.com/content/20/0813/07/71135856_965448273.shtml

【5】激光點(diǎn)云預(yù)處理

https://zhuanlan.zhihu.com/p/455810371

【6】激光雷達(dá)運(yùn)動補(bǔ)償方法

https://zhuanlan.zhihu.com/p/470795318

【7】激光雷達(dá)標(biāo)定

https://blog.csdn.net/qq_39032096/category_11512741.html

【8】基于3D點(diǎn)云的目標(biāo)檢測概述

https://zhuanlan.zhihu.com/p/479539638

【9】自動駕駛中的激光雷達(dá)目標(biāo)檢測(下)

https://mp.weixin.qq.com/s/3H6qCDO-2mOP3HjGKnmLzw

【10】三維點(diǎn)云分割綜述(中)

https://mp.weixin.qq.com/s?__biz=MzI0MDYxMDk0Ng%3D%3D&chksm=e9196bc2de6ee2d4220fbf4fca46ea676eadac19a4e17b5b3d4dd9c0aa772c0b57db57f5a044&idx=1&mid=2247487535&scene=21&sn=1c6687b0a7c6df60dc0bd902676c0ed0#wechat_redirect

【11】應(yīng)用于無人駕駛車輛的點(diǎn)云聚類算法研究進(jìn)展

https://mp.weixin.qq.com/s?__biz=MzI0MjcxNDQwNQ==&mid=2247488019&idx=1&sn=be3089b2510cfb12b2a955990f9c7e3b&chksm=e9794059de0ec94fb9559cfd011c173424586de115a943376c094e6572af5dcf74121239a009&scene=27

【12】基于三維激光雷達(dá)的障礙物檢測與跟蹤

https://mp.weixin.qq.com/s/ULDIkGSUfVp3OwWgxR2A9g

【13】自動駕駛?- 濾波算法

https://blog.csdn.net/limeigui/article/details/127656052

相關(guān)推薦

電子產(chǎn)業(yè)圖譜