CARLA blog 功能更新翻譯 | 上
CARLA是一個非常優秀的專案,它是一個寶庫。對於它,再多的溢美之詞都不為過。我非常欣賞這個開源專案,因而想讓更多人知道它。
從這個專案裡,你可以複習鞏固自己學到的各種知識,從程式語言到計算機網路再到設計模式,也包括計算機圖形學,物理引擎等等知識。你可以學到如何從零構建一個極其高效、精緻的自動駕駛模擬系統。你可以瞭解到當前的模擬系統關注的重心是什麼。此外,你可以學到根據需求的優先順序如何有選擇地更新功能。如何迭代更新、最佳化一個大型專案的架構。
這篇推送翻譯了CARLA blog 的一些更新日誌。讀了這篇日誌,最直觀的,你可以大致瞭解到使用CARLA你能做什麼。當然,應該也有同學可以從中看到CARLA的演化過程,並深刻體悟到這個過程中有多麼激動人心。
未來針對CARLA,我們預期還會有多篇推送從方方面面來解讀它。讓我們以後再詳談這些。現在,感受開源的魅力吧!
注:本文所有內容都來自CARLA的公開資源。
參考連線:
https://
carla。org/
https://
github。com/carla-simula
tor/carla
CARLA0.9.0(2018.07.30)
我們很自豪地宣佈CARLA 0。9。0來了!
在此版本中,我們完全重新設計了網路體系結構,並從頭開始構建了一個新的Python API,該API徹底改變了CARLA的使用方式。現在你可以控制每輛車,可以將相機放置在任何地方,並且可以將任意數量的客戶端應用程式同時連線到模擬器的同一例項。但是請注意,這是開發版本。我們正在進行的更改非常多,因此我們希望為願意嘗試新的CARLA API的勇敢使用者提供一些最新功能。改變會帶來陣痛,曾經存在的許多功能將暫時不可用,並且該版本也可能出現許多新問題,但是我們相信所有的這些改變都是值得的。征程已開啟,讓我們來建立一個出色的自動駕駛模擬器吧,為了每個願意使用它的人!
多客戶端
我們重新設計了伺服器-客戶端通訊模式,以允許任意數量的客戶端同時連線並更改模擬伺服器。最終我們有可能在同一城市中使用不同的AI和人類進行多人模擬。
我們已經使用強大的
rpclib庫
將網路協議切換為RPC模型。新模型使用兩個TCP埠,預設情況下為2000和2001,第一個用於使用rpclib控制模擬,第二個用於感測器資料流。客戶端和伺服器均非同步工作,儘管尚需進行許多最佳化,但延遲已經非常低。
多客戶端支援為非常有趣的場景和與第三方軟體(如交通控制工具和行人行為建模庫)的整合打開了大門
。每個客戶端都可以在不同的節點上執行,因此可伸縮性非常好。
Python API
新API的最終目標是允許使用者控制模擬的各個方面。
我們的觀點是讓Python提供一切可用的東西:
載入地圖,新增感測器,新增靜態障礙物,控制車輛和行人等等。0。9。0 API只是朝著這個方向邁出的一第步,但是你已經可以使用它做很多很棒的事情。
首先我們需要介紹一些核心概念:
演員:
演員是在模擬中起作用並且可以移動的任何東西,例如車輛,行人和感測器。
藍圖:
生成角色之前,您需要指定其屬性,這就是藍圖的用途。我們提供了一個藍相簿,其中包含可供使用者選擇的所有參與者的定義。
世界:
世界代表當前載入的地圖,幷包含用於將藍圖轉換為在模擬中四處走動的演員的功能。
在模擬過程中的任何時候都可以建立和銷燬所有參與者,並且可以控制或移動所有參與者。
缺少的東西
以前版本中存在的許多功能在此版本中已消失。諸如鐳射雷達,行人,腳踏車,同步模式等。這是因為我們已經切換到新的API,並且還沒有移植很多東西。我們將在即將釋出的版本中儘快新增它們。如前所述,這是一項正在進行的工作,我們希望與社群分享這一進展。
CARLA0.9.1(2018.11.16)
1週年快樂!預期的CARLA 0。9。1版本來了!
對於CARLA模擬器來說,這是一段漫長的旅程。我們的團隊於2016年底開始了這次冒險之旅,旨在將最先進的自動駕駛模擬器帶入開源社群。我們的目標很明確:透過可訪問的模擬器使自動駕駛
民主化(democratising )
,並建立一個平臺,使學術界和行業成員能夠在公開場合
共享
知識和成果。2017年11月,我們首次公開發行了CARLA。當時,該平臺圍繞基於攝像機的策略學習和資料獲取任務的用例構建。那是個不錯的起點,但還不夠。因此,我們決定完全重新設計平臺,以生產出更先進,更靈活的自動駕駛模擬器。在整個過程衝,以下目標是我們的準繩:
使用者必須能夠以簡單的方式
建立新的內容,
即地圖,關卡等
使用者必須能夠建立複雜的
交通場景
使用者必須能夠利用自動駕駛中使用的
任何現有感測器
使用者必須能夠自動
培訓和評估
他們的代理
該平臺必須是
可擴充套件的
,即計算在不同節點之間分佈
我們在過去的10個月中致力於重新設計平臺以實現這些目標。0。9。0版本是此工作的初步展示,其中引入了新的CARLA API,多客戶端體系結構以及可以隨意控制所有模擬車輛的功能。
在此0。9。1版本中,我們添加了
使用外部工具攝取新內容(地圖)
的功能。此外,我們添加了基於路點和地圖的新API以輕鬆導航這些地圖。
為此,我們採用了OpenDrive作為CARLA道路網路格式的核心
。我們的地圖基於OpenDrive構建,從而提供了易於使用且用途廣泛的導航API。我們還將介紹Town03,這是一個複雜的城市場景,具有多車道的道路,隧道,環形交叉路口和許多其他有趣的功能,
駕駛模擬訊息
伺服器在0。8。X分支中產生的所有駕駛訊息都已合併到CARLA 0。9。1的感測器訊息。這使
客戶能夠檢測到碰撞並確定車道變化。
比如,新的
sensor.other.collision
可檢測到自車與場景的靜態佈局和動態物件(如車輛)的相對的碰撞。每次parent_actor(車輛)與場景的其他actor碰撞時,我們都會收到一條訊息,指明碰撞型別和影響的大小。該感測器還會報告自車與地圖的靜態元素(例如交通標誌,牆壁,交通訊號燈,人行道等)的碰撞。
再比如,新的感測器s
ensor.other.lane_detector
可以檢測車道變化。新的CARLA地圖更加複雜,其中包含多車道的道路。在這種情況下,重要的是要檢測車輛何時改變車道,確定車輛已越過哪種型別的車道標記以及目標車道的方向是什麼。
地圖和路點表示
現在可以透過Map類訪問道路網。透過地圖物件,我們可以獲取建議的車輛生成點(可以安全地例項化新物件的地方):map。get_spawn_points()透過新的路點查詢API,它也使從客戶端驅動變得非常容易。使用w = map。get_waypoint(位置),可以獲得與角色的當前位置關聯的航路點。使用者還可以生成指定距離內的航路點:map。generate_waypoints(距離)
總體而言,使用者可以利用這些新功能來建立自己的導航演算法
。
用於半自動地圖生成的pipline
此版本最令人興奮的功能之一就是與使用外部工具建立的新地圖的相容性。我們希望使用者在CARLA中輕鬆建立自己的地圖。
為此,我們採用了OpenDrive作為我們的地圖定義標準。使用眾所周知的標準可減少建立與CARLA模擬器相容的新內容所需的工作。
我們一直與
VectorZero
緊密合作,以確保
RoadRunner和CARLA之間的完全相容性
。RoadRunner是一種只需單擊幾下即可生成複雜駕駛地圖的工具。關鍵是,它還會生成與3D地圖關聯的OpenDrive檔案,因此
RoadRunner生成的地圖可以直接在CARLA中使用,並具有當前城鎮可用的所有功能。
VectorZero已承諾向要求它的學者免費授予將RoadRunner用於學術和研究目的。因此,請訪問他們的網站以獲得許可證並開始構建自己的地圖!
缺少的東西
全同步模式
模擬行人
功能齊全的ROS橋
CARLA0.9.2(2018.12.24)
我們在2018年的末尾帶來了0。9。2!
此版本帶來了新版本的ROS bidge 以及新的文件和教程。我們還開發了新的
場景執行器
,該引擎可在各種交通情況下執行和評估代理。這是一個關鍵進展。
交通場景模擬
在自動駕駛領域,模擬的關鍵方面之一是探索和重現現實生活中的所有交通情況,其目的是讓Agent學習這種情況並同時評估AI演算法如何應對這種情況。為此,我們建立了
Scenario_Runner
,一種構建在
py_trees
庫之上的新的交通場景引擎。這些場景是根據模板定義的,
可以重用在多種情況下出現的一般原子行為
。在此版本中,我們建立了一些基本的
NHTSA pre-crash traffic scenarios
:
FollowLeadingVehicle:英雄車輛(自車,下同)必須對領先車輛的減速做出反應
FollowLeadingVehicleWithObstacle:由於障礙物阻礙道路,英雄車輛必須對領先車輛做出反應
StationaryObjectCrossing:英雄車輛必須對騎腳踏車的人或行人阻塞道路作出反應
DynamicObjectCrossing:英雄車輛必須對突然在其前面橫穿的騎車人或行人做出反應
OppositeVehicleRunningRedLight:英雄車輛在路口交通闖紅燈時,必須避免在交通燈管制的路口發生碰撞
NoSignalJunctionCrossing:英雄車輛必須穿越非訊號交叉口
VehicleTurningRight:英雄車輛在右轉後必須對前方的騎腳踏車者或行人過路作出反應
VehicleTurningLeft:英雄車輛在左轉彎後必須對前方的騎腳踏車者或行人過路作出反應
這些方案具有一些關聯的終止標準,這些標準用於自動評估“英雄”汽車是否按預期執行。
更新ROS-bridge
毫無疑問,ROS系統的應用非常廣泛。全球有數百個團隊使用ROS來建立其autonomous agent。因此,我們非常重視與
CARLA ROS-bridge
相關的任務更新,以使其與新的0。9。X分支完全相容。從0。9。2開始,CARLA的ROS-bridge將儲存在其自己的儲存庫中。
新的Python代理
我們已新增新的類以應對來自客戶端以代理(agent)形式出現的車輛導航任務。這些代理中的前兩個是
BasicAgent和RoamingAgent
。BasicAgent能夠導航到給定位置座標的點,同時安全地處理其他車輛和交通訊號燈。RoamingAgent在有多個駕駛選項時時會隨機選擇。
這些代理表明瞭如何實現更復雜代理的基本思想。
Town03
Town03已升級,升級版包括與美國標準相容的交通訊號燈設定。在CARLA中,我們還首次包括了無訊號交叉口,為了安全越過交叉口,需要進行代理協商。
缺少的東西
全同步模式
模擬行人
GPU加速的鐳射雷達
CARLA0.9.3(2019.01.31)
CARLA0。9。3 版本來了!
新城市
Town04是CARLA有史以來最大的地圖,它的面積幾乎是Town03的三倍,包括一條高速公路,
不同高度的連線坡道
和一個小鎮。這使使用者可以建立大量的不同方案。Town05包括一條小型高速公路和許多具有更多路口的不同街道佈局。
新行人
我們建立了兩種新行人模型。由於有了新的更最佳化的網格,這些行人模型逼真程度更高且渲染成本更低。它們包括新的動畫和紋理。可以嘗試使用manual_control。py控制它們。
無渲染模式
No Rendering Mode是2D地圖視覺化工具,可顯示車輛,交通訊號燈,限速,行人,道路和其他發生在城鎮地圖中的有用資訊。
該工具的主要目的是提高伺服器的幀速率,因為不需要將渲染的幀傳輸到客戶端。
這包括:
地圖模式
:使用者可以視覺化城鎮的整個地圖及其所有車輛,交通訊號,行人,道路資訊並在其中進行導航任務。
英雄模式:
使用者可以檢視由manual_control。py指令碼控制的車輛及其周圍特定半徑的車輛,交通訊號燈和行人。
HUD:
顯示了有關城鎮的一些相關資訊,對於英雄模式,還會顯示與英雄車輛相關的其他資訊,例如車輛ID或速度。
交通燈控制
在該版本中,使用者可以訪問和修改模擬中的交通訊號燈。紅綠燈類已在Python API中更新為新功能。這些功能允許使用Python訪問和修改交通訊號燈的狀態以及每個狀態的時間。使用者現在還可以凍結場景中的任何或所有交通訊號燈。現在可以從“車輛”類別中檢索影響車輛的交通訊號燈,並更改其狀態以允許車輛繼續行駛。
新感測器
我們在列表中添加了兩個新感測器。
障礙物檢測器
:一種簡單的射線投射感測器,可讓您的代理檢測其前方是否有物體,以及物體是什麼。您還可以選擇檢測世界上的所有事物,還是僅檢測動態物件(對汽車有用)。
GNSS
:現在您可以將GNSS附加到汽車上以獲取其地理位置。地理定位資訊來自與每個地圖關聯的OpenDrive檔案中的地理參考定義。
PythonAPI更改
我們添加了一些互動的方法:
set_velocity允許使用者修改給定角色的線速度。
set_angular_velocity授予使用者設定角色角速度的能力。
get_angular_velocity允許使用者讀取演員的角速度。
add_impulse使使用者可以將衝量新增為世界軸上的向量。
我們還將vehicle。get_vehicle_control()重新命名為vehicle。get_control(),以遵循為行人設定的命名約定,
從而使程式碼更加清晰和減少冗餘
。
CARLA0.9.4(2019.03.01)
此版本附帶了一系列非常有用的功能,可改善模擬體驗。 讓我們來深入瞭解下此版本的亮點。
0。9。4引入了用於控制物理引擎的API,允許使用者在執行時更改車輛及其元件的
物理屬性
。如可以調整車輛的每分鐘最大轉數,轉向曲線,甚至禁用車輪轉向等屬性。
記錄,回放和事件查詢系統
在此版本中帶來了一個令人興奮的記錄和回放系統!此功能使您可以
記錄模擬會話的所有狀態
,並在以後在相同或不同情況下重新執行它。這意味著您實際上可以
偏離(重置)原始會話期間發生的事件,然後嘗試使用其他演算法
。當然,您也可以使用此功能來簡單地播放日誌。日誌檔案由伺服器自動儲存。此功能包括一個跟隨攝像機的模式,
可讓您在重播模擬場景時跟隨目標演員,從而可以從不同的角度重播場景
。
我們的新查詢引擎對日誌記錄系統進行了補充。這項新功能使
使用者可以查詢日誌檔案中存在的不同型別的事件。
例如,車輛是否與其他車輛,行人,騎腳踏車的人等發生碰撞?引擎將返回與該特定事件相關的所有時間戳和資訊,然後可以
使用回放系統在有趣的交通情況下恢復模擬。
這為您提供了正確的工具,使您可以將時間集中在查詢代理撞車的原因上。
核心API的重大改進
我們又重新enable了同步模式。
啟用同步模式後,模擬器將等待更新,直到客戶端發出命令以繼續。啟用後由客戶端負責呼叫tick()函式
。
為了新增此功能,我們對所有相關的CARLA參與者都強制執行嚴格的“tick order”。事件按以下順序發生:
透過wait_for_tick傳送world tick(變換,速度等)
更新UE4 actor(自動駕駛代理,交通訊號燈等)
解析客戶端請求
如果同步模式和客戶端未tick,請重複3。
在執行時更改地圖
以下API函式允許使用者在執行時從客戶端更改地圖:get_available_map和load_map。get_available_maps檢索包含所有可用地圖的列表。load_map(map_name)載入給定的地圖。此方法重置整個模擬以開始新的會話。
批處理命令
我們引入了一種新方法,以批處理模式將一組車輛命令推送到伺服器。這不僅提高了效率,而且還
允許將命令應用於同一tick中的每個演員
,例如將控制傳送給每臺NPC車輛,使所有車輛在同一時刻跳躍。
支援隨機流埠
現在可以控制用於傳輸感測器資料的輔助埠。到目前為止,此埠始終設定為RPC埠+ 1,但是現在使用者可以指定該埠,如果將埠設定為0,甚至可以讓作業系統選擇一個可用的隨機埠。當此資訊透過RPC埠傳送時,客戶端將自動連線。
非粘性(non-sticky)車輛控制
我們向車輛藍圖添加了一個屬性,以指定所應用的控制元件是否為“粘性”。預設情況下設定為“ True”,即我們在早期版本的CARLA中始終具有的行為vehicle_blueprint。set_attribute(“ sticky_control”,“ False”) 但是,當“ sticky_control”為“ False”時,
控制元件將每幀重置為其預設值(油門= 0,轉向= 0,剎車= 0)。因此,除非客戶端傳送控制訊息,否則車輛最終將停止。將來,我們想為此控制元件新增更多逼真的鬆弛曲線。
匯入和匯出地圖
在此版本中,我們簡化了在CARLA中建立和提取新內容(例如地圖和其他資產)的過程。從現在開始,使用者不必重新編譯CARLA專案,只需新增新地圖即可。我們新的匯入工具使使用者可以即時新增地圖。
將地圖匯入CARLA
新地圖基於FBX和OpenDrive檔案
,例如由VectorZero的RoadRunner軟體建立的地圖。僅需將地圖作為tar。gz檔案放置在CARLA根資料夾中的“ ExportedMaps”資料夾中。然後,您可以執行ImportMaps。sh(目前僅在Linux上)將地圖修補到專案中。然後透過名稱在CARLA中呼叫地圖來載入該地圖。
更新無渲染模式
本版本改進了新的No Rendering Mode,以增強效能和視覺美感。在“地圖模式”中放大和縮小時,我們顯著
提高了幀速率並解決了凍結問題
。從視覺角度來看,現在的視覺化工具看起來更美觀,更直觀。我們還添加了更多的道路資訊,例如添加了停車標誌,還透過在交通訊號燈上施加發光效果來明確影響汽車的交通訊號燈。
精準控制交通訊號燈和標誌
現在,屬於同一路口的所有交通燈都作為一個組公開。這
簡化了控制邏輯,並允許使用者在交通路口的層次上進行思考。
換道擴充套件
Waypoint API擴充套件了一組新功能,這些新功能提供了應對車道變更所需的資訊。新的API可以返回一個Python列舉,用於指示交通規則是否允許更改車道。也可以返回一個字串,該字串編碼當前車道的型別,如“可行駛區域”,“路肩”,“人行道”等。
也可以在最近的右側/左側鄰居車道上返回另一個carla。Waypoint(儘管規則允許或不允許更改)
win版本
我們改進了Windows版本。現在它會下載並安裝libpng,以便使用者可以正確地從PythonAPI中儲存影象。
如果在執行客戶端Python指令碼時遇到缺少DLL等問題,則只需編譯(或在Internet上輕鬆找到)新的x64 zlib。dll,並將其放在carla\PythonAPI資料夾中。
新市鎮:Town06(代號Caladan)
我們建立了Town06,其中
包括兩條高速公路
和專用轉彎車道之間的通斷連線坡道。
效能基準測試指令碼
現在,藉助performance_benchmark。py指令碼,您可以確定不同平臺在計算效能方面對CARLA的期望。該指令碼針對不同的感測器配置,地圖和天氣狀況,以FPS(每秒幀)的形式生成伺服器效能的摘要。
CARLA0.9.5(2019.04.03)
0。9。5 主要是對API進行了修改
全面檢修的Waypoint API
現在,我們的OpenDrive解析器能解析整個OpenDrive檔案,然後提取並存儲所有資料。現在我們的
新資料結構類似於OpenDrive
,因此解析器具有更大的可擴充套件性,查詢也很容易。
增強的全域性planner
GlobalRoutePlanner類可用於動態計算從原點到目標點的軌跡,最後生成的結果route是元組列表,其中包含
路點和拓撲命令
。這些拓撲命令用於指示actor為了到達下一個位置而應採取的高階動作,例如TURN_LEFT或TURN_RIGHT。
在此版本中,全域性planner已收到以下更新:
對於車道變更的conection進行換道規劃
基本代理現在可以根據計劃的路線執行車道更改
經過全面改造,可以使用更新的Waypoint API
農村小鎮
Town07,這是CARLA的第一個鄉村環境!這個城鎮為使用者測試協商技巧帶來了新的挑戰,例如狹窄的道路,較少的交通訊號燈和大量無訊號的過境點。
開源資產
內容遷移到AWS
我們的內容有了新家!所有資產已從Google雲端硬碟移至AWS,並且我們也更新了構建指令碼以適應此更改。現在,我們的資產使用更容易了。現在,可以依靠AWS連結手動訪問資產,而不必依靠指令碼來以程式設計方式下載資產。你可以在carla / Util資料夾中的ContentVersions。txt檔案中找到每個發行版資產的連結。
無渲染模式
我們對無渲染模式功能做了一些重要的補充。現在,地圖將更準確地反映來自OpenDrive的資料,並且現在有更多資訊可供使用者除錯。
以下是主要更新:
改進的車道標記(雙實線車道標記,實線和破損車道標記等)
現在可以使用選項(–map map_name)更改地圖
使用標誌檢視交通標誌的觸發框(–show-triggers)
現在可以看到路肩,讓步標誌和停車道
CARLA地圖編輯器
在以前的版本中,我們引入了一個新的GUI應用程式,使用者可以使用交通標誌資訊更新OpenDrive檔案。該工具在我們建立虛幻編輯器之外的地圖的過程中起著重要作用。
使用者從RoadRunner匯出FBX和XODR檔案後,他們可以將地圖載入到此應用程式中,放置交通標誌並將更改匯出到XODR檔案
。然後,他們可以執行我們的Python指令碼,從FBX和更新的XODR中生成虛幻引擎的umap資產。然後,該地圖即可與CARLA一起使用。我們計劃在將來更新此應用程式以做更多工作!