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