劉向東,王曉光,鄒 密
(吉林大學公共計算機教學與研究中心,吉林 長春 130012)
自動駕駛技術是近年來的研究熱點[1]。為了滿足車輛的安全性,可實用的自動駕駛系統需要根據不同的交通狀況進行測試,美國蘭德智庫的估算,這需要110 億英里以上的實地驗證[2]。這意味著,如果100 輛測試車以時速25 英里每小時全天不停車測試,也要花費數百年的時間。所以通過仿真系統,實現自動駕駛算法的驗證是技術落地的必經之路。
自動駕駛仿真系統,需要為算法提供盡可能真實的場景,包括行人、車輛、障礙物等不同情況的交通模擬,還要允許在暴雨、強光和傍晚等不同天氣條件下進行測試。自動駕駛算法則需要在環境中實現感知、定位、決策和控制等所有步驟。現有的仿真系統,大都追求全過程個性化模擬[3-4],缺乏對駕駛決策,這個自動駕駛算法的核心內容的專向設計,從而提高了系統和實驗的復雜度。
強化學習是機器學習領域中,用來解決智能體在不確定的復雜環境中優化決策以獲取最大化獎勵的問題。與傳統的決策算法相比,能夠處理無模型的動態規劃情況[5],非常適合在復雜環境下的實現自動駕駛決策。本研究基于UE5 引擎和Airsim 框架,針對自動駕駛的決策過程,設計并實現了仿真平臺和實驗情景,簡化了感知、定位和控制接口,使用python 語言為強化學習過程設計了代碼框架。仿真平臺實現了使用強化學習算法,針對從端到端的自動駕駛應用的簡單測試流程,也可應用于機器學習的教學和實驗。
為了達到L4 級別以上的自動化等級,需要被駕駛車輛能夠實時監測周圍路況,獲取圖像、距離、位置等信息,作為決策依據,通過程序控制實現導航、避障等指定任務,消除人工干預。由于在整個過程中,決策程序屬于觀察者的角色,而環境、車輛、交通、傳感器數據可以獨立的自主運行。所以,仿真實驗平臺被設計為服務器- 客戶端的運行模式,決策系統位于客戶端。
服務器端在Unreal Engine5(UE5)游戲引擎上開發,主要實現環境布局、模型展示和多種天氣條件等真實世界的模擬。UE5 提供了最先進的渲染質量和逼真的物理效果,讓虛擬環境在物理和視覺上都實現真實模擬。為了體現行人、車輛、交叉路口等交通情況的復雜性[6],服務器借助MassAI 組件生成大量可自主運動的人和車輛的智能體,以模擬交通系統。
客戶端基于微軟的開源模擬器Airsim 實現對無人機器和交通系統的程序控制。Airsim 支持基于PX4[7]等飛控固件的實時在環仿真,可以對無人機、車輛模擬真實的手動控制[8]。Airsim 也提供了API 接口,通過TCP 協議與服務器端進行通信。仿真平臺基于Airsim,為用戶在客戶端生成了Python 接口,用于服務器中的車輛的生成、傳感器設置和交通系統的控制。此外,為了實現強化學習算法測試,還需要為強化學習設計Python 接口以實現對自動駕駛和其他任務的訓練和測試。
最后,仿真平臺為強化學習決策設計了4 個實驗情景模塊:目標識別、搜尋、避障、自動駕駛和手動控制,見圖1。其中,手動控制模塊是為強化學習中的模仿學習框架準備的,可以應用到其他實驗情境中,為其提供初始的動作決策。為了更有效的用于實驗和測試,平臺設計了像素流送和VR 演示方法,方便在桌面、移動設備或VR 設備上進行體驗。

圖1 自動駕駛仿真教學實驗平臺結構
理想的模擬器應該盡可能的真實,全局環境的布局最好能來源真實地圖,對此平臺使用Cesium 軟件實現該想法。Cesium 是一款3D 地理空間開發系統,根據真實地圖的提供了高精度的地形和影像服務。平臺先從Cesium 中依據經緯度選擇目標城市部分區域的地形和云端的3D 內容作為虛擬場景模板,再用真實材質和高精度模型替換模板中的失真和缺失信息。
此外,由于UE5 中可以直接使用Quixel 三維模型庫,在Quixel 中可以找到數千個由真實世界掃描獲得的高仿真模型,用這些模型填補生成環境中的樹木、道路、房屋等復雜對象。使得靜態仿真環境更加的真實。同時,高仿真模型的渲染帶來的更多計算量的需求,為了優化顯示過程,采用了UE5 中的Nanite 虛擬化幾何體系統,通過將大量模型轉換為Nanite 網格體,減弱了對用戶硬件資源的需求。
最后,自動駕駛的需求可能出現在不同天氣和光照條件下,對于基于圖像的駕駛策略訓練來說,天氣模擬就顯得非常重要。平臺根據天氣和時間變換,提供了可定制的雨、雪、晴天、日初、夜晚等多種環境選項,可在開始菜單或客戶端腳本中設置。(見圖2)

圖2 不同天氣條件下的仿真平臺
為了讓仿真平臺具有更多的互動性,使虛擬世界活動起來,平臺采用了UE5 為大規模生成智能對象的MassAI系統。整個Mass 框架分為三部分:MassEntity,MassGameplay 和MassAI。其中MassEntity是一種面向數據的框架,將所有處理邏輯與數據構成進行分離,可以增強數據和代碼的一致性,簡化未來的并行執行。Mass GamePlay 能夠將大量的實體帶入虛擬世界。包含生成可視化的Spawner 組件和LOD 機制。其中Spawner 通過區域圖確定實體的生成位置,通過區域圖連接在一起的逐點廊道結構,定義生成位置和AI 行為。
在平臺設計過程中,需要為每條人形道路和行車路線分別定義區域圖,并指定不同顏色的標簽,用于引導人群和車輛的生成,見圖3。最后通過MassAI 為智能體添加運行軌跡。為了體現真實環境中的隨機性,通過隨機生成區域圖和行為的方式,添加行人非正常交通。

圖3 在場景中用區域圖實現人群和交通模擬
在Mass 框架中,人群與交通系統存在著一定的區別。人群使用狀態樹,描述當前實例可能出現的所有狀態,即控制AI 的行為,如漫步、閑逛、避讓等。車輛交通系統中,則沒有使用狀態樹。所有行為都在Mass Processor 以編程的方式生成。如沿著車道陸續前進,會沿著車道排列車輛。為避免車輛相撞,車輛會檢測到前車的距離,并根據距離調整車速。
客戶端是用于對虛擬環境進行配置和程序控制的API 框架,使用python 語言通過TCP 協議與服務器端進行通信。針對實驗情景,服務器端提供了默認的情景生成:讓被控車輛和車載攝像頭、雷達、IMU、GPS 等多種傳感器的定點生成。同時也可以通過場景參數定制實驗情景,并提供簡單控制和基于PX4 固件的仿真控制兩種方案,以便獲取初始動作。
客戶端需要服務器的支持才能運行,允許向服務器發送場景參數,設置場景中的交通系統、天氣情況和傳感器等初始信息,發送油門、轉向等控制命令,同時通過傳反饋值,修正自動駕駛策略,以驅動無人機器完成指定任務。一個服務器可以同時支持多個客戶端在線運行,在場景中實現多用戶協同操作。
在仿真平臺中,為面向強化學習策略的自動駕駛設計了5 個情景任務模塊。包含任務目標、達成目標、默認參數等信息??梢酝ㄟ^客戶端設計python 腳本完成任務。
(1) 手動控制:場景中允許用戶直接控制服務器中車輛,完成目標點A 到目標點B 的有障礙駕駛,將用戶的操作記錄為初始動作,通過模仿學習優化控制流程。
(2) 自動導航:固定路線和非固定路線的自動駕駛,實現從目標點A 到隨機目標點B 的自動路徑規劃和駕駛,無移動障礙物,有時間限制。
(3) 避障:開啟人群和車輛交通模擬后,從目標點A 駕駛到隨機目標點B,完成有移動障礙物的跟隨及自動導航,要求無碰撞,有時間限制。
(4) 搜尋:在自動駕駛過程中,從攝像頭傳感器中識別并標識出目標對象,再通過程序控制車輛搜尋目標對象。
強化學習算法本質上,是通過在不斷試錯中獲取環境中的獎勵或懲罰,作為反饋從而指導智能體更好的與環境交互,最后獲得最大收益的過程[9],見圖4。由于強化學習具有與陌生環境獨特的試錯方法和反饋機制,所以很早就應用到智能交通系統,如結合多智能體的Q-Learning 算法解決交通信號控制問題。但傳統的強化學習算法,應用于情況復雜,擁有高維輸入數據的真實環境,實現具有連續動作空間的自動駕駛領域,效果就不夠理想。

圖4 強化學習框架
隨著深度學習在計算機視覺等領域取得了成功,使用深度神經網絡對高維數據進行降維,再完成強化學習過程,為解決復雜問題提供了更好的思路。實際上,使用深度強化學習算法,如DQN、DDPG 等,已成為訓練一個從端到端的自動駕駛模型的常用方法。通過對圖像、深度傳感器和激光雷達等場景輸入數據提取特征,再控制車輛加速、轉向、制動等行為完成自動駕駛過程。
如果要專注于決策過程,簡化感知、定位和控制等步驟的設置,無論采用哪種強化學習算法,都需要考慮訓練目標、訓練方法和系統反饋的標準化。在客戶端中將服務器的通信結果標準化到如下的狀態-操作動作空間:
(1) 允許強化學習算法發送動作指令操控車輛在仿真環境中行進。在接口程序中為車輛提供油門、轉向和剎車3 個參數,值域分別為【0,10】、(-1,1)、【0,1】。通過修改三個參數的值實現對車輛的程序控制。
(2) 能夠獲取被控制車輛的實時狀態。車輛的速度、位置和是否碰撞等信息,不使用Slam 等定位方法,而是直接通過服務器直接傳遞被控車輛的狀態信息。
(3) 能夠得到獎勵反饋。自動導航、避障和搜尋實驗都為半固定路線的自動駕駛場景,可以預先在服務器中及算出推薦的行進路線,以速度快、偏離推薦路線少作為正向獎勵,以負數作為發生碰撞,反向行駛,超出預定時間的懲罰。獎勵函數如下

其中,vx為車輛延預定道路縱向軸線的速度,θ 為車輛的航向角,ε 為偏移距離。
強化學習的訓練框架,也需要由python 定義一個Experiment 類實現,其中包括用于重置環境的Reset函數、每輪訓練的代碼接口Step 函數,以及用于計算獎勵的Reward 函數等。訓練過程的python 偽代碼如下

本研究設計的自動駕駛仿真教學實驗平臺,通過建立高精度、可定制、高互動性的仿真環境,拉近了虛擬和現實的距離。既可以作為一個通用性的自動駕駛訓練平臺,也為駕駛決策過程,實驗和測試算法,提供了簡化的、端到端的平臺。具有較強的實用性和可拓展性,為仿真平臺設計提供了一種思路。