嵌牛IT觀察(四):自動駕駛——Carla 模擬器簡介

姓名:王澤華褐奥;學號:22011211045咖耘;學院:通信工程學院

原文鏈接:https://blog.csdn.net/qq_45066628/article/details/124456279

【嵌牛導讀】自動駕駛算法的調試和效果評測首先要在仿真環(huán)境中去做撬码,因此,一個強大呜笑、靈活的仿真環(huán)境是開發(fā)、測試過程中必不可少的要素蹈垢。我們在查找可用的仿真工具時主要關注以下幾個特性:1.開源袖裕,免費;2.包含高速場景急鳄;3.可以便捷的控制、切換場景的環(huán)境疾宏,且場景、環(huán)境盡可能的豐富與真實坎藐;4.可以便捷的控制、切換場景內移動物體(如車輛岩馍、行人等)的行為模式,且行為模式盡可能的豐富與真實蛀恩;第1條基本上把商用的軟件排除掉了,如PreScan双谆,VTD等······席揽。事實上谓厘,在論文庫的檢索過程中,CARLA的出現(xiàn)頻率是最高的庞呕,因此本文將介紹該模擬器及其使用方法。

【嵌牛鼻子】自動駕駛住练、Python

【嵌牛提問】如何運用CARLA進行自動駕駛仿真?

一讲逛、CARLA基本介紹

CARLA是一個開源的自動駕駛模擬器。它是從頭開始構建的盏混,用作模塊化和靈活的API,以解決自動駕駛問題中涉及的一系列任務止喷。 CARLA的主要目標之一是幫助自動駕駛研發(fā)民主化,它是一種易于用戶使用和定制的工具弹谁。為此句喜,模擬器必須滿足一般駕駛問題(例如學習駕駛策略预愤,訓練感知算法等)內不同用例的要求咳胃。 CARLA基于Unreal Engine來運行模擬,并使用OpenDRIVE標準(今天為1.4)定義道路和城市環(huán)境展懈。通過使用Python和C ++處理的API授予對模擬的控制權,該API隨項目的發(fā)展而不斷增長存崖。

為了簡化開發(fā),培訓和驗證駕駛系統(tǒng)的過程金句,CARLA演變成由社區(qū)圍繞主要平臺構建的項目生態(tài)系統(tǒng)。在這種情況下,重要的是要了解有關CARLA如何工作的一些知識偶房,以便充分理解其功能。

二棕洋、CARLA模擬器

CARLA仿真器由可擴展的客戶端-服務器體系結構組成乒融。

服務器負責與仿真本身相關的所有事情:傳感器渲染掰盘,物理計算赞季,世界狀態(tài)及其參與者的更新等等。 由于它旨在獲得逼真的結果申钩,因此最合適的方法是使用專用GPU運行服務器,尤其是在處理機器學習時撒遣。

客戶端由一些客戶端模塊組成,這些客戶端模塊控制場景中演員的邏輯并設置世界條件义黎。 這可以通過利用CARLA API(Python或C ++)來實現(xiàn),CARLA API是在服務器和客戶端之間進行中介的層泻云,該層不斷地發(fā)展以提供新的功能。

1.交通流管理:除了用于學習的系統(tǒng)外壶愤,還內置了一個控制車輛的系統(tǒng)馏鹤。它作為CARLA提供的指揮者,以逼真的行為再現(xiàn)城市般的環(huán)境湃累。

2.傳感器:車輛依靠它們來發(fā)布周圍環(huán)境的信息。在CARLA中治力,它們是附著在車輛上的一種特殊的行為體,它們接收到的數據可以被檢索和存儲宵统,以簡化這一過程。目前該項目支持不同類型的傳感器马澈,從攝像頭到雷達、激光雷達等等痊班。

3.記錄器:此功能用于為世界上的每個演員一步步重演模擬。它允許訪問世界上任何地方的時間線中的任何時刻涤伐,是一個很好的追蹤工具。

4.ROS bridge和Autoware實施方法:作為一個普遍化的問題凝果,CARLA項目結和致力于將模擬器整合到其他學習環(huán)境中。

5.開放性資產:CARLA為城市環(huán)境的不同地圖提供便利豆村,并對天氣條件進行控制,同時提供一個藍圖庫掌动,其中有大量的行為者可供使用。然而粗恢,這些元素可以定制,并且可以按照簡單的準則生成新的元素眷射。

6.場景運行器:為了簡化車輛的學習過程,CARLA提供了一系列描述不同情況的路線涌庭,供大家迭代。這些也為CARLA挑戰(zhàn)賽奠定了基礎欧宜,開放給大家測試自己的解決方案坐榆,并進入排行榜。

三冗茸、CARLA 簡單上手

CARLA的快速上手指南請參考官方文檔https://carla.readthedocs.io/en/latest/getting_started/

CARLA 目前僅支持 Linux 和 Windows席镀,需要去下載相應的版本。在本文寫作的時間夏漱,Windows 僅支持到 0.9.5 版本豪诲,Linux 支持到0.9.6。

需要 安裝 numpy 和 pygame.

下載解壓文件夾之后挂绰,Windows 環(huán)境下直接運行 “CarlaUE4.exe” 文件屎篱,linux 環(huán)境下 終端命令: “./CarlaUE4.sh” 即可打開模擬器。

模擬器就是一個小鎮(zhèn)的環(huán)境,有道路交播,建筑专肪,街道,交通燈等等堪侯。不過目前是沒有行人和車輛的嚎尤。需要運行 python 腳本代碼。

? ? ? ?python spawn_npc.py -n 80

也可以運行這個腳本添加天氣變量(天黑伍宦,下雨芽死,刮風等)次洼。

? ? ? python dynamic_weather.py

當然也可以體驗一下手動駕駛汽車的感覺关贵,僅需要運行這個腳本就可以了。

? ? ? python manual_control.py

如上圖所示卖毁,可以像玩游戲一樣手動操作窗口中汽車前進揖曾、后退、轉彎和剎車等動作亥啦,同時環(huán)境的及時反饋也可以收集到炭剪。可以感應到周圍車輛的大小翔脱,交通燈信號奴拦,是否有撞擊等等。

當然你也可以用快捷鍵 P 讓汽車處于自動駕駛狀態(tài)届吁。不過需要注意的是错妖,此時汽車的自動駕駛并不是通過機器學習得到的模型,而是通過對模擬器中設置的汽車行駛交通規(guī)則實現(xiàn)的疚沐。

注意如果在運行腳本的時候出現(xiàn)導入 carla 失敗的錯誤暂氯,請檢測python版本。在PythonAPI\carla\dist 目錄中可以看到相應的python 版本的.egg 文件亮蛔。筆者使用的是0.9.5 版本 carla 其中 Windows 10 需要使用 python 3.7. Linux 需要使用 python 3.5.

四痴施、Python 控制汽車快速上手

為了便于進后機器學習的需要,本文我們快速在模擬器中創(chuàng)建一輛汽車尔邓,并讓他直線行駛晾剖,通過攝像頭將感知到的圖片顯示出來锉矢。之后我們便可用攝像頭收集到的圖像信息以及汽車在環(huán)境中的反饋訓練(強化學習)模型梯嗽,完成自動駕駛的任務。詳細指南請參考官方 Python API 指南沽损。

初始化環(huán)境灯节。創(chuàng)建 Client 連接模擬器的服務器,并通過 “blueprint” 創(chuàng)建一個汽車blueprint。

? ? ? ?# set up the environment

? ? ? ? ? ?client = carla.Client("localhost", 2000)

? ? ? ? ? ?client.set_timeout(2.0)

? ? ? ? ? ?world = client.get_world()

? ? ? ? ? ?blueprint_library = world.get_blueprint_library()

? ? ? ? ? ?bp = blueprint_library.filter("model3")[0]

初始化汽車炎疆,在模擬器世界中卡骂,隨機出現(xiàn)一輛汽車

? ? ? ? ? spawn_point = random.choice(world.get_map().get_spawn_points())

? ? ? ? ? ? ? ? vehicle = world.spawn_actor(bp,spawn_point)

控制汽車,當然你可以用自動駕駛模式"vehicle.set_autopilot(True)"讓汽車根據模擬器制定的規(guī)則行駛形入,不過我們在這里讓汽車直行

? ? ? ? ? vehicle.apply_control(carla.VehicleControl(throttle=1.0,steer=0.0)) # car go straight

? ? ? ? ? actor_list.append(vehicle)

設置攝像頭

? ? ? ? ?cam_bp = blueprint_library.find("sensor.camera.rgb")

? ? ? ? ? ? ? ? cam_bp.set_attribute("image_size_x", "{}".format(IM_WIDTH))

? ? ? ? ? ? ? ? cam_bp.set_attribute("image_size_y", "{}".format(IM_HEIGHT))

? ? ? ? ? ? ? ? cam_bp.set_attribute("fov","110") #"fov" feel of view

? ? ? ? ? ? ? ? spawn_point = carla.Transform(carla.Location(x=2.5,z=0.7)) #locate the camera

? ? ? ? ? ? ? ? sensor = world.spawn_actor(cam_bp, spawn_point, attach_to = vehicle)

? ? ? ? ? ? ? ? actor_list.append(sensor)

獲取攝像頭圖片全跨,這里通過 .listen 的 lambda 函數傳回數據。當然不要忘了設計一個延時亿遂。

? ? ? ? sensor.listen(lambda data: process_img(data))

? ? ? ? time.sleep(25)

其中通過 process_img() 方法傳回攝像頭圖像

? ? ? ?def process_img(image):

? ? ? ? ? ? ? ? i = np.array(image.raw_data)

? ? ? ? ? ? ? ? # print(i.shape)

? ? ? ? ? ? ? ? i2 = i.reshape((IM_HEIGHT,IM_WIDTH,4)) #4 changels "rgba"

? ? ? ? ? ? ? ? i3 = i2[:,:,:3] # 3 changels "rgb"

? ? ? ? ? ? ? ?cv2.imshow("",i3)

? ? ? ? ? ? ? ?cv2.waitKey(1)

? ? ? ? ? ? ? ?return i3/255.0

這里需要注意的是浓若,攝像頭得到的圖片有4個通道 “rgba”,需要將第四個通道去掉蛇数,并用opencv 的 cv2.imshow() 將攝像頭捕捉到的圖片 歸一化之后回傳回來挪钓。

最后,我們運行一下這個python 腳本獲取汽車直線前進耳舅,攝像頭所“看到” 的畫面碌上。汽車直行然后撞在了隧道的墻壁上。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末浦徊,一起剝皮案震驚了整個濱河市馏予,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盔性,老刑警劉巖吗蚌,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纯出,居然都是意外死亡蚯妇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門暂筝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來箩言,“玉大人,你說我怎么就攤上這事焕襟≡墒眨” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵鸵赖,是天一觀的道長务漩。 經常有香客問我,道長它褪,這世上最難降的妖魔是什么饵骨? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮茫打,結果婚禮上居触,老公的妹妹穿的比我還像新娘妖混。我一直安慰自己,他們只是感情好轮洋,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布制市。 她就那樣靜靜地躺著,像睡著了一般弊予。 火紅的嫁衣襯著肌膚如雪祥楣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天汉柒,我揣著相機與錄音荣堰,去河邊找鬼。 笑死竭翠,一個胖子當著我的面吹牛振坚,可吹牛的內容都是我干的。 我是一名探鬼主播斋扰,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼渡八,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了传货?” 一聲冷哼從身側響起屎鳍,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎问裕,沒想到半個月后逮壁,有當地人在樹林里發(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粮宛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年窥淆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片巍杈。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡忧饭,死狀恐怖,靈堂內的尸體忽然破棺而出筷畦,到底是詐尸還是另有隱情词裤,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布鳖宾,位于F島的核電站吼砂,受9級特大地震影響,放射性物質發(fā)生泄漏鼎文。R本人自食惡果不足惜渔肩,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漂问。 院中可真熱鬧赖瞒,春花似錦、人聲如沸蚤假。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽磷仰。三九已至袍嬉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灶平,已是汗流浹背伺通。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留逢享,地道東北人罐监。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像瞒爬,于是被迫代替她去往敵國和親弓柱。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容