详解自动驾驶仿真框架OpenCDA: An Open Cooperative Driving Automation Framework Integrated with Co-Simulation
本文介紹一款同時支持協同駕駛開發與測試、自動駕駛全棧開發 和 CARLA-SUMO聯合仿真的開源框架 OpenCDA,論文已收錄于 ITSC 2021。主要feature有:
論文鏈接為:https://arxiv.org/pdf/2107.06260.pdf
項目鏈接為:https://github.com/ucla-mobility/OpenCDA
文檔鏈接為:https://opencda-documentation.readthedocs.io/en/latest/
文章目錄
- 1. Overview of OpenCDA
- 2. Experiment Setups and Evaluation Measurement
- 2.1 Platooning Protocol Design
- 2.2 Platooning Scenario Testing Design
- 2.3 Evaluation Measurements
- 3. Result Analysis
- 3.1 Single Lane Platooning
- 3.2 Cooperative Merge and Joint Platoon
1. Overview of OpenCDA
下面對 OpenCDA 進行介紹,如下圖所示,OpenCDA由三部分組成:simulation tools、cooperative driving automation system、scenario manager。
- 仿真工具中,環境仿真使用CARLA仿真,交通仿真使用SUMO仿真,此外還使用了其它仿真工具,例如無線通信仿真工具ns-3等。
- 協同駕駛系統中,傳感器模塊收集原始的傳感器信息,信息傳送到感知層,然后傳遞到規劃層,最后通過執行層發送執行命令,CARLA 執行器執行命令。
- 場景管理中,包含場景配置文件,場景初始化,特定事件觸發器,評估功能。場景中包含靜態元素和動態元素,靜態元素由CARLA確定,動態元素由配置文件確定。當任務結束時,會對整個駕駛過程進行評估,包括交通層面評估以及單車層面評估。
Software Class Design and Logic Flow
為了更好地說明OpenCDA是如何工作的,這里以一個應用例子 vehicle platooning 來說明,首先介紹類組件,如下圖所示。
使用分層類管理器來控制仿真,最基礎的類為 VehicleManager,包含著全棧協同駕駛算法。類成員 PerceptionManager 和 LocalizationManager 對自車進行感知和定位。BehaviorAgent 規劃駕駛行為,同時其 LocalPlanner 通過三次樣條插值方法產生軌跡:
yt=α0+α1xt+α2xt2+α3xt3(1)y_t = \alpha_0+\alpha_1x_t+\alpha_2x_t^2+\alpha_3x_t^3 \tag{1}yt?=α0?+α1?xt?+α2?xt2?+α3?xt3?(1)
at={min?(vtarget?vtΔt,a1),if?vtarget≥vtmax?(vtarget?vtΔt,a2),otherwise(2)a_t =\begin {cases} \min(\frac{v_{target}-v_t}{\Delta t},a^1), &\text {if $v_{target} \geq v_t$} \\ \max(\frac{v_{target}-v_t}{\Delta t},a^2), &\text {otherwise} \end{cases} \tag{2} at?={min(Δtvtarget??vt??,a1),max(Δtvtarget??vt??,a2),?if?vtarget?≥vt?otherwise?(2)
xt=vt?1Δt+at?1Δt22(3)x_t = v_{t-1}\Delta t + \frac{a_{t-1}\Delta t^2}{2} \tag{3}xt?=vt?1?Δt+2at?1?Δt2?(3)
vt=vt?1+at?1Δt(4)v_t = v_{t-1} + a_{t-1}\Delta t \tag{4}vt?=vt?1?+at?1?Δt(4)
其中,xt,ytx_t,y_txt?,yt?是汽車在ttt時刻的位置,α0,α1,α2,α3\alpha_0,\alpha_1,\alpha_2,\alpha_3α0?,α1?,α2?,α3?是三次多項式系數,ata_tat?是加速度,其中a1,a2a^1,a^2a1,a2是與舒適性相關的加速度和減速度。Δt\Delta tΔt是時間精度,vtarget,vtv_{target},v_tvtarget?,vt?是最終想要的目標速度和ttt時刻的速度。
產生后的軌跡會傳送到 ControlManager 產生轉向,制動,加速等控制命令。V2XManager 會發送或接收由其余CAVs生成的數據包,用于協同駕駛應用。
仿真工作時的邏輯流如下圖所示。場景測試時:
- 通過yaml文件配置CARLA server、交通情況和每一個汽車參數(傳感器參數、檢測模型、目標速度等)。
- 接下來,每輛汽車通過V2XManager信息共享,如果激活了協同應用,CoopPerceptionManager和CoopLocalizationManager會使用所有的信息進行目標檢測和定位;反之,汽車會選擇默認的PerceptionManager和LocalizationManager。
- 信息傳送到下流模塊,進行規劃。同樣地,協同應用激活的話會選擇協同策略做出決策;反之BehaviorAgent和TrajectoryPlanner會規劃行為并生成平順的軌跡。
- 最終,ControlManager輸出控制命令,CARLA server將這些命令應用在對應汽車上,更新信息,進行下一步仿真。
- 仿真終止時,內置評估工具箱對駕駛性能進行評估,包括感知、定位、規劃、控制、安全性等。
2. Experiment Setups and Evaluation Measurement
為了驗證OpenCDA的實際效果如何,作者以汽車編隊(vehicle platooning)為例來說明,整個仿真測試時間步長為0.05s0.05s0.05s。
2.1 Platooning Protocol Design
首先是編隊協議設計,在編隊應用中,所有車輛由PlatoonManager來管理,協議如下圖所示。整體上,整個駕駛任務可以分成許多子任務,編隊成員根據編隊狀態的不同也有著不同的駕駛模式。
編隊應用被激活后,編隊中的領航車(leading vehicle)會通過V2XManager聽取外部車輛的入隊請求。如果沒有收到請求,整個隊列會保持穩定行駛而領航車會保持領航模式。與此同時,如果協同感知應用被激活,編隊每一個成員會共享彼此間的感知數據(如圖像,3D點云),并且會通過PerceptionManager進行感知處理,領航車會得到更好的感知結果。
沒有車輛申請入隊的話,所有跟隨車(following vehicle)會平緩的調整車速使隊列的相鄰汽車保持一個恒定時間間隔,為了完成這個任務,編隊成員會通過V2XManager得到前車的軌跡,方法如下:
posjt=posj?1t?Lj?1+posjt?Δt×gap/Δt1+gap/Δt(5)pos^t_j = \frac{pos^t_{j-1}-L_{j-1}+pos^{t-\Delta t}_j\times gap/ \Delta t}{1+gap/ \Delta t} \tag{5}posjt?=1+gap/Δtposj?1t??Lj?1?+posjt?Δt?×gap/Δt?(5)
vjt=∣∣posjt?posjt?Δt∣∣Δt(6)v^t_j = \frac{||pos^t_{j}-pos^{t-\Delta t}_{j}||}{ \Delta t} \tag{6}vjt?=Δt∣∣posjt??posjt?Δt?∣∣?(6)
其中posjt,posj?1tpos^t_j,pos^t_{j-1}posjt?,posj?1t?是ttt時刻車輛編號為jjj的位置和其前車位置。Lj?1L_{j-1}Lj?1?是前車長度,Δt\Delta tΔt是時間精度,gapgapgap是想要的時間間隔。vjtv^t_jvjt?是ttt時刻汽車速度。
如果隊列收到了一個入隊請求,領航車會根據申請車的位置,規劃路徑來判斷是否可以進行入隊操作。如果入隊申請被拒的話,車輛會繼續尋找并保持單車駕駛模式;否則PlatooningManager會選擇最合適的入隊位置,如果需要的話,隊列成員會調整自身速度,入隊車輛會移動到入隊位置完成入隊操作。
2.2 Platooning Scenario Testing Design
下圖是編隊聯合仿真測試場景片段,整個測試都使用了感知和定位算法,感知算法為yolov5,定位算法為GNSS/IMU融合算法。
如下圖所示,這里有兩個測試場景:
- 單車道編隊,5輛汽車在同一車道行駛,為了測試隊列穩定性,當領航車突然改變車速時,觀察跟隨車會不會繼續保持想要的時間間隔。
- 協同編隊,當其余車道上車輛申請入隊時,領航車決定最佳的入隊位置,這里使用了兩種算法來選擇最佳入隊位置:一種是heuristic-based,另一種是Genetic Fuzzy System。
2.3 Evaluation Measurements
這里是一些評價指標:
- 安全性,自動駕駛中最重要的評價指標,使用了碰撞時間(TTC),平均碰撞時間(attc),危險頻率(碰撞時間小于警告時間),平均碰撞時間計算方法為:
ATTC=∑t=1Nxit?xi?1t?lvit?vi?1tN(7)ATTC= \frac{{\sum^{N}_{t=1}}\frac{x^t_i-x^t_{i-1}-l}{v^t_i-v^t_{i-1}}}{N} \tag{7}ATTC=N∑t=1N?vit??vi?1t?xit??xi?1t??l??(7)
其中,xitx^t_ixit?是ttt時刻車輛位置,xi?1tx^t_{i-1}xi?1t?是前車位置,lll是車輛長度,NNN是vit<vi?1tv^t_i<v^t_{i-1}vit?<vi?1t?的仿真時間步數。 - 穩定性,使用時間間隔和加速度來表示;
- 效率,使用完成入隊時間和加速度標準差來表示。
3. Result Analysis
3.1 Single Lane Platooning
單車道入隊測試結果為:
3.2 Cooperative Merge and Joint Platoon
協同入隊測試結果為:
總結
以上是生活随笔為你收集整理的详解自动驾驶仿真框架OpenCDA: An Open Cooperative Driving Automation Framework Integrated with Co-Simulation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在劳斯莱斯的老家 看燃油车末日
- 下一篇: 7旬老人不开空调高烧至40度进ICU 央