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