陳君毅 馮天悅 劉力豪 吳旭陽
(同濟大學,上海 201804)
主題詞:仿真測試 決策規劃系統 場景生成 OpenSCENARIO
自動駕駛系統面臨的駕駛環境具有復雜性和不確定性,這對其決策規劃系統提出了巨大挑戰[1-2]。為尋找系統缺陷,提高安全性,有必要對自動駕駛決策規劃系統進行測試。
現有的自動駕駛測試技術中,基于場景的仿真測試不僅能提高測試的可重復性和安全性,而且可以通過自動測試和加速測試等方法降低時間和經濟成本[3],大幅提高決策規劃系統的測試效率。基于場景的仿真測試需預先設計生成測試場景。飛馬(PEGASUS)項目提出了場景表示的3 個抽象層次,即功能場景、邏輯場景和具體場景,為測試場景的結構化生成奠定了基礎[4]。基于上述場景層次,目前已有較多的自動駕駛仿真測試場景生成研究:針對功能場景和邏輯場景,Gelder 通過將真實場景參數化,得到邏輯場景的參數空間,為生成具體場景提供基礎[5];Li 基于本體論描述自動駕駛場景,并在此基礎上,采用組合測試方法生成具體場景所需的參數[6];Bagschik 基于層級模型構建了結構化的功能場景[4];Menzel基于關鍵字將功能場景轉換至邏輯場景,為具體場景生成提供基礎,但其具體關鍵字的描述并不清晰[7]。在具體場景方面:GeoScenario 采用領域特定語言表示具體場景,但格式復雜[8];CARLA[9]和AirSim[10]等仿真軟件采用python腳本生成具體場景,使場景具有良好的可讀性,但難以實現具體場景的自動化生成。國際自動化及測量系統標準協會(Association for Standardisation of Automation and Measuring Systems,ASAM)制定并推廣的OpenX 標準中,OpenSCENARIO作為動態場景格式,描述了OpenDrive 靜態場景即道路上所發生的事件[11],并采用了可擴展標記語言,使其易于解析的同時保證了場景內大部分元素的可重用性。
綜上所述,已有較多功能場景和邏輯場景生成的相關研究,為具體場景的生成提供了基礎。場景文件作為具體場景的載體,也有較多的可用格式。但在實際仿真測試中,基于特定場景格式編寫生成具體場景文件較為復雜,目前還缺少相應的自動化生成方法。因此,本文基于OpenX標準中的場景格式,提出一種面向決策規劃系統功能測試的具體場景自動化生成方法,以提高決策規劃系統測試的具體場景生成效率,并將該方法應用于交通擁堵自動駕駛(Traffic Jam Pilot,TJP)功能的仿真測試,驗證其有效性和高效性。
為保證功能場景的結構化,本文基于層級模型定義了面向決策規劃系統的功能場景。層級模型的第1~6 層分別為基礎道路、交通基礎設施、臨時靜態障礙物、交通參與者、環境和電子通信設施[12]。針對決策規劃系統的測試需求,分析得到其必需的輸入為第1層道路拓撲結構、第2層提供的交通環境信號和第4層中交通參與者的信息(包括自車在內的靜態和動態交通參與者的位置與動作信息)。基于此,本文將面向決策規劃系統測試的功能場景定義為一定道路拓撲結構和交通信號條件下的自車與其他交通參與者的不同位置和動作的組合。
基于上述功能場景定義,本文提取道路拓撲結構、交通信號、自車和其他交通參與者等功能場景關鍵字并映射為相應參數,以構建參數空間,實現邏輯場景的生成。邏輯場景的參數空間包含參數類型和參數范圍,其中,由功能場景關鍵字映射得到的參數類型稱為關鍵參數類型,后續生成具體場景所需的其他缺省參數類型稱為非關鍵參數類型,各類型參數的范圍根據測試需求確定。不同功能下決策規劃系統所需輸入不同,故映射的關鍵參數類型需對應功能具體分析,考慮到部分參數類型的通用性,本文分析得到如表1 所示的映射關系。

表1 關鍵字與關鍵參數類型的映射關系
針對表1中無法直接賦值的關鍵參數類型,本文將進一步細分以明確定義。基于《公路路線設計規范》中對道路結構幾何元素的劃分[13],結合決策規劃系統所需的道路信息,本文將拓撲類型劃分為典型的直道、彎道、上、下匝道、路口、坡道等。根據自車與其他交通參與者在道路拓撲結構上的位置關系,考慮到僅在一定范圍內的其他交通參與者會影響自車決策規劃,對相對位置進行有效類等價劃分[14],通過建立特定坐標系得到各位置編號,以便后續的數據轉換,圖1 所示為直道拓撲結構下可能的位置編號示例。

圖1 直道拓撲結構的位置編號示例
對于動作參數,由于不同交通參與者動作特征不同,首先劃分自車和其他交通參與者的動作類別并給出對應參數。目前,有關車輛動作類別的分析已有較多研究[15],其中自動駕駛車輛所有動作可視為在全局路徑規劃下基于環境感知和自車狀態所做的決策規劃結果,本文統一稱為自動駕駛動作,對應參數為全局路徑規劃所需的目的地坐標。基于Rigolli 對駕駛員動作的分解[16],將自然駕駛車輛動作分為加速、減速、勻速、左換道、右換道、左轉、右轉等原子動作。其中,變道和轉彎的相關動作模型多基于軌跡和時間[17],由于軌跡種類較多,可根據仿真軟件具體設定,故采用持續時間作為統一的動作參數。其中,勻速動作對應速度參數,加/減速動作離散為多段勻加/減速過程,對應參數為加/減速度和持續時間。此外,由于非車輛的交通參與者(如行人或動物)的行為自由度較高,難以對其動作特征進行建模,故將其動作視為多段直線行駛,劃分為勻速和變速動作。基于此,各交通參與者的動作類別和對應參數如表2所示。

表2 各交通參與者的動作類別和對應參數
此外,在實際仿真測試中,需明確各動作的開始時刻,故動作參數還必須包含觸發條件這一子參數。在場景生成時,基于時間的觸發條件易于設置,最為簡便,但考慮到決策規劃系統受其他交通參與者影響,由于其他交通參與者動作的先驗未知性,基于時間觸發的動作難以對自車決策規劃系統進行考驗。因此,為滿足測試需求,結合常規的仿真軟件設置條件,本文將動作觸發條件這一子參數分為基于時間、事件和空間觸發。其中,基于時間的觸發條件作為默認條件,基于事件或空間觸發的動作在功能場景描述時還需加以說明,并在參數空間內進一步確定對應的觸發條件參數。
OpenX格式具有可擴展性和可重用性等優點,本文采用該格式生成具體場景文件。鑒于在測試中靜態場景相對單一固定,在OpenDrive靜態場景確定的基礎上,本節通過分析邏輯場景參數空間與OpenSCENARIO 格式的映射關系,基于功能場景關鍵字自動化生成Open?SCENARIO格式的具體場景文件。
首先分析OpenSCENARIO 格式,將其劃分為目錄、對象、故事板3 層結構,并依次細分為如圖2 所示的內容,用于對應邏輯場景參數空間。

圖2 OpenSCENARIO格式分析
基于上述格式分析,將非關鍵的OpenSCENARIO內容,如車輛目錄、控制器等,映射為非關鍵參數,在參數空間內作為缺省值以簡化轉換過程,最終得到如表3所示的OpenSCENARIO 內容與關鍵字及各參數類型的映射關系。其中,道路拓撲結構和交通信號對應的關鍵參數在路網文件即OpenDrive 中賦值。在此基礎上,根據測試需求,確定各參數類型的參數范圍,得到完整的參數空間。

表3 OpenSCENARIO、關鍵字及參數類型映射關系
為生成OpenSCENARIO 格式的場景文件,本文根據上述映射關系,采用模塊化的XML 文檔對象模型(XML Document Object Model,XML DOM)編寫自動化腳本。該自動化腳本基于功能場景關鍵字對構建的參數空間進行采樣,并根據參數空間和OpenSCENARIO格式的映射關系,采用XML DOM生成相應的OpenSCE?NARIO 內容,得到完整的OpenSCENARIO 格式具體場景文件。
至此,本文實現了面向決策規劃系統功能測試的功能場景至具體場景的自動化生成,總體流程如圖3所示。
為驗證上述具體場景自動化生成方法,本文將其應用于TJP功能的仿真測試。
TJP 功能是針對行車過程中常見的交通擁堵路況開發的高等級自動駕駛功能[18],要求的車輛最高車速在40~60 km/h范圍內,具體的功能細分如表4所示。

圖3 具體場景自動化生成流程

表4 TJP功能
通過功能分析,生成相應的符合測試需求的功能場景。為滿足交通擁堵路況這一功能激活條件,首先選取常見的3車道直道作為道路拓撲類型,且設定交通參與者為1 輛自車、5 輛他車以實現擁堵路況,其次,由于擁堵路況中限速等交通信號為冗余信息,故不作設定,最后,結合表4 具體功能,通過設定各車輛的初始位置與動作,構建功能場景。
基于擁堵路況這一功能激活條件,設定各車輛的初始位置如圖4 所示,根據具體功能的測試需求,設定各車輛動作:為測試功能X1、X2、X6、Y1 和Y2,設定各車輛保持勻速;為測試功能X4、Y4和Y5,設定C5換道;為測試功能X3 和S1,設定自車正前方車輛減速至停車。為在同一測試用例中覆蓋盡可能多的功能測試,本文將上述車輛動作合并為同一功能場景的動作序列。最后,基于已有的OpenDrive 靜態場景,結合前文有效類等價劃分的位置編號,生成功能場景,為提高后續參數空間的生成效率,以字符串表示各車輛動作,并且采用JSON格式統一組織得到如下功能場景示例:


圖4 各車輛初始位置
本節基于上述功能場景,映射關鍵字得到相應的參數空間。針對道路拓撲結構和交通信號,根據已有的OpenDrive 高速公路地圖,選取合適區域直接得到對應參數,故僅映射得到動態場景,即自車和他車的關鍵參數類型:自車代號E、他車的車輛代號C1~C5、初始橫、縱坐標Xm和Ym(m=0,1,2為特定坐標系下的位置編號)、初速度v1、動作編號Ax(x=1,2,3…)、勻速動作速度vc、換道動作持續時間tcl、減速動作減速度adec、減速動作減速時長tdec、自動駕駛動作目的地橫、縱坐標Xd和Yd、動作觸發時刻t、車輛速度v。
為生成參數空間,賦予各關鍵參數一定值或范圍,并添加相應的約束條件如表5 所示。根據道路拓撲結構和各車輛排列關系,將車輛初始位置劃為3列2行,對應橫坐標為X0、X1、X2,縱坐標為Y0、Y1,添加約束條件1;由于他車首個動作為勻速行駛,故各車輛初速度v1Cn與首個動作參數即勻速的速度vcA1Cn相等,添加約束條件2;由于TJP功能要求最高車速為40~60 km/h,故設定各車輛速度vCn均小于40 km/h,添加約束條件3;為便于設置,各車輛首個動作默認觸發時刻tA1Cn為0 s,添加約束條件4。
基于上述約束條件,結合OpenDrive地圖,最終生成如表6所示的參數空間,各車輛初始位置坐標根據編號依次對應,其中Y0設為一定范圍的數值,XA1E、YA1E為自車首個動作即自動駕駛設定的目的地橫、縱坐標,tclA2C5為車輛C5 的第2 個動作換道的持續時間,tA2C5、tA3C5分別為車輛C5 第2 個、第3 個動作的觸發時刻,adecA3C5、tdecA3C5分別為車輛C5第3個動作減速的減速度和減速時長。

表5 參數空間約束條件

表6 參數空間
最后,采用自動化腳本,基于功能場景關鍵字對上述參數空間進行采樣,作為示例,參數Y0和tA3C5的離散步長分別設為1 m 和1 s,最終生成18 個OpenSCENARIO格式的具體場景文件。
此外,采用仿真軟件VTD(Virtual Test Drive)運行上述文件,驗證仿真文件的格式和參數,以及仿真過程中車輛初始位置及執行動作是否正確。測試過程如圖5 所示:第0~4 s,E 與前車保持一定車距和車速跟車;第4~8 s,C5變道至自車前方,E減速避讓;第8~12 s,C5減速至靜止,E減速且變道;第12 s后,E跟隨前車行駛。測試過程中他車皆按給定參數行駛,符合上述驗證要求。同時,該場景也實現了對前文所述的自車TJP功能中X1、X2、X4、X6、Y1、Y2、Y4和Y5功能的測試。

圖5 測試過程
綜上,本文所提出的方法在構建功能場景和相應的邏輯場景參數空間基礎上,通過自動化腳本即可批量生成OpenSCENARIO 場景文件。相比之下,若手動編寫生成上述18 個具體場景文件,則需在完整編寫第1 個OpenSCENARIO場景文件的基礎上,修改代碼中的相應參數以逐個生成其余17 個文件。2 種方法代碼長度對比如表7所示,手動編寫方法的代碼長度約為自動化生成方法的22倍。此外,當功能場景更復雜、測試所需具體場景數量更多時,該自動化生成方法能更顯著地提高具體場景文件的生成效率。

表7 2種具體場景文件生成方法的代碼長度對比
針對決策規劃系統仿真測試中場景文件生成效率低的問題,本文提出了一種具體場景自動化生成方法。基于層級模型,構建了面向決策規劃系統的功能場景,并在此基礎上,提取功能場景關鍵字生成了邏輯場景參數空間;分析了OpenSCENARIO 格式與參數空間的映射關系,得到自動化腳本,從而對參數空間采樣,自動化批量生成了具體場景文件。本文通過分析TJP功能,構建了相應的功能場景,并應用上述方法自動化批量生成了18個具體場景文件,在仿真軟件VTD中運行測試,驗證了該方法的有效性和高效性。該方法減少了場景文件的手動編寫工作,提高了決策規劃系統仿真測試場景的生成效率。
本文提出的方法在邏輯場景參數空間的真實性方面和具體場景合理性方面仍存在一定局限性:其一,目前的參數空間根據測試需求人為指定參數范圍,未考慮測試場景參數的真實分布特性,后續將研究基于自然駕駛數據的邏輯場景參數空間生成方法,提高具體場景的真實性;其二,由于邏輯場景存在他車數量多、動作的對應參數范圍廣等問題,在對參數空間采樣生成具體場景時,難以通過人為計算排除所有他車之間相互碰撞的場景,后續將研究對應的自動化場景篩選方法,提高具體場景的合理性。