劉向東,王曉光,鄒 密
(吉林大學(xué)公共計(jì)算機(jī)教學(xué)與研究中心,吉林 長(zhǎng)春 130012)
自動(dòng)駕駛技術(shù)是近年來的研究熱點(diǎn)[1]。為了滿足車輛的安全性,可實(shí)用的自動(dòng)駕駛系統(tǒng)需要根據(jù)不同的交通狀況進(jìn)行測(cè)試,美國(guó)蘭德智庫(kù)的估算,這需要110 億英里以上的實(shí)地驗(yàn)證[2]。這意味著,如果100 輛測(cè)試車以時(shí)速25 英里每小時(shí)全天不停車測(cè)試,也要花費(fèi)數(shù)百年的時(shí)間。所以通過仿真系統(tǒng),實(shí)現(xiàn)自動(dòng)駕駛算法的驗(yàn)證是技術(shù)落地的必經(jīng)之路。
自動(dòng)駕駛仿真系統(tǒng),需要為算法提供盡可能真實(shí)的場(chǎng)景,包括行人、車輛、障礙物等不同情況的交通模擬,還要允許在暴雨、強(qiáng)光和傍晚等不同天氣條件下進(jìn)行測(cè)試。自動(dòng)駕駛算法則需要在環(huán)境中實(shí)現(xiàn)感知、定位、決策和控制等所有步驟?,F(xiàn)有的仿真系統(tǒng),大都追求全過程個(gè)性化模擬[3-4],缺乏對(duì)駕駛決策,這個(gè)自動(dòng)駕駛算法的核心內(nèi)容的專向設(shè)計(jì),從而提高了系統(tǒng)和實(shí)驗(yàn)的復(fù)雜度。
強(qiáng)化學(xué)習(xí)是機(jī)器學(xué)習(xí)領(lǐng)域中,用來解決智能體在不確定的復(fù)雜環(huán)境中優(yōu)化決策以獲取最大化獎(jiǎng)勵(lì)的問題。與傳統(tǒng)的決策算法相比,能夠處理無模型的動(dòng)態(tài)規(guī)劃情況[5],非常適合在復(fù)雜環(huán)境下的實(shí)現(xiàn)自動(dòng)駕駛決策。本研究基于UE5 引擎和Airsim 框架,針對(duì)自動(dòng)駕駛的決策過程,設(shè)計(jì)并實(shí)現(xiàn)了仿真平臺(tái)和實(shí)驗(yàn)情景,簡(jiǎn)化了感知、定位和控制接口,使用python 語言為強(qiáng)化學(xué)習(xí)過程設(shè)計(jì)了代碼框架。仿真平臺(tái)實(shí)現(xiàn)了使用強(qiáng)化學(xué)習(xí)算法,針對(duì)從端到端的自動(dòng)駕駛應(yīng)用的簡(jiǎn)單測(cè)試流程,也可應(yīng)用于機(jī)器學(xué)習(xí)的教學(xué)和實(shí)驗(yàn)。
為了達(dá)到L4 級(jí)別以上的自動(dòng)化等級(jí),需要被駕駛車輛能夠?qū)崟r(shí)監(jiān)測(cè)周圍路況,獲取圖像、距離、位置等信息,作為決策依據(jù),通過程序控制實(shí)現(xiàn)導(dǎo)航、避障等指定任務(wù),消除人工干預(yù)。由于在整個(gè)過程中,決策程序?qū)儆谟^察者的角色,而環(huán)境、車輛、交通、傳感器數(shù)據(jù)可以獨(dú)立的自主運(yùn)行。所以,仿真實(shí)驗(yàn)平臺(tái)被設(shè)計(jì)為服務(wù)器- 客戶端的運(yùn)行模式,決策系統(tǒng)位于客戶端。
服務(wù)器端在Unreal Engine5(UE5)游戲引擎上開發(fā),主要實(shí)現(xiàn)環(huán)境布局、模型展示和多種天氣條件等真實(shí)世界的模擬。UE5 提供了最先進(jìn)的渲染質(zhì)量和逼真的物理效果,讓虛擬環(huán)境在物理和視覺上都實(shí)現(xiàn)真實(shí)模擬。為了體現(xiàn)行人、車輛、交叉路口等交通情況的復(fù)雜性[6],服務(wù)器借助MassAI 組件生成大量可自主運(yùn)動(dòng)的人和車輛的智能體,以模擬交通系統(tǒng)。
客戶端基于微軟的開源模擬器Airsim 實(shí)現(xiàn)對(duì)無人機(jī)器和交通系統(tǒng)的程序控制。Airsim 支持基于PX4[7]等飛控固件的實(shí)時(shí)在環(huán)仿真,可以對(duì)無人機(jī)、車輛模擬真實(shí)的手動(dòng)控制[8]。Airsim 也提供了API 接口,通過TCP 協(xié)議與服務(wù)器端進(jìn)行通信。仿真平臺(tái)基于Airsim,為用戶在客戶端生成了Python 接口,用于服務(wù)器中的車輛的生成、傳感器設(shè)置和交通系統(tǒng)的控制。此外,為了實(shí)現(xiàn)強(qiáng)化學(xué)習(xí)算法測(cè)試,還需要為強(qiáng)化學(xué)習(xí)設(shè)計(jì)Python 接口以實(shí)現(xiàn)對(duì)自動(dòng)駕駛和其他任務(wù)的訓(xùn)練和測(cè)試。
最后,仿真平臺(tái)為強(qiáng)化學(xué)習(xí)決策設(shè)計(jì)了4 個(gè)實(shí)驗(yàn)情景模塊:目標(biāo)識(shí)別、搜尋、避障、自動(dòng)駕駛和手動(dòng)控制,見圖1。其中,手動(dòng)控制模塊是為強(qiáng)化學(xué)習(xí)中的模仿學(xué)習(xí)框架準(zhǔn)備的,可以應(yīng)用到其他實(shí)驗(yàn)情境中,為其提供初始的動(dòng)作決策。為了更有效的用于實(shí)驗(yàn)和測(cè)試,平臺(tái)設(shè)計(jì)了像素流送和VR 演示方法,方便在桌面、移動(dòng)設(shè)備或VR 設(shè)備上進(jìn)行體驗(yàn)。
圖1 自動(dòng)駕駛仿真教學(xué)實(shí)驗(yàn)平臺(tái)結(jié)構(gòu)
理想的模擬器應(yīng)該盡可能的真實(shí),全局環(huán)境的布局最好能來源真實(shí)地圖,對(duì)此平臺(tái)使用Cesium 軟件實(shí)現(xiàn)該想法。Cesium 是一款3D 地理空間開發(fā)系統(tǒng),根據(jù)真實(shí)地圖的提供了高精度的地形和影像服務(wù)。平臺(tái)先從Cesium 中依據(jù)經(jīng)緯度選擇目標(biāo)城市部分區(qū)域的地形和云端的3D 內(nèi)容作為虛擬場(chǎng)景模板,再用真實(shí)材質(zhì)和高精度模型替換模板中的失真和缺失信息。
此外,由于UE5 中可以直接使用Quixel 三維模型庫(kù),在Quixel 中可以找到數(shù)千個(gè)由真實(shí)世界掃描獲得的高仿真模型,用這些模型填補(bǔ)生成環(huán)境中的樹木、道路、房屋等復(fù)雜對(duì)象。使得靜態(tài)仿真環(huán)境更加的真實(shí)。同時(shí),高仿真模型的渲染帶來的更多計(jì)算量的需求,為了優(yōu)化顯示過程,采用了UE5 中的Nanite 虛擬化幾何體系統(tǒng),通過將大量模型轉(zhuǎn)換為Nanite 網(wǎng)格體,減弱了對(duì)用戶硬件資源的需求。
最后,自動(dòng)駕駛的需求可能出現(xiàn)在不同天氣和光照條件下,對(duì)于基于圖像的駕駛策略訓(xùn)練來說,天氣模擬就顯得非常重要。平臺(tái)根據(jù)天氣和時(shí)間變換,提供了可定制的雨、雪、晴天、日初、夜晚等多種環(huán)境選項(xiàng),可在開始菜單或客戶端腳本中設(shè)置。(見圖2)
圖2 不同天氣條件下的仿真平臺(tái)
為了讓仿真平臺(tái)具有更多的互動(dòng)性,使虛擬世界活動(dòng)起來,平臺(tái)采用了UE5 為大規(guī)模生成智能對(duì)象的MassAI系統(tǒng)。整個(gè)Mass 框架分為三部分:MassEntity,MassGameplay 和MassAI。其中MassEntity是一種面向數(shù)據(jù)的框架,將所有處理邏輯與數(shù)據(jù)構(gòu)成進(jìn)行分離,可以增強(qiáng)數(shù)據(jù)和代碼的一致性,簡(jiǎn)化未來的并行執(zhí)行。Mass GamePlay 能夠?qū)⒋罅康膶?shí)體帶入虛擬世界。包含生成可視化的Spawner 組件和LOD 機(jī)制。其中Spawner 通過區(qū)域圖確定實(shí)體的生成位置,通過區(qū)域圖連接在一起的逐點(diǎn)廊道結(jié)構(gòu),定義生成位置和AI 行為。
在平臺(tái)設(shè)計(jì)過程中,需要為每條人形道路和行車路線分別定義區(qū)域圖,并指定不同顏色的標(biāo)簽,用于引導(dǎo)人群和車輛的生成,見圖3。最后通過MassAI 為智能體添加運(yùn)行軌跡。為了體現(xiàn)真實(shí)環(huán)境中的隨機(jī)性,通過隨機(jī)生成區(qū)域圖和行為的方式,添加行人非正常交通。
圖3 在場(chǎng)景中用區(qū)域圖實(shí)現(xiàn)人群和交通模擬
在Mass 框架中,人群與交通系統(tǒng)存在著一定的區(qū)別。人群使用狀態(tài)樹,描述當(dāng)前實(shí)例可能出現(xiàn)的所有狀態(tài),即控制AI 的行為,如漫步、閑逛、避讓等。車輛交通系統(tǒng)中,則沒有使用狀態(tài)樹。所有行為都在Mass Processor 以編程的方式生成。如沿著車道陸續(xù)前進(jìn),會(huì)沿著車道排列車輛。為避免車輛相撞,車輛會(huì)檢測(cè)到前車的距離,并根據(jù)距離調(diào)整車速。
客戶端是用于對(duì)虛擬環(huán)境進(jìn)行配置和程序控制的API 框架,使用python 語言通過TCP 協(xié)議與服務(wù)器端進(jìn)行通信。針對(duì)實(shí)驗(yàn)情景,服務(wù)器端提供了默認(rèn)的情景生成:讓被控車輛和車載攝像頭、雷達(dá)、IMU、GPS 等多種傳感器的定點(diǎn)生成。同時(shí)也可以通過場(chǎng)景參數(shù)定制實(shí)驗(yàn)情景,并提供簡(jiǎn)單控制和基于PX4 固件的仿真控制兩種方案,以便獲取初始動(dòng)作。
客戶端需要服務(wù)器的支持才能運(yùn)行,允許向服務(wù)器發(fā)送場(chǎng)景參數(shù),設(shè)置場(chǎng)景中的交通系統(tǒng)、天氣情況和傳感器等初始信息,發(fā)送油門、轉(zhuǎn)向等控制命令,同時(shí)通過傳反饋值,修正自動(dòng)駕駛策略,以驅(qū)動(dòng)無人機(jī)器完成指定任務(wù)。一個(gè)服務(wù)器可以同時(shí)支持多個(gè)客戶端在線運(yùn)行,在場(chǎng)景中實(shí)現(xiàn)多用戶協(xié)同操作。
在仿真平臺(tái)中,為面向強(qiáng)化學(xué)習(xí)策略的自動(dòng)駕駛設(shè)計(jì)了5 個(gè)情景任務(wù)模塊。包含任務(wù)目標(biāo)、達(dá)成目標(biāo)、默認(rèn)參數(shù)等信息。可以通過客戶端設(shè)計(jì)python 腳本完成任務(wù)。
(1) 手動(dòng)控制:場(chǎng)景中允許用戶直接控制服務(wù)器中車輛,完成目標(biāo)點(diǎn)A 到目標(biāo)點(diǎn)B 的有障礙駕駛,將用戶的操作記錄為初始動(dòng)作,通過模仿學(xué)習(xí)優(yōu)化控制流程。
(2) 自動(dòng)導(dǎo)航:固定路線和非固定路線的自動(dòng)駕駛,實(shí)現(xiàn)從目標(biāo)點(diǎn)A 到隨機(jī)目標(biāo)點(diǎn)B 的自動(dòng)路徑規(guī)劃和駕駛,無移動(dòng)障礙物,有時(shí)間限制。
(3) 避障:開啟人群和車輛交通模擬后,從目標(biāo)點(diǎn)A 駕駛到隨機(jī)目標(biāo)點(diǎn)B,完成有移動(dòng)障礙物的跟隨及自動(dòng)導(dǎo)航,要求無碰撞,有時(shí)間限制。
(4) 搜尋:在自動(dòng)駕駛過程中,從攝像頭傳感器中識(shí)別并標(biāo)識(shí)出目標(biāo)對(duì)象,再通過程序控制車輛搜尋目標(biāo)對(duì)象。
強(qiáng)化學(xué)習(xí)算法本質(zhì)上,是通過在不斷試錯(cuò)中獲取環(huán)境中的獎(jiǎng)勵(lì)或懲罰,作為反饋從而指導(dǎo)智能體更好的與環(huán)境交互,最后獲得最大收益的過程[9],見圖4。由于強(qiáng)化學(xué)習(xí)具有與陌生環(huán)境獨(dú)特的試錯(cuò)方法和反饋機(jī)制,所以很早就應(yīng)用到智能交通系統(tǒng),如結(jié)合多智能體的Q-Learning 算法解決交通信號(hào)控制問題。但傳統(tǒng)的強(qiáng)化學(xué)習(xí)算法,應(yīng)用于情況復(fù)雜,擁有高維輸入數(shù)據(jù)的真實(shí)環(huán)境,實(shí)現(xiàn)具有連續(xù)動(dòng)作空間的自動(dòng)駕駛領(lǐng)域,效果就不夠理想。
圖4 強(qiáng)化學(xué)習(xí)框架
隨著深度學(xué)習(xí)在計(jì)算機(jī)視覺等領(lǐng)域取得了成功,使用深度神經(jīng)網(wǎng)絡(luò)對(duì)高維數(shù)據(jù)進(jìn)行降維,再完成強(qiáng)化學(xué)習(xí)過程,為解決復(fù)雜問題提供了更好的思路。實(shí)際上,使用深度強(qiáng)化學(xué)習(xí)算法,如DQN、DDPG 等,已成為訓(xùn)練一個(gè)從端到端的自動(dòng)駕駛模型的常用方法。通過對(duì)圖像、深度傳感器和激光雷達(dá)等場(chǎng)景輸入數(shù)據(jù)提取特征,再控制車輛加速、轉(zhuǎn)向、制動(dòng)等行為完成自動(dòng)駕駛過程。
如果要專注于決策過程,簡(jiǎn)化感知、定位和控制等步驟的設(shè)置,無論采用哪種強(qiáng)化學(xué)習(xí)算法,都需要考慮訓(xùn)練目標(biāo)、訓(xùn)練方法和系統(tǒng)反饋的標(biāo)準(zhǔn)化。在客戶端中將服務(wù)器的通信結(jié)果標(biāo)準(zhǔn)化到如下的狀態(tài)-操作動(dòng)作空間:
(1) 允許強(qiáng)化學(xué)習(xí)算法發(fā)送動(dòng)作指令操控車輛在仿真環(huán)境中行進(jìn)。在接口程序中為車輛提供油門、轉(zhuǎn)向和剎車3 個(gè)參數(shù),值域分別為【0,10】、(-1,1)、【0,1】。通過修改三個(gè)參數(shù)的值實(shí)現(xiàn)對(duì)車輛的程序控制。
(2) 能夠獲取被控制車輛的實(shí)時(shí)狀態(tài)。車輛的速度、位置和是否碰撞等信息,不使用Slam 等定位方法,而是直接通過服務(wù)器直接傳遞被控車輛的狀態(tài)信息。
(3) 能夠得到獎(jiǎng)勵(lì)反饋。自動(dòng)導(dǎo)航、避障和搜尋實(shí)驗(yàn)都為半固定路線的自動(dòng)駕駛場(chǎng)景,可以預(yù)先在服務(wù)器中及算出推薦的行進(jìn)路線,以速度快、偏離推薦路線少作為正向獎(jiǎng)勵(lì),以負(fù)數(shù)作為發(fā)生碰撞,反向行駛,超出預(yù)定時(shí)間的懲罰。獎(jiǎng)勵(lì)函數(shù)如下
其中,vx為車輛延預(yù)定道路縱向軸線的速度,θ 為車輛的航向角,ε 為偏移距離。
強(qiáng)化學(xué)習(xí)的訓(xùn)練框架,也需要由python 定義一個(gè)Experiment 類實(shí)現(xiàn),其中包括用于重置環(huán)境的Reset函數(shù)、每輪訓(xùn)練的代碼接口Step 函數(shù),以及用于計(jì)算獎(jiǎng)勵(lì)的Reward 函數(shù)等。訓(xùn)練過程的python 偽代碼如下
本研究設(shè)計(jì)的自動(dòng)駕駛仿真教學(xué)實(shí)驗(yàn)平臺(tái),通過建立高精度、可定制、高互動(dòng)性的仿真環(huán)境,拉近了虛擬和現(xiàn)實(shí)的距離。既可以作為一個(gè)通用性的自動(dòng)駕駛訓(xùn)練平臺(tái),也為駕駛決策過程,實(shí)驗(yàn)和測(cè)試算法,提供了簡(jiǎn)化的、端到端的平臺(tái)。具有較強(qiáng)的實(shí)用性和可拓展性,為仿真平臺(tái)設(shè)計(jì)提供了一種思路。