標(biāo)注:本文來自本實(shí)驗(yàn)室肖軒的研究成果。
一、傳感器種類和特點(diǎn)
目前階段自動(dòng)駕駛汽車感知系統(tǒng)所使用的傳感器主要有攝像頭,激光雷達(dá)和毫米波 雷達(dá)等。三種傳感器特點(diǎn)各不相同,在實(shí)驗(yàn)過程中需要協(xié)同工作來完成對周圍環(huán)境的分析。下面來分別介紹一下三種傳感器。
1.1 攝像頭
攝像頭是自動(dòng)駕駛車輛中與肉眼成像最為接近的傳感器。攝像頭傳感器實(shí)時(shí)地拍攝周圍環(huán)境生成圖像數(shù)據(jù),并對圖像數(shù)據(jù)使用計(jì)算機(jī)視覺技術(shù)進(jìn)行分析,就能檢測車輛周 圍的安全性情況,從而對行駛狀態(tài)做出判斷。攝像頭傳感器的優(yōu)缺點(diǎn)非常明顯:攝像頭相對于其他傳感器的主要優(yōu)勢在于分辨率非常高,成本極低,在實(shí)際生產(chǎn)中被廣泛地應(yīng) 用。然而攝像頭的性能在極端惡劣天氣中,性能表現(xiàn)會呈現(xiàn)斷崖式下降;除此之外,攝像頭傳感器所能夠覆蓋的觀察距離非常局限,想要單單憑攝像頭的信息不能夠精確捕捉較遠(yuǎn)距離目標(biāo)位置的環(huán)境信息;此外由于攝像頭拍攝 所得畫面是二維的,即便是可以根據(jù)二維圖像建立三維模型,但是難以保證效果。
1.2 毫米波雷達(dá)
自動(dòng)駕駛技術(shù)中另一種常見的傳感器就是毫米波雷達(dá)。毫米波雷達(dá)是將工作頻率選定在20-200GHz的領(lǐng)域(波長為1-10mm,即毫米波段)的雷達(dá)[21]。隨著第五代通信技術(shù)的迅猛發(fā)展,毫米波這個(gè)詞被提及的頻率越來越高,毫米波的主要特點(diǎn)有四個(gè):第一是毫米波的頻帶寬,在人類現(xiàn)有頻率資源越來越緊張匱乏的今天,毫米波寬頻帶能夠?yàn)?數(shù)據(jù)選擇提供多種多樣的選擇;第二是毫米波的波束窄,這使得毫米波的信號較其他波 長的信號能夠更精確的傳遞到指定區(qū)域,所以通過被毫米波信號傳遞的數(shù)據(jù)能夠觀察到 更多細(xì)節(jié);第三則是毫米波的抗干擾能力較其他波極強(qiáng),對于降雨,降雪等特殊的天氣條件下毫米波粒子的穿透能力要遠(yuǎn)遠(yuǎn)強(qiáng)于激光和紅外;第四是發(fā)射毫米波元件裝置的尺 寸極小,這使得毫米波雷達(dá)更容易小型化,便捷化。以上是毫米波的四個(gè)特點(diǎn)也可以說是優(yōu)點(diǎn),然而毫米波也同樣存在著一定的缺陷,比如毫米波的信號衰弱程度大且已被物 體遮擋;毫米波的傳輸距離過短,毫米波是一種高頻的電磁波,傳輸距離短似乎是與生俱來的缺陷。毫米波雷達(dá)持續(xù)向外界發(fā)送毫米波級別的信號,并且同時(shí)接受發(fā)送方目標(biāo) 反饋回來的信號,確定兩車之間的距離只需要計(jì)算信號傳遞的時(shí)間。因此,毫米波雷達(dá)在自動(dòng)駕駛領(lǐng)域中主要應(yīng)用在防止發(fā)生碰撞的方面。
1.3 激光雷達(dá)
比起上述兩個(gè)傳感器,激光雷達(dá)在自動(dòng)駕駛領(lǐng)域所處的地位更為突出。激光雷達(dá)又 名光學(xué)雷達(dá)。激光雷達(dá)從早期的測量距離和角速度功能逐漸發(fā)展到具有了測速(徑向、橫向)的功能,如今激光雷達(dá)成像能夠給出極高的空間分辨率[22]。激光雷達(dá)作為一種精 度高的傳感器,逐漸成為了自動(dòng)駕駛領(lǐng)域不可或缺的傳感器裝置。激光雷達(dá)與毫米波雷達(dá)都是使用ToF技術(shù)確定目標(biāo)的位置以及目標(biāo)間距的。不同的是,激光雷達(dá)是探測目標(biāo) 的目的是通過發(fā)射激光來實(shí)現(xiàn)的,這一舉措使得它的探測精度較毫米波雷達(dá)更高,探測 范圍也比毫米波雷達(dá)更寬廣。但是激光雷達(dá)的缺點(diǎn)也非常明顯,那就是它更容易受到空氣中雨雪的干擾,它的高成本也是極大的制約了它的發(fā)展和應(yīng)用。激光雷達(dá)能作為自動(dòng) 駕駛領(lǐng)域非常重要的的傳感器的原因就是它能夠建立三維環(huán)境模型。它通過發(fā)射多線程 激光來收取不同高度上的環(huán)境情況信息,然后通過雷達(dá)內(nèi)部的旋轉(zhuǎn)裝置實(shí)現(xiàn)全方位的數(shù) 據(jù)采集。激光雷達(dá)上的接收裝置可以接收反射回來的激光束,并把它們形成點(diǎn)云。對點(diǎn)云數(shù)據(jù)加以一定的處理,就能夠?qū)χ車h(huán)境完成劃分。但是,凡事有利亦有弊,多線程的激光雷達(dá)所可以探測的環(huán)境范圍也會變大,接受的點(diǎn)云數(shù)據(jù)量也會變多,但對硬件數(shù) 據(jù)處理能力的要求也會越來越高。另外由于激光雷達(dá)的旋轉(zhuǎn)裝置需要不停工作,故此對 硬件的耐磨程度和精度都有很高要求。
二、基于Carla的傳感器數(shù)據(jù)建模
2.1 建模思路
本文會運(yùn)用Carla進(jìn)行傳感器數(shù)據(jù)建模,首先生成實(shí)驗(yàn)車和定義傳感器參數(shù),之后將車輛和傳感器集成,最后添加實(shí)驗(yàn)視角的觀察功能。具體思路如下:
2.2 創(chuàng)建車輛
宏定義egg文件是Carla 的核心文件,很多Carla中的模組和接口都定義封裝在egg文件中,可以說調(diào)用egg文件是使用Carla工具進(jìn)行仿真建模的關(guān)鍵,對 于定義調(diào)用傳感器接口以及汽車模型等工作都可以通過編譯egg文件實(shí)現(xiàn)。下面代碼的作用是找到Carla的egg文件,用來制作Carla包的文件,并為攝像頭添加宏定義。
添加攝像頭宏定義
在模擬場景中的行人,車輛和傳感器都會作為actor存在于這個(gè)列表中,以棧的數(shù)據(jù)結(jié)構(gòu)為例,actor即是棧中的數(shù)據(jù)元素。所以在這一部分中需要對演員列表進(jìn)行一定的處理,特別注意的是列表中的actor需要在完成時(shí)將清理他們出去,如果不清理服務(wù)器上的客戶機(jī),則會造成服務(wù)器過載,造成服務(wù)器的宕機(jī)。
創(chuàng)建清理actor Create a cleanup actor
actor列表只有鏈接客戶端上的world才能夠發(fā)揮作用,主要的功能代碼塊都被封裝在try或者finally里。try中存放了所有的邏輯和角色創(chuàng)建,在程序的最末尾需要清理 它。下一步,就需要連接到Carla的服務(wù)器,獲取世界,然后訪問藍(lán)圖,以能夠生成所 需要的汽車模型。
連接世界訪問藍(lán)圖
獲得了藍(lán)圖之后,可以使用過濾函數(shù)辦法過濾不必要的東西,來獲得需要的特斯拉model2的默認(rèn)藍(lán)圖,這樣一來地圖中就會生成實(shí)驗(yàn)車。Carla的地圖中擁有數(shù)百個(gè)衍生點(diǎn),隨機(jī)選取其中一個(gè)衍生點(diǎn)生成車輛模型;選好衍生點(diǎn)之后設(shè)定車輛的運(yùn)動(dòng)方式,最后把車輛添加到需要跟蹤和清理的角色列表之中。相關(guān)代碼和運(yùn)行結(jié)果如圖所示。為了 防止資源占用,設(shè)置60 秒后清理車輛。
添加特斯拉model2代碼 AddTeslamodel2 code
添加特斯拉model2 AddTeslamodel2
2.2 添加攝像頭傳感器
擁有了汽車模型后考慮在模型上添加一個(gè)攝像頭傳感器,然后弄清楚如何訪問這些數(shù)據(jù)。攝像頭相關(guān)的數(shù)據(jù)結(jié)構(gòu)具體已經(jīng)在第二部分中給出。首先設(shè)定傳感器圖像的寬度 和高度分別為640像素和480像素,同時(shí)為傳感器的水平視角設(shè)定為110度。之后把傳感器添加到汽車上,本文設(shè)定將傳感器設(shè)置在引擎蓋上。這之后需要把傳感器添加到 actor列表中,使之成為世界的一部分,最后再為callback傳感器加載藍(lán)圖并設(shè)置一些屬 性。攝像頭傳感器的設(shè)置方面基本完畢。此外,還要從傳感器獲得數(shù)據(jù),需要一個(gè)函數(shù)傳遞這些數(shù)據(jù),具體代碼如下:
設(shè)定攝像頭參數(shù)
數(shù)據(jù)傳遞函數(shù)
為了觀察到攝像頭傳感器的視角,再次運(yùn)行腳本,除了車輛之外,還會獲得一個(gè)攝像頭傳感器的視角,效果如下:
添加攝像頭效果圖
2.4 添加雷達(dá)傳感器
攝像頭傳感器添加完畢,我們開始添加一個(gè)雷達(dá)傳感器。同樣地,需要在世界中創(chuàng)建一個(gè)雷達(dá)傳感器,相關(guān)數(shù)據(jù)結(jié)構(gòu)已經(jīng)在第二部分當(dāng)中給出。設(shè)定雷達(dá)激光的速度為7.4米每秒,之后設(shè)定雷達(dá)在車輛模型上的位置(高1.0,位置2.8). 經(jīng)過上述同樣的添加actor列表并連接藍(lán)圖的操作,最后設(shè)定雷達(dá)激光的屬性:
激光屬性
激光雷達(dá)傳感器代碼
在數(shù)據(jù)傳遞過程中,每個(gè)傳感器都發(fā)送相似大小的緩沖區(qū)。特別是在相機(jī)的情況下,圖像的大小在執(zhí)行期間是恒定的。為了優(yōu)化內(nèi)存使用率,在這些情況下,可以通過在幀之間重用已分配的內(nèi)存來節(jié)省很多。每個(gè)流都包含一個(gè)緩沖池,可用于避免不必要的內(nèi)存分配。如果池為空,則返回空緩沖區(qū),即未分配內(nèi)存的緩沖區(qū)。在這種情況下,當(dāng)調(diào)整緩沖區(qū)大小時(shí),將分配新的內(nèi)存。在前幾幀期間,這種情況會發(fā)生幾次。但是,如果從池中檢索了緩沖區(qū),則一旦緩沖區(qū)超出作用域,其內(nèi)存將返回到池中。下次從池中獲得另一個(gè)緩沖區(qū)時(shí),它將包含前一個(gè)緩沖區(qū)分配的內(nèi)存。如所見,緩沖區(qū)對象實(shí)際上是指向連續(xù)原始內(nèi)存塊的智能指針。只要請求的內(nèi)存不超過當(dāng)前分配的內(nèi)存,緩沖區(qū)就會重用內(nèi)存。如果要求更多,則必須刪除當(dāng)前內(nèi)存并分配更大的塊。以下代碼段說明了緩沖區(qū)的工作方式:
緩沖區(qū)
2.4 創(chuàng)建觀察者
在前面對Carla的介紹中,我們提到跟Carla環(huán)境交互的唯一方式就是客戶端,但是前文用腳本生成了仿真模型汽車卻沒有輸出視頻的能力。這就需要添加一個(gè)所謂的觀 察者spectator,可以被理解為Carla的環(huán)境視角。
觀察者代碼
利用這段代碼,將觀察者的位置設(shè)置在仿真模型汽車的正上方向下看,在一定的時(shí) 間間隔中跟著模型汽車的位置重設(shè)觀察者的位置,通過這樣的方式來實(shí)現(xiàn)在仿真模型汽 車的正上方追蹤并觀察這臺車。
觀察者效果
這一部分功能最后會得到兩個(gè)輸出:(1)在仿真環(huán)境中基于觀察者的功能實(shí)時(shí)看到 仿真汽車模型行駛。(2)在輸出文件夾中存儲攝像頭傳感器實(shí)時(shí)拍攝的車輛圖片。
-
傳感器
+關(guān)注
關(guān)注
2552文章
51217瀏覽量
754606 -
攝像頭
+關(guān)注
關(guān)注
60文章
4851瀏覽量
95890 -
激光雷達(dá)
+關(guān)注
關(guān)注
968文章
3988瀏覽量
190072 -
自動(dòng)駕駛
+關(guān)注
關(guān)注
784文章
13856瀏覽量
166590
發(fā)布評論請先 登錄
相關(guān)推薦
評論