隨著激光雷達(dá)的上車數(shù)量的不斷攀升,如何用好激光雷達(dá)成為了重中之重,而用好激光雷達(dá)的關(guān)鍵點(diǎn)之一就在于處理好點(diǎn)云數(shù)據(jù)。
激光點(diǎn)云指的是由三維激光雷達(dá)設(shè)備掃描得到的空間點(diǎn)的數(shù)據(jù)集,每一個(gè)點(diǎn)云都包含了三維坐標(biāo)(XYZ)和激光反射強(qiáng)度(Intensity),其中強(qiáng)度信息會(huì)與目標(biāo)物表面材質(zhì)與粗糙度、激光入射角度、激光波長(zhǎng)以及激光雷達(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ā)射激光信號(hào),然后收集反射回來的激光信號(hào)得來的,并通過光速、激光從發(fā)射到返回的時(shí)間等信息來測(cè)得目標(biāo)物的距離信息,再結(jié)合IMU、里程計(jì)、GNSS等信息計(jì)算出前方目標(biāo)物的三維坐標(biāo)信息和距離信息。
此外,在點(diǎn)云的采集和分析過程中,感知算法人員需要根據(jù)車載激光雷達(dá)的特點(diǎn)與工作原理,并結(jié)合激光雷達(dá)的角分辨率、視場(chǎng)角等相關(guān)參數(shù),才能更好地利用點(diǎn)云。
那么,激光雷達(dá)點(diǎn)云在車端的處理環(huán)節(jié)中,具體有哪些處理過程和方法?又如何優(yōu)化?
此后,為了驗(yàn)證這些問題,筆者先后訪談了圖達(dá)通算法負(fù)責(zé)人許建博士和系統(tǒng)及應(yīng)用負(fù)責(zé)人Leon、上汽高級(jí)經(jīng)理殷瑋、縱目科技感知算法工程師湯強(qiáng)、禾賽科技的專家等。在此,筆者感謝各路專家給予的支持,并整理出如下系列的文章,以供讀者參閱。
以下為激光點(diǎn)云處理系列文章的第一篇內(nèi)容。
激光雷達(dá)點(diǎn)云處理的具體流程
聊完何謂點(diǎn)云及其特征后,下文將繼續(xù)分析激光雷達(dá)點(diǎn)云在自動(dòng)駕駛中的處理流程。在此之前,有兩點(diǎn)需要說明。
其一,激光雷達(dá)點(diǎn)云被用于感知和定位時(shí),點(diǎn)云會(huì)先完成預(yù)處理,然后按照不同用途進(jìn)行不同的處理,并在點(diǎn)云的應(yīng)用細(xì)節(jié)上也會(huì)不同。
湯強(qiáng)說:“激光雷達(dá)用于定位的話,算法模型會(huì)要求點(diǎn)云的數(shù)據(jù)量盡可能多,并且區(qū)別于感知,定位還需要道路數(shù)據(jù)。如車道線或地標(biāo),它們對(duì)于激光的反射率和普通路面的反射率是不同的,激光雷達(dá)通過這種方式來獲取路面信息的數(shù)據(jù)。激光雷達(dá)用于感知的話,它會(huì)有一個(gè)預(yù)處理的過程,會(huì)確定一個(gè)ROI范圍,隨后用這一區(qū)域的點(diǎn)云數(shù)據(jù)來完成后續(xù)的檢測(cè)?!?/p>
其二,每家企業(yè)在點(diǎn)云的具體應(yīng)用過程中,還會(huì)根據(jù)各自技術(shù)方案與應(yīng)用場(chǎng)景不同,會(huì)存在些許處理流程上的差異,但大部分處理流程皆相同。
為了更詳細(xì)地闡述點(diǎn)云的處理流程,筆者結(jié)合專家訪談的內(nèi)容與公開信息,梳理出激光雷達(dá)點(diǎn)云在自動(dòng)駕駛應(yīng)用中的普遍流程。
圖:激光點(diǎn)云的處理流程
01 點(diǎn)云預(yù)處理層面
1.1原始點(diǎn)云數(shù)據(jù)的接收與解析
(1)點(diǎn)云數(shù)據(jù)的接收
激光雷達(dá)的原始點(diǎn)云數(shù)據(jù)都會(huì)被存放在一個(gè)數(shù)據(jù)包里(pcap),此時(shí)數(shù)據(jù)包里面的數(shù)據(jù)都是一連串的字節(jié)符號(hào),無法直接使用。
以Velodyne的16線激光雷達(dá)為例,原始點(diǎn)云數(shù)據(jù)的接收主要是通過UDP(用戶數(shù)據(jù)報(bào)協(xié)議)的形式向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。具體來說,在激光雷達(dá)的web端進(jìn)行設(shè)置或通過命令行進(jìn)行設(shè)置后,技術(shù)人員會(huì)在接收端匹配激光雷達(dá)的IP地址與自身的UDP端口號(hào),從而即可接收原始點(diǎn)云數(shù)據(jù)。
從數(shù)據(jù)的內(nèi)容來看,該型號(hào)的激光雷達(dá)在垂直方向上(-15°到+15°)有16線的激光束,其每幀的數(shù)據(jù)長(zhǎng)度固定為1248字節(jié),這些字節(jié)包括前42字節(jié)的前數(shù)據(jù)包標(biāo)識(shí)、12組數(shù)據(jù)包、4字節(jié)時(shí)間戳和最后兩字節(jié)雷達(dá)型號(hào)參數(shù)。
圖:Velodyne-16激光雷達(dá)每一幀的點(diǎn)云數(shù)據(jù)情況
(數(shù)據(jù)來源:《Velodyne VLP-16激光雷達(dá)數(shù)據(jù)格式解析》)
每個(gè)數(shù)據(jù)包中的數(shù)據(jù)都包含了激光光束的旋轉(zhuǎn)角度、距離值、反射強(qiáng)度的信息。例如,“B6 07”代表了激光雷達(dá)的探測(cè)距離,“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)云的一種存儲(chǔ)格式,pcd文件主要是由笛卡爾坐標(biāo)(x,y,z)和強(qiáng)度值i組成的列表,即每個(gè)點(diǎn)云都會(huì)附帶獨(dú)有的三維坐標(biāo)系和能量反射強(qiáng)度。
在這個(gè)坐標(biāo)系中,x軸指向汽車的前部,y軸指向汽車的左側(cè)。由于這個(gè)坐標(biāo)系采用右手定則,坐標(biāo)系z(mì)軸指向汽車上方。
圖:點(diǎn)云pcd坐標(biāo)
(數(shù)據(jù)來源:《學(xué)習(xí)筆記:點(diǎn)云庫PCL介紹》)
為了闡述點(diǎn)云數(shù)據(jù)的解析過程,筆者還是以上文Velodyne-16激光雷達(dá)的某幀點(diǎn)云數(shù)據(jù)包為例,并根據(jù)公開信息梳理如下。
第一步,計(jì)算激光線的旋轉(zhuǎn)角度值。
例如,上圖數(shù)據(jù)包前一部分的第一行的旋轉(zhuǎn)角度為0xE0、0x63。
a)反轉(zhuǎn)兩個(gè)字節(jié)變成十六進(jìn)制63 E0
b)把63 E0變成無符號(hào)的十進(jìn)制為25568
c)再把25568除以100得到255.68,那么得到的值255.68就是當(dāng)前的旋轉(zhuǎn)角度值
第二步,計(jì)算16線激光分別測(cè)得的距離。
例如,上圖數(shù)據(jù)包前一部分的第一個(gè)激光線的距離,其值為“B6 07 2A”,其中“ B6 07”為距離“2A”為反射強(qiáng)度。
a)反轉(zhuǎn)兩個(gè)距離字節(jié)“B6 07”,將其變成“07 B6”
b)把“07 B6”變成無符號(hào)的十進(jìn)制為1974
c)由于該型號(hào)激光雷達(dá)的分辨率為2.0mm,所以激光束測(cè)得的目標(biāo)物距離為1974*2=3948mm
d)將3948mm轉(zhuǎn)化為米計(jì)量的單位,即3.948m
第三步,獲得該幀的時(shí)間戳和激光雷達(dá)型號(hào)參數(shù)。
例如,上圖數(shù)據(jù)包后一部分的最后六個(gè)字節(jié)的數(shù)據(jù)“6D 69 94 0F 37 22”。
a)前四個(gè)字節(jié)的數(shù)據(jù)“6D 69 94 0F”為該幀的時(shí)間戳,然后反轉(zhuǎn)順序“0F 94 69 6D”
b)將“0F 94 69 6D”轉(zhuǎn)換為十進(jìn)制的值261384557微秒(μs)
c)把261384557除以1000000可獲得當(dāng)前的時(shí)間,即261.384557秒(s)
d)后兩個(gè)字節(jié)“37 22”表示雷達(dá)的型號(hào)和參數(shù)
第四步,把角度和距離信息轉(zhuǎn)化為三維坐標(biāo)XYZ值。
三維坐標(biāo)XYZ值可通過旋轉(zhuǎn)角度α(已在第一步中求得)、垂直角度ω(每束激光線對(duì)應(yīng)的固定值)和距離值R(已在第二步中求得)來綜合求出,具體的坐標(biāo)換算如下圖所示。
圖:目標(biāo)物點(diǎn)云的三維坐標(biāo)計(jì)算
(數(shù)據(jù)來源:《Velodyne VLP-16激光雷達(dá)數(shù)據(jù)格式解析》)
1.2運(yùn)動(dòng)畸變補(bǔ)償
運(yùn)動(dòng)畸變是指在一幀時(shí)間內(nèi),激光雷達(dá)或者其載體在發(fā)生運(yùn)動(dòng)后,產(chǎn)生的點(diǎn)云位置不一樣的問題。
要理解運(yùn)動(dòng)畸變補(bǔ)償,我們首先要知道自動(dòng)駕駛車端的激光雷達(dá)點(diǎn)云為什么會(huì)產(chǎn)生運(yùn)動(dòng)畸變。
其實(shí),激光雷達(dá)發(fā)射的一幀激光點(diǎn)云會(huì)由多個(gè)激光點(diǎn)組成,而這些激光點(diǎn)云是由掃描器件經(jīng)過一次掃描后才形成的。在靜止的場(chǎng)景中時(shí),車輛處于靜止?fàn)顟B(tài)且場(chǎng)景中的目標(biāo)物也處于相對(duì)靜止?fàn)顟B(tài),那么采集到的一幀點(diǎn)云是沒有畸變的,每條激光線束最終會(huì)形成一個(gè)閉合的圓形。
圖:靜止?fàn)顟B(tài)下的車輛點(diǎn)云不產(chǎn)生畸變
在運(yùn)動(dòng)場(chǎng)景下,如車輛高速行駛或者轉(zhuǎn)彎時(shí),一幀點(diǎn)云中的起始點(diǎn)云和終止點(diǎn)云只能在不同坐標(biāo)系下獲得測(cè)量結(jié)果,這便導(dǎo)致了三維環(huán)境信息產(chǎn)生了畸變。如下圖所示,當(dāng)車輛在運(yùn)動(dòng)過程中,車端上的激光雷達(dá)在掃描完一圈后,在最后一束激光照射到目標(biāo)物時(shí),跟第一束激光照射到目標(biāo)時(shí)相比,目標(biāo)物的空間位置已發(fā)生了相對(duì)位移——該物體在兩個(gè)不同時(shí)刻的點(diǎn)云,顯示在坐標(biāo)系中的信息是不同的。
?圖:目標(biāo)物在不同時(shí)刻被激光照射到的情況
運(yùn)動(dòng)畸變補(bǔ)償就是為了解決上述問題——把激光在采集過程中的運(yùn)動(dòng)軌跡計(jì)算出來,并在對(duì)應(yīng)的激光點(diǎn)云上補(bǔ)償這部分運(yùn)動(dòng)位移帶來的變化,將同一幀的點(diǎn)云統(tǒng)一到同一時(shí)刻的坐標(biāo)系下。
為了進(jìn)一步解釋運(yùn)動(dòng)畸變補(bǔ)償,某主機(jī)廠感知算法工程師舉例說:“比如,若車端配有IMU或者輪式里程計(jì),感知算法人員就可以通過IMU和輪式里程計(jì)(或者直接用IMU)的方式,推算出0.1秒內(nèi)車是怎么運(yùn)動(dòng)的,然后利用運(yùn)動(dòng)模型來做運(yùn)動(dòng)畸變補(bǔ)償?!?/p>
常見的運(yùn)動(dòng)畸變補(bǔ)償?shù)姆椒ǎ?/p>
純估計(jì)方法(ICP/VICP)
迭代最近點(diǎn)(ICP)方法是采用ICP算法來匹配兩個(gè)點(diǎn)云,通過不斷地算法迭代后,將點(diǎn)云之間的誤差縮至最小。
VICP方法是ICP算法的變種形式,模型假設(shè)車輛是在勻速運(yùn)動(dòng),在進(jìn)行匹配點(diǎn)云的同時(shí)估計(jì)車輛的自身速度。
迭代最近點(diǎn)(ICP)和VICP被統(tǒng)稱為“純估計(jì)方法”。
傳感器輔助方法(IMU/ODOM)
慣性測(cè)量單元(IMU)方法是在IMU隊(duì)列中查找相鄰兩幀IMU的數(shù)據(jù),然后通過球面線性插值的方式計(jì)算掃描點(diǎn)所在時(shí)刻的激光雷達(dá)位姿,并應(yīng)用齊次坐標(biāo)系變化將兩個(gè)點(diǎn)云坐標(biāo)變換至同一坐標(biāo)系下。
輪式里程計(jì)(ODOM)方法是通過求解當(dāng)前幀激光雷達(dá)數(shù)據(jù)中每個(gè)點(diǎn)云對(duì)應(yīng)的坐標(biāo)系下的里程計(jì)位姿后,再根據(jù)求得的位姿把每個(gè)點(diǎn)云坐標(biāo)都轉(zhuǎn)化到同一坐標(biāo)系下(需要轉(zhuǎn)化兩次),最后重新封裝該幀點(diǎn)云數(shù)據(jù)。
慣性測(cè)量單元(IMU)和輪式里程計(jì)(ODOM)被統(tǒng)稱為傳感器輔助方法。
融合的方法
該方法是同時(shí)使用里程計(jì)和ICP的融合方案,會(huì)先利用里程計(jì)方法進(jìn)行矯正,去除大部分的運(yùn)動(dòng)畸變,再通過ICP方法進(jìn)行匹配,得到里程計(jì)的誤差值,再把誤差值均攤到每個(gè)點(diǎn)云上,并重新對(duì)點(diǎn)云位置進(jìn)行修正。最后,再利用ICP方法進(jìn)行迭代,直至誤差收斂為止。
1.3 點(diǎn)云組幀
感知算法人員在完成點(diǎn)云的運(yùn)動(dòng)畸變補(bǔ)償后,會(huì)發(fā)現(xiàn)一個(gè)問題:激光雷達(dá)發(fā)送的點(diǎn)云數(shù)據(jù)包中的點(diǎn)云數(shù)量其實(shí)非常少,完全無法用來進(jìn)行后續(xù)感知和定位層面的處理工作。
此時(shí),感知算法人員就需要對(duì)這些數(shù)據(jù)包進(jìn)行點(diǎn)云組幀的處理。
關(guān)于點(diǎn)云組幀,某L4解決方案商的感知算法工程師說:“以單激光雷達(dá)為例,感知算法人員會(huì)把多個(gè)點(diǎn)云數(shù)據(jù)包疊加到同一幀上,讓這一幀上的點(diǎn)云數(shù)據(jù)能包含上萬個(gè)點(diǎn)云,以便后續(xù)感知和定位流程的處理。若車端有多個(gè)激光雷達(dá),感知算法人員會(huì)分別解析這幾個(gè)激光雷達(dá)的點(diǎn)云數(shù)據(jù)包,然后把解析后的點(diǎn)云數(shù)據(jù)集合在同一時(shí)刻上,讓其變成一個(gè)大的數(shù)據(jù)包。例如,技術(shù)人員會(huì)把車端多個(gè)激光雷達(dá)在t時(shí)刻的點(diǎn)云都匯集在一起,作為一幀點(diǎn)云數(shù)據(jù)來處理。”
1.4 外參變化
點(diǎn)云數(shù)據(jù)通過解析得到的點(diǎn)云坐標(biāo)系屬于激光雷達(dá)坐標(biāo)系,而在實(shí)際的自動(dòng)駕駛技術(shù)應(yīng)用中,仍需要將激光雷達(dá)的坐標(biāo)系轉(zhuǎn)化為車輛的坐標(biāo)系,這個(gè)建立聯(lián)系的過程稱之為點(diǎn)云的外參變化。
由于激光雷達(dá)與車體是剛性連接,所以在車輛運(yùn)動(dòng)過程中,兩者之間的相對(duì)姿態(tài)和位移是固定不變的,只需要建立兩者相對(duì)坐標(biāo)系之間的位置關(guān)系,通過旋轉(zhuǎn)或者平移的方式,就能將這兩個(gè)三維坐標(biāo)系統(tǒng)一到一個(gè)三維坐標(biāo)系下(也稱為全局坐標(biāo)系或世界坐標(biāo)系)。
1.5 濾波處理
在激光雷達(dá)獲取點(diǎn)云數(shù)據(jù)的過程中,由于受到產(chǎn)品自身系統(tǒng)、待測(cè)物體表面及掃描環(huán)境等因素的影響,點(diǎn)云數(shù)據(jù)中會(huì)不可避免地夾雜著一些噪點(diǎn)(離群點(diǎn)),需要將其直接剔除或者以平滑的方式進(jìn)行處理。這些噪點(diǎn)(離群點(diǎn))會(huì)在后續(xù)的點(diǎn)云處理環(huán)節(jié)中(如點(diǎn)云分割、特征提取、點(diǎn)云配準(zhǔn)等)讓模型結(jié)果產(chǎn)生一定的誤差。因此,在實(shí)際的點(diǎn)云處理流程中,感知人員會(huì)對(duì)點(diǎn)云進(jìn)行濾波處理。
噪點(diǎn)是指對(duì)模型處理無用的點(diǎn)云數(shù)據(jù)。
離群點(diǎn)是指遠(yuǎn)離主觀測(cè)區(qū)域的點(diǎn)云數(shù)據(jù)。
在與專家的訪談交流中,筆者了解到,在自動(dòng)駕駛行業(yè)內(nèi),噪點(diǎn)一般包含了離群點(diǎn)。所以,后續(xù)的文章中,筆者將以噪點(diǎn)來統(tǒng)稱。
下表為筆者梳理的自動(dòng)駕駛行業(yè)內(nèi)常見的濾波算法。
表:自動(dòng)駕駛行業(yè)內(nèi)常見的濾波算法
02 感知功能層面的處理
在整個(gè)點(diǎn)云預(yù)處理工作完成后,感知算法人員會(huì)將點(diǎn)云數(shù)據(jù)分別進(jìn)行感知和定位層面的處理。
在感知層面的流程中,點(diǎn)云數(shù)據(jù)主要是用于3D目標(biāo)檢測(cè),即自動(dòng)駕駛系統(tǒng)需要識(shí)別檢測(cè)出車輛感知區(qū)域內(nèi)的障礙物,從而采取避障等措施。
在點(diǎn)云預(yù)處理工作完成后,感知層面的處理會(huì)有兩個(gè)分支:一個(gè)是應(yīng)用傳統(tǒng)的3D目標(biāo)檢測(cè)方法,包括點(diǎn)云分割、目標(biāo)物的聚類分析等;另一個(gè)是直接應(yīng)用深度學(xué)習(xí)模型來完成3D目標(biāo)檢測(cè)。
下文將分別拆解基于兩種不同方法下的點(diǎn)云3D目標(biāo)檢測(cè)流程。
2.1 基于傳統(tǒng)方法的感知數(shù)據(jù)處理
(1)地面點(diǎn)云分割
在進(jìn)行目標(biāo)檢測(cè)后,點(diǎn)云數(shù)據(jù)中會(huì)有很大一部分點(diǎn)云屬于地面點(diǎn)數(shù)據(jù),并呈現(xiàn)出一定的紋理狀,這會(huì)對(duì)后續(xù)目標(biāo)物的點(diǎn)云處理流程產(chǎn)生影響。
一方面,若不將這些地面點(diǎn)云數(shù)據(jù)進(jìn)行分割及去除,這些無效的點(diǎn)云數(shù)據(jù)就會(huì)對(duì)位于地面上的物體點(diǎn)云數(shù)據(jù)造成干擾,會(huì)降低目標(biāo)障礙物分割算法的準(zhǔn)確性和魯棒性;另一方面,由于點(diǎn)云數(shù)據(jù)量過大,這就會(huì)增加模型對(duì)計(jì)算量的需求。
所以,在進(jìn)行后續(xù)工作前,感知算法人員需要先對(duì)地面點(diǎn)云進(jìn)行過濾處理。
由于卷積神經(jīng)網(wǎng)絡(luò)模型一般會(huì)以滑窗的方式對(duì)每一塊局部區(qū)域提取特征,然后做分類回歸,所以深度學(xué)習(xí)的方法往往不需要預(yù)先分割出地面點(diǎn)云。在自動(dòng)駕駛領(lǐng)域,考慮到硬件性能的占用、開發(fā)周期、模型成熟度等因素,感知算法人員一般會(huì)采用傳統(tǒng)算法來進(jìn)行地面點(diǎn)云分割。
筆者梳理了幾種常用的地面點(diǎn)分割方法:
平面柵格法
主要思路:平面柵格法通常是根據(jù)設(shè)定好的尺寸建立平面網(wǎng)格(也可以做多層網(wǎng)格或者三維體素),然后將原始點(diǎn)云投影到各自的網(wǎng)格中,對(duì)每個(gè)網(wǎng)格中的點(diǎn)云集合提取特征,比如平均高度、最大高度、高度差、密度等等。
技術(shù)亮點(diǎn):不考慮矢量特征,讓后續(xù)規(guī)劃控制能更易于實(shí)現(xiàn)。
存在的問題:當(dāng)激光雷達(dá)線束比較少的時(shí)候,比如16線激光雷達(dá)在采集道路數(shù)據(jù)時(shí),車輛前方20米以外的地面上,能夠打到的激光點(diǎn)已經(jīng)比較少了,而且打到障礙物上的激光線束一般也只有一條。如果在柵格中采用高度特征進(jìn)行地面過濾,低矮的障礙物很容易會(huì)被當(dāng)成地面點(diǎn)過濾掉。
點(diǎn)云法向量
主要思路:點(diǎn)云的法向量是指通過設(shè)置點(diǎn)云的角度閾值來分割地面的點(diǎn)云,一般地面點(diǎn)云的法向量是垂直方向,只需要通過模型來求解點(diǎn)云法向量與地面法向量的夾角,并與設(shè)定好的閾值來作對(duì)比和分類。該方法需要其鄰域點(diǎn)做支持,而鄰域的大小一般由鄰域半徑值或臨近點(diǎn)個(gè)數(shù)來表示。過大的鄰域會(huì)抹平三維結(jié)構(gòu)細(xì)節(jié)使得法向量過于粗糙,而過小的鄰域由于包含了太少的點(diǎn)受噪聲干擾程度較強(qiáng)。
技術(shù)亮點(diǎn):該方法可以較好地提取出道路兩旁法向量突變的點(diǎn)云集合構(gòu)成路沿,從而配合柵格化將道路區(qū)域、非道路區(qū)域、障礙物進(jìn)行劃分。
存在的問題:
1)根據(jù)法向量方法的假設(shè),該方法一定要先對(duì)點(diǎn)云進(jìn)行校正,如果不進(jìn)行校正,那么很可能出現(xiàn)某一幀沒有地面點(diǎn)被分割出來的極端情況(激光雷達(dá)傾斜角度過大)。
2)法向量方法對(duì)于平臺(tái)類型障礙物(如路沿邊上的長(zhǎng)方形花壇)生成的點(diǎn)無法有效區(qū)分。
模型擬合法-平面擬合(RANSAC)
主要思路:RANSAC平面擬合是指通過隨機(jī)選區(qū)的三個(gè)點(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í),該方法也能高精度地估計(jì)模型參數(shù)——能從大規(guī)模點(diǎn)云數(shù)據(jù)中,更容易地估計(jì)出地面點(diǎn)云集。
存在的問題:
1)考慮到排水的因素,交通道路通常是中間凸起、兩邊低洼,類似于拱橋形狀。雖然曲率不大,但是通過隨機(jī)采樣的一致性算法計(jì)算地平面,可能會(huì)得到傾斜于一側(cè)的平面作為地面方程。
2)在上下坡的時(shí)候,由于地面非絕對(duì)平面,該方法計(jì)算出的地面方程,會(huì)出現(xiàn)把前方地面點(diǎn)集作為障礙物點(diǎn)的情況。
3)由于RANSAC是在點(diǎn)云空間隨機(jī)地取三個(gè)點(diǎn)構(gòu)建平面,如果場(chǎng)景中存在大塊墻面時(shí),會(huì)出現(xiàn)將墻面作為地面方程的情況。
面元網(wǎng)格法
主要思路:基于面元的分割可以分為局部類型或者表面類型,常采用區(qū)域增長(zhǎng)的方式進(jìn)行地面分割。其核心是基于點(diǎn)法線之間角度的比較,將滿足平滑約束的相鄰點(diǎn)合并在一起,以一簇點(diǎn)集的形式輸出,每簇點(diǎn)集被認(rèn)為是屬于相同平面。
技術(shù)亮點(diǎn):該方法能夠較好地應(yīng)對(duì)地面存在曲率的情況,對(duì)于比較平緩的曲面或者平面能夠達(dá)到較好的分割效果。
存在的問題:
1)實(shí)際道路中的噪聲點(diǎn)太多,直接使用區(qū)域增長(zhǎng)的方式分割地面,會(huì)出現(xiàn)較多零星的地面點(diǎn)被當(dāng)成障礙物點(diǎn)云集合地情況。
2)區(qū)域增長(zhǎng)算法的時(shí)耗較大,對(duì)于實(shí)時(shí)性要求較高的感知算法模塊,需要進(jìn)一步優(yōu)化。比如將平面的區(qū)域增長(zhǎng)降為到邊緣,或者劃分區(qū)域,在小范圍內(nèi)進(jìn)行分割等等。
(2)目標(biāo)物的點(diǎn)云分割
在去除掉地面點(diǎn)云后,接下來感知算法人員就需要將目標(biāo)物點(diǎn)云進(jìn)行有效地分割、分塊,從而便于對(duì)目標(biāo)物進(jìn)行單獨(dú)處理,即點(diǎn)云分割。目標(biāo)障礙物的點(diǎn)云分割是根據(jù)空間、幾何和紋理等特征對(duì)點(diǎn)云進(jìn)行劃分。
筆者梳理了幾個(gè)常用的點(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)該方法較適用簡(jiǎn)單場(chǎng)景(如低噪聲、均勻密度),不適用于擁有大量三維點(diǎn)云的數(shù)據(jù)集。
2)面對(duì)存在不連續(xù)邊緣的目標(biāo)物點(diǎn)云數(shù)據(jù),若不采用點(diǎn)云填充,就不能直接用于識(shí)別檢測(cè)。
基于區(qū)域增長(zhǎng)的方法
主要思路:基于區(qū)域增長(zhǎng)的方法是指通過使用鄰域信息來將具有相似屬性的附近點(diǎn)歸類,以獲得到分割區(qū)域,并區(qū)分出不同區(qū)域之間的差異性。該方法主要分為兩類:種子區(qū)域方法和非種子區(qū)域方法。其中,種子區(qū)域方法是通過選擇多個(gè)種子點(diǎn)來開始做分割,以這些種子點(diǎn)為起始點(diǎn),通過添加種子的鄰域點(diǎn)的方式逐漸形成點(diǎn)云區(qū)域;非種子區(qū)域方法是將所有點(diǎn)都分為一個(gè)區(qū)域,然后將其劃分為更小的區(qū)域。
技術(shù)亮點(diǎn):相比于邊緣的方法,該方法的分割準(zhǔn)確度會(huì)更高。
存在的問題:方法依賴于選取的起始種子點(diǎn)或者區(qū)域細(xì)分位置,若選取的不恰當(dāng),就會(huì)導(dǎo)致分割過度或不足等問題。
基于屬性的方法
主要思路:基于屬性的方法是先計(jì)算目標(biāo)物點(diǎn)云的屬性,例如距離、密度、水平或垂直方向的點(diǎn)云分布等,并以此來定義測(cè)量點(diǎn)之間的領(lǐng)域,然后將每個(gè)方向上的法向量的斜率和點(diǎn)鄰域的數(shù)據(jù)之差作為聚類的屬性。
技術(shù)亮點(diǎn):相比于前兩個(gè)方法,基于屬性的方法可以消除異常值和噪點(diǎn)的影響。
存在的問題:該方法依賴于點(diǎn)之間鄰域的定義和點(diǎn)云數(shù)據(jù)的點(diǎn)密度,在處理大量輸入點(diǎn)的多維屬性時(shí),會(huì)導(dǎo)致模型對(duì)計(jì)算量的需求過大。
(3)目標(biāo)物聚類分析
在目標(biāo)物點(diǎn)云分割完后,感知算法人員就需要將點(diǎn)云圖中各個(gè)已分割的點(diǎn)云聚類成若干個(gè)整體,即把具有相似程度較高的點(diǎn)云組成一組,以便降低后續(xù)模型的計(jì)算量——這個(gè)過程就被稱為點(diǎn)云聚類。
常見的點(diǎn)云聚類方法如下:
K-means
主要思路:K-means 聚類算法是指將整個(gè)點(diǎn)云數(shù)據(jù)集分為 k 個(gè)具有某種統(tǒng)一特征的點(diǎn)云簇。首先,從每個(gè)點(diǎn)云簇中隨機(jī)選擇k個(gè)點(diǎn)作為點(diǎn)云簇的中心點(diǎn)。然后,對(duì)每個(gè)點(diǎn)云簇分別計(jì)算每個(gè)點(diǎn)云簇與上述k個(gè)點(diǎn)之間的實(shí)際距離,依據(jù)距離值最小的原則將其聚類到該點(diǎn)云簇。之后再對(duì)聚類的點(diǎn)云簇計(jì)算形心坐標(biāo),并更新點(diǎn)云簇中心點(diǎn)。最后,模型會(huì)重復(fù)上述步驟,直到點(diǎn)云簇中心點(diǎn)不再變化。
技術(shù)亮點(diǎn):準(zhǔn)確定性高、可處理較大數(shù)據(jù)量、運(yùn)算速度快。
存在的問題:該方法需要預(yù)先設(shè)定K值和初始聚類中心,實(shí)時(shí)性差。
DBSCAN
主要思路:DBSCAN通過引入密度的概念,即要求聚類空間中的一定區(qū)域內(nèi)所包含對(duì)象的數(shù)據(jù)量不小于某一給定閾值。該方法能夠在具有噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的簇,可將密度足夠大的相鄰區(qū)域連接,能夠有效地處理異常數(shù)據(jù),主要用于對(duì)空間數(shù)據(jù)的聚類。
技術(shù)亮點(diǎn):
1)可以聚類任意形狀點(diǎn)云
2)可以有效去除噪聲點(diǎn)
存在的問題:
1)對(duì)內(nèi)存資源消耗大
2)對(duì)處理器的要求高
3)需要預(yù)先設(shè)定聚類區(qū)域的半徑和觸發(fā)的閾值
歐式聚類
主要思路:歐式聚類(也稱為歐幾里得聚類)是指基于歐式距離聚類的方法,在激光雷達(dá)的點(diǎn)云數(shù)據(jù)中,同一個(gè)物體的點(diǎn)云簇中兩點(diǎn)之間的距離小于一定的值,而不同物體之間的點(diǎn)云簇之間的距離大于一定的值。歐式聚類算法就是根據(jù)此種原理,將歐幾里德距離小于設(shè)定距離閾值的點(diǎn)合并成一類,從而完成聚類過程。
技術(shù)亮點(diǎn):該方法運(yùn)算速度快,且具有良好通用性。
存在的問題:該方法需要預(yù)設(shè)固定距離的閾值,這會(huì)導(dǎo)致近處的目標(biāo)物聚類效果會(huì)較好,而遠(yuǎn)處的聚類會(huì)出現(xiàn)欠分割或者截?cái)嗟膯栴}。
(4)匹配與跟蹤
在做完前面的部分后,感知算法人員基本上已經(jīng)可以從已處理完的數(shù)據(jù)上獲知這些點(diǎn)云具體代表了什么目標(biāo)物,而接下來需要做的就是對(duì)目標(biāo)物的匹配和跟蹤,即預(yù)測(cè)下一時(shí)刻,目標(biāo)物出現(xiàn)在哪個(gè)區(qū)域。在障礙物檢測(cè)中,匹配的精確度是后續(xù)多傳感器融合的基礎(chǔ)。
通常來說,匹配和跟蹤的算法流程是先將目標(biāo)預(yù)測(cè)的結(jié)果與測(cè)量的點(diǎn)云數(shù)據(jù)計(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ù)處理
在自動(dòng)駕駛領(lǐng)域中,隨著點(diǎn)云的數(shù)據(jù)量越來越大,傳統(tǒng)的目標(biāo)檢測(cè)算法已經(jīng)無法滿足實(shí)際需求。筆者在與各個(gè)專家的交談后獲知,當(dāng)前點(diǎn)云3D目標(biāo)檢測(cè)主要采用了深度學(xué)習(xí)模型。
某主機(jī)廠感知算法工程師說:“在感知層面的目標(biāo)檢測(cè)中,點(diǎn)云在預(yù)處理完成后,就直接放入深度學(xué)習(xí)模型中,或者是先降采樣后再放入深度學(xué)習(xí)模型?!?/p>
常用的基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法:
PointNet
主要思路:PointNet首先為點(diǎn)云中的每一個(gè)點(diǎn)計(jì)算特征,然后通過一個(gè)與點(diǎn)云順序無關(guān)的操作將這些特征組合起來,得到屬于全體點(diǎn)云的特征,這個(gè)特征可以直接用于任務(wù)識(shí)別。
技術(shù)亮點(diǎn):
1)直接將點(diǎn)云數(shù)據(jù)輸入網(wǎng)絡(luò),而不是將其規(guī)范化;
2)對(duì)旋轉(zhuǎn)不變性和置換不變性的利用。
√旋轉(zhuǎn)不變性:所有的點(diǎn)做相同的變換(旋轉(zhuǎn)平移),不影響對(duì)形狀的表達(dá)。
√置換不變性:任意交換各點(diǎn)的位置,不影響對(duì)形狀的表達(dá)。
存在的問題:無法獲得局部特征,這使得PointNet方法很難對(duì)復(fù)雜場(chǎng)景進(jìn)行分析。
圖:PointNet的網(wǎng)絡(luò)結(jié)構(gòu)
PointNet++
主要思路:PointNet++是基于PointNet方法得出,主要借鑒了CNN的多層感受野的思想。CNN通過分層不斷地使用卷積核掃描圖像上的像素并做內(nèi)積,使得越到后面的特征圖感受野越大,同時(shí)每個(gè)像素包含的信息也越多。PointNet++就是仿照了這樣的結(jié)構(gòu),先通過在整個(gè)點(diǎn)云的局部采樣并劃一個(gè)范圍,將里面的點(diǎn)作為局部的特征,用PointNet進(jìn)行一次特征提取。
技術(shù)亮點(diǎn):
1)沒有量化帶來的信息損失,也無需調(diào)節(jié)量化超參數(shù)。
2)忽略空白區(qū)域,避免了無效的計(jì)算。
存在的問題:
1)無法利用成熟的基于空間卷積的2D物體檢測(cè)算法。
2)雖然避免了無效計(jì)算,但是GPU對(duì)于點(diǎn)云的處理效率遠(yuǎn)低于對(duì)網(wǎng)格數(shù)據(jù)的處理效率。
圖:PointNet(左側(cè)部分)與PointNet++(中間部分)的分割效果對(duì)比
圖:PointNet++的網(wǎng)絡(luò)結(jié)構(gòu)
VoxelNet
主要思路:VoxelNet主要是講三維點(diǎn)云轉(zhuǎn)化為voxel結(jié)構(gòu),然后以鳥瞰圖的方式來處理這個(gè)結(jié)構(gòu)。此處的voxel結(jié)構(gòu)就是利用相同尺寸的立方體來劃分三維空間,其中每個(gè)立方體稱為voxel(體素)。
VoxelNet有兩個(gè)主要過程,第一個(gè)被稱為VFE(Voxel Feature Extraction)是voxel的特征提取過程,第二個(gè)是類似YOLO的目標(biāo)檢測(cè)過程。
技術(shù)亮點(diǎn):
1)可以直接在稀疏的點(diǎn)云數(shù)據(jù)上進(jìn)行任務(wù)檢測(cè),并避免了人工特征工程帶來的信息瓶頸。
2)可以更有效地利用GPU的并行運(yùn)算優(yōu)勢(shì)。
存在的問題:VoxelNet對(duì)于數(shù)據(jù)表示(為適應(yīng)模型運(yùn)算而重建的一種新數(shù)據(jù)結(jié)構(gòu))比較低效,并且中間層的3D卷積對(duì)計(jì)算量的需求太大,導(dǎo)致其運(yùn)行速度只有大約2FPS(Frame Per Second),遠(yuǎn)低于實(shí)時(shí)性的要求。
?圖:VoxelNet的網(wǎng)絡(luò)結(jié)構(gòu)
SECOND
主要思路:SECOND是一種基于VoxelNet方法優(yōu)化后的點(diǎn)云檢測(cè)方法,其網(wǎng)絡(luò)的整體結(jié)構(gòu)和實(shí)現(xiàn)大部分與原先的VoxelNet相近,同時(shí)在VoxelNet的基礎(chǔ)上改進(jìn)了中間層的3D卷積,采用稀疏卷積來完成,提高了訓(xùn)練的效率和網(wǎng)絡(luò)推理的速度。同時(shí),SECOND還提出了一個(gè)新的損失函數(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把落到每個(gè)網(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)通過對(duì)柱而不是體素進(jìn)行操作,不需要手動(dòng)調(diào)整垂直方向的裝箱。
3)網(wǎng)絡(luò)中只使用2D卷積,不使用3D卷積,對(duì)計(jì)算量的需求小、運(yùn)行高效。
4)無需手動(dòng)調(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(中間部分)的分割效果對(duì)比
存在的問題:PCT是一種有效的全局特征提取網(wǎng)絡(luò),然而它忽略了點(diǎn)云深度學(xué)習(xí)中同樣重要的局部鄰域信息。
?圖:PCT網(wǎng)絡(luò)結(jié)構(gòu)
雖然當(dāng)前深度學(xué)習(xí)已經(jīng)在自動(dòng)駕駛行業(yè)內(nèi)被廣泛應(yīng)用,但是深度學(xué)習(xí)在點(diǎn)云數(shù)據(jù)處理中也會(huì)遇到一些挑戰(zhàn)。
一方面,點(diǎn)云作為場(chǎng)景中點(diǎn)的位置具有稀疏和非結(jié)構(gòu)化的性質(zhì),因此它們的密度和數(shù)量都隨著場(chǎng)景中對(duì)象的變化而變化。另一方面,由于自動(dòng)駕駛汽車行駛時(shí)需要非??焖俚刈龀龇磻?yīng),因此必須實(shí)時(shí)執(zhí)行物體檢測(cè),而這意味著檢測(cè)網(wǎng)絡(luò)必須在兩次掃描之間的時(shí)間間隔內(nèi)提供計(jì)算結(jié)果。
所以,深度學(xué)習(xí)雖然可用、好用,但不可盡用。
許建說:“深度學(xué)習(xí)等AI算法目前還做不到100%的精準(zhǔn)識(shí)別和檢測(cè),容易導(dǎo)致目標(biāo)漏檢。AI算法是3D點(diǎn)云感知的非常重要的手段,但是不能只靠AI。通過綜合應(yīng)用AI算法和傳統(tǒng)算法,可以解決數(shù)據(jù)樣本空間的不完備性問題,從而避免目標(biāo)漏檢情況。”
03 定位功能層面的處理
3.1 特征提取
自動(dòng)駕駛車輛在路上行駛時(shí),其實(shí)車輛是不知道自己在哪的,所以用點(diǎn)云數(shù)據(jù)做定位的第一步就是先要讓自動(dòng)駕駛車輛知道“我在哪里”。
此時(shí),感知算法人員就需要先提取周邊場(chǎng)景的目標(biāo)物特征,并通過這些特征和所獲取到的相對(duì)距離信息來建立一個(gè)小地圖,知道車輛的相對(duì)初始位置。
點(diǎn)云特征提取往往是實(shí)時(shí)的,這會(huì)導(dǎo)致點(diǎn)云的數(shù)據(jù)量會(huì)非常大,而現(xiàn)有量產(chǎn)車的硬件性能有限。所以,為了減少點(diǎn)云數(shù)據(jù)的計(jì)算量,點(diǎn)云數(shù)據(jù)在被提取特征時(shí),一般會(huì)被優(yōu)先提取一些較為明顯的特征,比如物體的輪廓信息。
某主機(jī)廠感知算法工程師說:“激光雷達(dá)不會(huì)像視覺一樣,視覺會(huì)有深度的語義信息,而激光雷達(dá)為了減少計(jì)算量,只會(huì)提取目標(biāo)物的特征,主要是提取目標(biāo)物的“線面角”特征。比如,電線桿就是線的特征,路面就是面的特征,建筑物的角點(diǎn)就是角的特征?!?/p>
3.2 地圖匹配
在提取完周圍目標(biāo)物的特征后,感知算法人員就需要根據(jù)這些特征來進(jìn)行點(diǎn)云地圖匹配,來獲取各個(gè)點(diǎn)云之間的相對(duì)位姿。點(diǎn)云地圖匹配一般可分為幀間匹配和高精地圖匹配。
幀間匹配,也叫子圖匹配,指將前后幀上有相同特征的點(diǎn)云做匹配,最后得到一張局部小地圖。
高精地圖匹配,指將優(yōu)化后的點(diǎn)云與高精地圖做匹配。
在自動(dòng)駕駛行業(yè)內(nèi),自動(dòng)駕駛方案商或者主機(jī)廠都會(huì)應(yīng)用這兩種不同方案,但常用的匹配方案還是以幀間匹配為主。
某主機(jī)廠感知算法工程師說:“只有L4的無人駕駛項(xiàng)目或許是基于高精地圖定位方案的地圖匹配,而主機(jī)廠主要做的是幀間匹配,因?yàn)榱慨a(chǎn)車的定位方案不可能都基于高精地圖。另外,高精地圖匹配的計(jì)算量很大,在應(yīng)用時(shí)必須先做降采樣的工作?!?/p>
3.3 位姿優(yōu)化
上文也提到,點(diǎn)云數(shù)據(jù)在做完匹配后,可以獲取各點(diǎn)云間的相對(duì)位姿,而相對(duì)位姿的準(zhǔn)確性會(huì)影響構(gòu)建地圖的準(zhǔn)確性,所以需要對(duì)點(diǎn)云的相對(duì)位姿做一定的優(yōu)化。
通常來說,相對(duì)位姿的不準(zhǔn)確主要是由于一些不可控因素造成的,如點(diǎn)云被物體遮擋或者激光雷達(dá)視場(chǎng)角的限制。點(diǎn)云的位姿優(yōu)化通過一定的點(diǎn)云坐標(biāo)系的剛體變化(旋轉(zhuǎn)或平移)來得到最優(yōu)相對(duì)位姿。
審核編輯:劉清
-
GNSS
+關(guān)注
關(guān)注
9文章
767瀏覽量
47897 -
激光雷達(dá)
+關(guān)注
關(guān)注
968文章
3967瀏覽量
189824 -
TOF
+關(guān)注
關(guān)注
9文章
482瀏覽量
36331 -
IMU
+關(guān)注
關(guān)注
6文章
306瀏覽量
45726
原文標(biāo)題:激光點(diǎn)云系列之一:詳解激光雷達(dá)點(diǎn)云數(shù)據(jù)的處理過程
文章出處:【微信號(hào):阿寶1990,微信公眾號(hào):阿寶1990】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論