CARLA 笔记(01)— 基本架构、核心模块(Traffic Manager、Sensors、ROS bridge、Scenario runner)、高级功能、生态系统
CARLA 官網地址 http://carla.org/
CARLA 官網文檔地址 https://carla.readthedocs.io/en/latest/
CARLA 中文官網 https://carla.org.cn/#/
Github: https://github.com/carla-simulator/carla
CARLA 是一個開源的自動駕駛仿真器。它從無到有,作為一個模塊化和靈活的 API 來解決自動駕駛問題中涉及的一系列任務。CARLA 的主要目標之一是幫助實現自動駕駛研發的大眾化,作為一種工具,用戶可以很容易地訪問和定制。為此,仿真器必須滿足一般駕駛問題中不同用例的要求(例如,學習駕駛規則、訓練感知算法等)。CARLA 以虛幻引擎為基礎來運行模擬,并使用 OpenDRIVE 標準(目前是1.4)來定義道路和城市環境。對仿真的控制是通過 Python 和 C++ 處理的API 授予的,該 API 隨著項目的進行而不斷增長。
https://carla.readthedocs.io/en/0.9.13/start_introduction/
目前開源的自動駕駛仿真平臺項目,包括 Carla、AirSim、Udacity self-driving car simulator、Apollo 和Autoware,從技術上講,這些平臺主要分為兩類:
- 第一類是基于合成的數據,對環境、感知及車輛進行模擬,這里的感知大多數是圖像層面的感知,這類模擬器主要用于感知、規劃算法的初步開發上,Carla、AirSim、Udacity self-driving car simulator 就屬于這類;
- 第二類是基于真實數據的回放,這里的真實數據包括圖像、lidar、radar 等各種傳感器的數據,這類模擬器主要用于測試無人駕駛中信息融合算法以及車輛不同部件的性能,Apollo 和Autoware 就屬于這類。
CARLA (Car Learning to Act) 是一款開源的自動駕駛仿真器,它基本可以用來幫助訓練自動駕駛的所有模塊,包括感知系統,定位, 規劃系統等等。
1. 基本架構
如下圖所示,Carla 主要分為 Server 與 Client 兩個模塊,Server 端用來建立這個仿真世界(Simulator),而Client 端則是由用戶控制,不僅可以讀取到環境的數據,也可以向 Server 端發送指令來調整、改變這個仿真世界。
- Server: Server 端負責任何與仿真本身相關的事情,從 3D 渲染、汽車、街道、建筑,傳感器模型的構建,到物理計算等等。它就像一個造物主, 將整個世界建造出來,并且根據 Client 的外來指令更新這個世界。它本身是基于 UnrealEnigne 做出的 3D 渲染。
- Client: 如果 Server 構造了整個世界,那么這個世界不同時刻到底該如何運轉(比如天氣是什么樣,有多少輛車在跑,速度是多少)則是由 Client 端控制的。用戶通過寫 Python 腳本(或者 C++ 也可以)來向 Server 端輸送指令指導世界的變化,Server 根據用戶的指令去執行。 另外,Client 端也可以接受 Server 端的信息,譬如某個照相機拍到的路面圖片。
也就是說,將服務器環境 Server(即仿真器 Simulator)啟動,然后就不用理會它了,剩下的所有的代碼和算法其實都是使用 Python 庫來作為客戶端通過調用 API 的方式跟這個仿真器交互。
2. 核心模塊
2.1 Traffic Manager
一個內置的除了用于學習的車輛外,還可以控制車輛的系統。它作為 CARLA 提供的指揮者,以重現類似真實城市的環境。
自動駕駛之所以難搞,很核心的一個原因就是現實世界車太多了!試想如果整個世界就你一輛車在大馬路上跑,自動駕駛恐怕早實現了。因此,Carla 專門構造了 Traffic Manager 這個模塊來模擬類似現實世界復雜的交通環境。通過這個模塊,用戶可以定義 N 多不同車型、不同行為模式、不同速度的車輛在路上愉快地與你的自動駕駛汽車(Ego-Vehicle)一起玩耍。
2.2 Sensors
Carla 里面有各種各樣模擬真實世界的傳感器模型,包括相機(RGB、深度和語義分割)、碰撞檢測器、慣性傳感器、車道入侵檢測器、障礙物探測器、激光雷達、聲波雷達、IMU、GNSS等等。為了讓仿真更接近真實世界,它里面的相機拍出的照片甚至還有畸變和動態模糊效果。用戶一般將這些 Sensor attach 到不同的車輛上來收集各種數據。
具體傳感器類型有:
- Cameras (RGB, depth and semantic segmentation) RGB相機(普通攝像頭),深度相機,語義分割相機
- Collision detector 碰撞檢測
- Gnss sensor 全球衛星定位
- IMU sensor 慣性傳感器
- Lidar raycast 激光雷達
- Lane invasion detector 壓線檢測
- Obstacle detector 障礙物檢測
- Radar 毫米波雷達
- RSS 責任敏感安全傳感器
- Recorder 俗話說的好,不能復現的仿真不是好仿真。這個模塊就是用來記錄仿真每一個時刻的狀態,可以用來回顧、復現等等。
細節參考:傳感器類型
2.3 ROS bridge and Autoware
這個模塊可以讓 Carla 與 ROS 還有 Autoware 交互,正是這個模塊的存在使得在仿真里測試你的自動駕駛系統變得可能,十分重要。
2.4 Open Assest
這個模塊可以允許你為仿真世界添加 customized 的物體庫,比如你可以在默認的汽車藍圖里再加一個真實世界不存在、外形酷炫的小飛汽車,用來給 Client 端調用。
2.5 Recorder
這個功能是用來為記錄 Carla 中的每一個角色。它可以訪問 Carla 世界上任何地方的時間軸上的任何時刻,是一個記錄跟蹤工具。
2.6 Scenario runner
CARLA 提供了一系列描述不同情況的路線和場景描述,并且開放給每個人測試。
3. 高級功能
CARLA 提供了超出本模擬器介紹范圍的廣泛功能:
- OpenDRIVE:獨立模式。僅使用 OpenDRIVE 文件生成道路網格。允許將任何 OpenDRIVE 地圖加載到 CARLA 中,而無需創建資產,不需要在 carla 中創建 assets 就可以加載 OpenDRIVE 地圖。
- PTV-Vissim:PTV-Vissim 是一款 traffic 仿真軟件,在 CARLA 和 PTV-Vissim 交通模擬器之間運行同步模擬。
- recorder:保存模擬狀態的快照以精確地重新進行模擬。
- 渲染選項:圖形質量設置、離屏渲染和無渲染模式。
- RSS:為責任敏感安全集成 C++ 庫以使用安全檢查修改車輛的軌跡。
- 模擬時間和同步:關于模擬時間,和服務器客戶端通信的一切。
- SUMO 聯合仿真:在 CARLA 和 SUMO 交通模擬器之間運行同步仿真。
- 交通管理器:該模塊負責所有設置為自動駕駛模式的車輛。它模擬城市中的交通,使模擬看起來像真實的城市環境。
4. 生態系統
與 CARLA 仿真平臺相關的開源庫:
- Scenario_Runner:在 CARLA 0.9.X 中執行交通場景的引擎;
- ROS-bridge:用于將 CARLA 0.9.X 連接到 ROS 的接口;
- Driving-benchmarks:用于自動駕駛任務的基準工具;
- Conditional Imitation-Learning:在 CARLA 中訓練和測試條件模仿學習模型;
- AutoWare AV stack: Bridge to connect AutoWare AV stack to CARLA;
- Reinforcement-Learning:在 CARLA 中運行條件強化學習模型的代碼;
- Map Editor:獨立的 GUI 應用程序可通過交通信號燈和交通標志信息來增強 RoadRunner 地圖;
5. 其它資料
- CARLA:An Open Urban Driving Simulator
總結
以上是生活随笔為你收集整理的CARLA 笔记(01)— 基本架构、核心模块(Traffic Manager、Sensors、ROS bridge、Scenario runner)、高级功能、生态系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一、内存寻址
- 下一篇: python函数的作用降低编程复杂度_P