張 騁,陸 濤
(1. 浙江吉利汽車研究院,浙江 寧波 315336; 2. 福州大學物理與信息工程學院,福建 福州 350108)
車輛智能行為驗證與評估平臺旨在對無人駕駛車輛的智能行為進行驗證與評估,具有經(jīng)濟、 安全、 不受時間和空間條件約束等優(yōu)點[1]. 國內(nèi)最新研究成果是吉林大學開發(fā)的新一代先進智能駕駛模擬仿真系統(tǒng)panosim,為汽車電控與智能化技術與產(chǎn)品的研發(fā)提供高效和高精度的測試與驗證[2]. 此外,享有很高聲譽的汽車系統(tǒng)仿真軟件CarSim,被廣泛地應用于現(xiàn)代汽車控制系統(tǒng)的開發(fā).
在2007年DARPA城市挑戰(zhàn)賽上,11輛全尺寸的無人駕駛汽車首次在封閉的賽道上自由行駛. 期間,麻省理工學院的“塔洛斯”和康奈爾大學的“天網(wǎng)”在一場低速事故中相撞. 分析原因有: ① 傳感器數(shù)據(jù)關聯(lián)困難,導致難以察覺緩慢移動的車輛; ② 未能預測車輛意圖; ③ 在運動規(guī)劃中過分強調(diào)車道約束與車輛接近性. 人類道路使用者之間的眼神交流是車輛之間緩慢移動的近距離接觸的重要溝通渠道. 車輛間通信對無人駕駛車輛也可能起到類似的作用,但還存在可用和拒絕服務的問題需要解決[3].
另外,在車水馬龍的現(xiàn)實世界中行駛,周圍往往是不遵守交通規(guī)定的人和車,這是非常棘手的問題.
真實世界的不同狀況,如白天與夜晚、 變化的天氣、 不同的道路情況和路面材料都會使問題變得更加復雜. 動態(tài)的環(huán)境增加了許多不確定性和變量,使機器人系統(tǒng)工程師們很難如以往一樣將問題簡化為一系列基本的假設[4]. 2018年3月18日,Uber自動駕駛試驗車撞上橫穿馬路的行人事件再一次對無人車的實驗方法提出了新的挑戰(zhàn).
無論是老牌的CarSim,還是新一代的panosim,都是針對單一無人駕駛車輛在規(guī)則場景的仿真,而對于多車輛協(xié)同和復雜環(huán)境實時交互的功能開發(fā)支持不足,在未來的無人駕駛功能開發(fā)上存在提升空間. 本項目針對這一空間進行擴展,模擬了以往較難實現(xiàn)的無人駕駛多車輛實時同步交互場景,以減少場地和道路試驗的次數(shù)和風險. 該系統(tǒng)不僅支持單一設備上的多車輛仿真,同時還支持基于網(wǎng)絡多設備的同一場景實時仿真.
本研究主要是針對這一實時系統(tǒng)中的關鍵技術——場景中多車輛之間的運動狀態(tài)同步問題.
圖1 車輛仿真系統(tǒng)構架Fig.1 Vehicle simulation system architecture
車輛同步的系統(tǒng)架構如圖1所示,表示分布在各終端的車輛之間以及終端內(nèi)部車輛的同步關系.
服務器維護著所有車輛和交通參與者的狀態(tài)數(shù)據(jù),含有時間點、 速度和位置等信息,以及記錄當前的狀態(tài)參數(shù),負責協(xié)調(diào)所有車輛的同步; 同一場景里,各終端通過網(wǎng)絡連接至服務器,記錄所有車輛的最新狀態(tài)參數(shù),公用物理引擎維護車輛和交通參與者在場景里的當前運動狀態(tài); 終端內(nèi)的兩種物理引擎,私有引擎承擔車輛仿真功能的計算,與公用引擎同步,共同計算終端自己控制的車輛的運動狀態(tài).
仿真系統(tǒng)具有如下功能:
1) 模擬車輛行駛的外部環(huán)境的靜態(tài)內(nèi)容(如道路,交通信號燈,綠化,建筑等);
2) 模擬動態(tài)內(nèi)容(如行人,交通流量等);
3) 接受駕駛行為輸入,模擬被控制車輛運動行為、 車輛行駛反饋;
4) 支持多臺智能駕駛模擬器互聯(lián),支持多臺設備連入同一仿真測試環(huán)境;
5) 記錄仿真測試環(huán)境中的數(shù)據(jù)(包括環(huán)境數(shù)據(jù)與車輛動態(tài)數(shù)據(jù)),支持通過數(shù)據(jù)實現(xiàn)實驗回放;
6) 記錄數(shù)據(jù)能夠實時備份,支持遠程備份;
7) 支持升級,更新,自定義模擬環(huán)境中的各類視覺外觀資源(如車輛,場景,靜態(tài)動態(tài)內(nèi)容等);
8) 使用開放數(shù)據(jù)格式,提供第三方程序數(shù)據(jù)接口(ROS、 UDP等).
有一種寫實風格的競速類網(wǎng)絡游戲是以賽車為角色進行駕駛比賽的. 這種由完全仿真的車輛在逼近真實的環(huán)境中行駛,車輛之間、 車輛與環(huán)境的交互作用,得到運動學意義上的結果,正符合無人駕駛功能開發(fā)驗證平臺的期望. 以賽車類網(wǎng)絡游戲技術作為基礎,研制一種超越游戲用途,可以高速高效地仿真車輛間的實時交互,滿足無人駕駛功能研發(fā)需要的開發(fā)驗證平臺,這就是本項目的設計思路.
游戲技術中的物理引擎由運動學計算和碰撞檢測組成. 物理引擎能遵循科學的規(guī)律自行推演剛體運動,而不必依靠編寫腳本,比如描述車輛的顛簸、 所到達的位置等. 碰撞檢測可以探測各物體的物理邊緣,當兩個3D物體撞在一起的時候,防止它們相互穿過,碰撞探測會根據(jù)物體和墻之間的特性確定兩者的位置和相互的作用關系.
將游戲技術中的物理引擎作為本系統(tǒng)的公用物理引擎,構造車輛的運動學模型,描述車輛之間、 車輛與環(huán)境之間的交互關系.
科學仿真中的要求是能夠集成車輛的所有動力部件和輔助系統(tǒng),提供所需要的數(shù)據(jù)結果. 然而,游戲技術中的物理引擎?zhèn)戎赜趯崟r近似[5],無法提供建立車輛仿真數(shù)學模型的計算精度. 為兼得仿真精度和實時速度,本項目優(yōu)化設計了一套只針對車輛的科學仿真物理引擎,私用于每輛車的內(nèi)部系統(tǒng),構造車輛的動力學模型[6]. 私用物理引擎與公用物理引擎并行計算,大大簡化了系統(tǒng)計算復雜度. 在保留實時性的同時又有科學仿真的真實性,還能運行在通用的計算設備上,甚至可運行于更為資源受限的平臺(比如手持型游戲設備和移動手機),而不需要配置昂貴的專用設備.
單一軟件平臺兩種物理引擎,其關鍵是動力學模型與運動學模型的同步. 單終端上可以有多輛車在同一場景中,多車輛關鍵是各輛車運動狀態(tài)的同步. 當擴展至網(wǎng)絡分布式系統(tǒng),關鍵就是各終端所控制的車輛與其他終端的車輛的運動狀態(tài)的同步,由網(wǎng)絡服務器協(xié)調(diào). 這就是本系統(tǒng)的同步策略.
多車輛實時仿真時,有單終端或多終端并行兩種工況. 單終端是以終端本身的時鐘為標準. 多終端由于運行在開放的網(wǎng)絡環(huán)境中,存在時鐘的不確定性,因此需要引入統(tǒng)一的時間基準. 本方案使用服務器設定時鐘為統(tǒng)一時鐘. 終端的時間校準方式是,終端發(fā)起請求服務器時間,服務器收到請求向終端發(fā)送基準時間,終端使用收到的服務器返回的時刻減去發(fā)起請求的時刻得到往返延遲,用服務器發(fā)送的基準時間加上1/2往返延遲估算出基準時間和傳輸時間. 誤差一般在毫秒以下.
由于系統(tǒng)要求極高的實時性,必須有預測機制. 對于終端自控的車輛,私有引擎進行驅動力預測,把每幀結束時刻的狀態(tài)作為當前狀態(tài). 對于場景中其他終端的車輛,公有引擎進行運動狀態(tài)預測,以收到的數(shù)據(jù)包中最新時間戳的相關數(shù)據(jù)為當前數(shù)據(jù). 這里使用的轉移矩陣,根據(jù)車輛動力學模型,以車輛技術的經(jīng)驗數(shù)據(jù)為依據(jù)[6],預測與實際車輛運動狀態(tài)有很高的吻合度. 系統(tǒng)的運行過程就是一個預測執(zhí)行—同步制約的過程.
系統(tǒng)采用分層的狀態(tài)同步方式: 在終端內(nèi)部,車輛仿真與場景仿真通過交換位置數(shù)據(jù)和速度數(shù)據(jù)的方式實現(xiàn)同步. 算法流程示意圖如圖2所示,表示在客戶端內(nèi)部,每臺車輛通過與場景交換數(shù)據(jù)來取得車輛間的同步.
圖2 終端內(nèi)部流程示意圖Fig.2 Terminal internal synchronizatiion diagram
圖3 終端內(nèi)部同步時序示意圖Fig.3 Terminal internal synchronization sequence diagram
在終端內(nèi)部,公用引擎計算出當前時刻各臺車的位置相關的數(shù)據(jù),私用引擎讀取后更新各車輛的位置管理器參數(shù),并分析與預測值的誤差因素,如是否有碰撞等被動力的作用. 接著依據(jù)動力系統(tǒng)(這里包括被測控制器的因素: 人在環(huán)的操控,軟硬件在環(huán)的測試)的驅動力,預測出下一時段的速度相關數(shù)據(jù),公用引擎讀取并更新速度管理器參數(shù),運行到下一時刻檢測碰撞并計算出與位置相關的數(shù)據(jù),完成一個幀循環(huán),既實現(xiàn)了車輛的驅動力與車輛行為的同步,也實現(xiàn)了各車輛之間的同步. 時序如圖3所示.
周期中,Tn—t1讀數(shù)據(jù),t1—t2計算,t2—t3寫數(shù)據(jù),t3—Tn+1空閑. 紅色虛線表示狀態(tài)數(shù)據(jù),藍色虛線表示速度數(shù)據(jù). 公用引擎的周期通常選擇10 ms,可以達到運動學仿真需求,而私用引擎以5~10倍于公用引擎的頻率進行計算,使車輛動力學模型的仿真更為精確.
在網(wǎng)絡上,各終端都通過與服務器交換數(shù)據(jù)同步到場景中,以實現(xiàn)跨終端同步仿真,并可彈性擴展至大規(guī)模車輛仿真,可模擬車流量聚集的堵車場景. 算法流程示意圖如圖4所示,表示由服務器來執(zhí)行在不同的客戶端上數(shù)據(jù)的同步.
圖4 多終端同步示意圖Fig.4 Multi-terminal synchronization diagram
在以服務器為核心的分布式網(wǎng)絡上,各終端在每個幀循環(huán)結束時刻把本地所維護對象的當前狀態(tài)數(shù)據(jù)(時間戳,位置坐標,方向速度,等)報告給服務端. 服務端接收到數(shù)據(jù)包后向同一場景中的關聯(lián)終端廣
圖5 多終端同步時序示意圖Fig.5 Multi-terminal synchronization sequence diagram
播. 各終端依據(jù)服務端的推送,對公用引擎中的由網(wǎng)絡中其他終端所管理的車輛和交通參與者進行處理: 以最新的時間戳的數(shù)據(jù)更新對象狀態(tài),然后預測并執(zhí)行車輛的運動估計. 完成以上流程后,終端回到等待接收到服務器的推送階段,直到實時仿真結束. 以系統(tǒng)的同步間隔在100 ms為基準,同步環(huán)境下各終端間的車輛位置誤差在最高時速(120 km·h-1)過程中不超過0.5 m,速度越低誤差越小. 時序如圖5所示.
服務器發(fā)送同步信號的頻率低于本地公用引擎,延時幾個周期.m1、m4為有效同步信號,m2信號丟失,由于m3延時落后于m4到達,失去同步作用,m5信號未畫出.
由于仿真過程中同時希望屏幕上要有一致的視覺效果[7],渲染引擎的數(shù)據(jù)與場景計算結果的同步如圖6所示. 有效的同步算法協(xié)調(diào)運行中的各線程平滑銜接,讓系統(tǒng)整體穩(wěn)定有序地運行.
圖6 車輛仿真時示意圖Fig.6 Vehicle simulation time diagram
仿真運行時,渲染引擎讀取公用物理引擎每個循環(huán)計算的運動狀態(tài)數(shù)據(jù),更新自己的數(shù)據(jù),在屏幕上顯示,完成畫面的一幀. 得到的就是數(shù)據(jù)和畫面完全一致的,仿真度達到需求的,非常接近真實的評估和驗證結果.
圖4的服務端啟動,從數(shù)據(jù)庫讀取服務器配置,等待登錄車輛. 當?shù)谝粋€終端啟動場景仿真運行時,服務端的同步被激活,直到收到最后一個連接的結束通知. 停止同步,清理場景數(shù)據(jù),進入休眠,等待下一次場景的啟動.
圖2的客戶端啟動,車輛登錄服務器,根據(jù)設定從數(shù)據(jù)庫讀取車輛的配置. 選擇場景,開啟車輛仿真功能,激活服務端的同步. 雙物理引擎根據(jù)外部控制器的輸入,同步計算出車輛的位置、 速度、 姿態(tài)等狀態(tài)參數(shù)的改變,反饋給控制器. 外部控制器包括人在環(huán)的駕駛模擬器、 在環(huán)測試的智能駕駛的軟硬件產(chǎn)品. 記錄并輸出仿真數(shù)據(jù),運行結束后關閉場景,通知服務端.
圖6渲染引擎和物理引擎初始化后,車輛模型啟動,然后三個模塊并行執(zhí)行. 根據(jù)車輛模型的狀態(tài)參數(shù)的改變、 公用物理引擎的場景更新,渲染引擎不斷更新畫面數(shù)據(jù),以不低于60 Hz的頻率刷新屏幕. 可以得到與科學仿真同步的,與實際場景吻合度非常高的視景畫面.
本系統(tǒng)曾經(jīng)的用戶有: 有大眾尚酷、 福田 MPX、 福田 Ollin、 凱迪拉克 CTS-V、 吉利 EC8、 GC9 等.
模擬駕駛仿真視頻的回放截圖如圖7所示,這是一場跟車制動的在環(huán)測試,兩個版本的AEB-P主動安全系統(tǒng)分別接入仿真系統(tǒng),測試工況為: 城市高架路,40 km·h-1,30次.
圖7中,前車是人工駕駛,后車是無人駕駛. 前車隨機剎車,后車自動制動,記錄兩車間距. 兩臺車輛均執(zhí)行高精度動力學仿真. 測試結果數(shù)據(jù)如圖8所示.
圖8中的x軸為測試次數(shù),y軸為車距,藍色曲線圖是優(yōu)化前的版本的數(shù)據(jù),橙色曲線表示優(yōu)化后的版本數(shù)據(jù),兩次的測試結果,反映了車輛中的AEB-P功能,在優(yōu)化后跟車制動的間距波動范圍變小,穩(wěn)定度提高. 這個仿真結果與實車測試結果吻合度非常高. 仿真平臺發(fā)揮了預期的作用.
圖7 雙車跟車測試視頻截圖Fig.7 Screenshot of the two-cars follow test video
圖8 雙車跟車測試結果數(shù)據(jù)Fig.8 Datas of the test results of both vehicles and vehicles
圖9 多車仿真視頻截圖Fig.9 Screenshot of multi-vehicle simulation video
仿真實景視頻截圖如圖9所示,模擬了復雜環(huán)境中的跟車制動場景. 共3臺車參與測試,前車是人工駕駛,后兩跟車是自動駕駛,黃色主視角車為中間車,除了測試本車的跟車制動,還測試被后車追尾的可能性. 這樣的復雜環(huán)境工況,真實環(huán)境實車測試很不現(xiàn)實,做重復試驗幾乎完全不可能. 本仿真系統(tǒng)為復雜工況的功能測試提供了可能.
畫面中的環(huán)境是地圖商提供的衛(wèi)星實景[8],25 km虛擬現(xiàn)實場景,場景中有大量的運動物體,包括參與交通的其他仿真車輛,也有單純作為干擾障礙的車輛模型.
傳統(tǒng)的車輛仿真系統(tǒng),多車輛仿真難以在統(tǒng)一環(huán)境下實現(xiàn),需要多個軟硬件聯(lián)合仿真,本方案使用公用物理引擎模擬所有交通環(huán)境場景和車輛本身的運動,仿真系統(tǒng)得以優(yōu)化. 針對仿真車輛額外附加的私有物理模型,使綜合平臺仍然保持了車輛獨立仿真時才擁有的高擬真度. 本算法實現(xiàn)了多客戶端,多車輛聯(lián)合仿真的狀態(tài)同步系統(tǒng). 通過同步多個仿真環(huán)境中的交通參與者行為、 車輛運動學觀測以及時鐘信號,使需要多車配合才能實現(xiàn)的場景成為可能.