戴嘉潤(rùn) 李忠睿 張琬琪 張 源 楊 珉
(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 200438)
無人駕駛系統(tǒng)(autonomous driving system, ADS)可通過各類的車載傳感器(如相機(jī)、激光雷達(dá)、超聲波雷達(dá)等)進(jìn)行實(shí)時(shí)的駕駛環(huán)境感知,并進(jìn)一步根據(jù)目標(biāo)駕駛?cè)蝿?wù)進(jìn)行駕駛行為的規(guī)劃與決策,以此控制車輛的自動(dòng)化行進(jìn).作為交通領(lǐng)域中的顛覆性智能技術(shù),無人駕駛已展示出廣泛的應(yīng)用場(chǎng)景,如物流配送、軍事探勘、公共交通等.鑒于此,眾多科技公司、整車廠商與政府部門正積極推動(dòng)無人駕駛的技術(shù)落地,期望實(shí)現(xiàn)公開道路的無人駕駛車輛部署.
然而現(xiàn)如今,安全性作為無人駕駛系統(tǒng)重要的預(yù)期屬性,已然成為了其大規(guī)模落地的瓶頸.在無人駕駛車輛的試運(yùn)行過程中,因無人駕駛系統(tǒng)缺陷導(dǎo)致的交通事故不斷發(fā)生,造成了嚴(yán)重程度不一的財(cái)產(chǎn)損失與人身傷害.例如,截止2023 年1 月6 日,美國(guó)加州交管局[1](Department of Motor Vehicles, DMV)已接收并公布了546 件無人駕駛車輛相關(guān)的交通事故[2].同時(shí),建立無人駕駛功能安全相關(guān)的測(cè)評(píng)標(biāo)準(zhǔn)已成為國(guó)內(nèi)外標(biāo)準(zhǔn)化組織的重點(diǎn)工作.例如,國(guó)際標(biāo)準(zhǔn)化組織發(fā)布了ISO 21448[3]以規(guī)范無人駕駛的安全測(cè)試流程,作為跟進(jìn),我國(guó)的國(guó)家標(biāo)準(zhǔn)計(jì)劃《道路車輛預(yù)期功能安全》[4]也在積極籌備之中.
為有效提高無人駕駛的安全性并滿足合規(guī)檢測(cè)需求,各大廠商與監(jiān)管機(jī)構(gòu)正積極采用2 類測(cè)試方案,即道路測(cè)試[5-6]和仿真測(cè)試[7–10],來挖掘并整治無人駕駛系統(tǒng)中可能導(dǎo)致交通事故的系統(tǒng)缺陷.道路測(cè)試指在封閉的真實(shí)道路上長(zhǎng)久地運(yùn)行無人駕駛車輛,并監(jiān)控其駕駛行為.然而,道路測(cè)試存在著較大的限制:一方面,布置各種封閉道路場(chǎng)景的成本較高,且測(cè)試周期較長(zhǎng);另一方面,道路測(cè)試難以驗(yàn)證無人駕駛系統(tǒng)在極端駕駛場(chǎng)景(如極端天氣與路況)中的可靠性.與道路測(cè)試不同的是,仿真測(cè)試指在仿真器中配置虛擬的駕駛場(chǎng)景來驗(yàn)證無人駕駛系統(tǒng)的安全性.相較于傳統(tǒng)的道路測(cè)試,因仿真測(cè)試可任意指定虛擬場(chǎng)景的配置(如天氣環(huán)境、地圖道路和交通車流等),能以更低的成本靈活地驗(yàn)證在真實(shí)道路上難以挖掘到的危險(xiǎn)駕駛場(chǎng)景.鑒于該優(yōu)勢(shì),仿真測(cè)試已被學(xué)術(shù)界和產(chǎn)業(yè)界廣泛使用來評(píng)估無人駕駛系統(tǒng)的安全性.
顯然,仿真測(cè)試的有效性直接由虛擬場(chǎng)景配置的質(zhì)量決定,即安全測(cè)試人員能否設(shè)計(jì)出易導(dǎo)致無人駕駛安全事故的虛擬場(chǎng)景.然而,設(shè)計(jì)事故場(chǎng)景絕非易事.其原因在于,虛擬場(chǎng)景中包含著種類豐富的待配置要素,包括天氣環(huán)境、道路地圖和交通車流等,這些要素的排列組合將構(gòu)成難以估量的場(chǎng)景搜索空間.直觀地說,從這樣龐大的搜索空間中有效挖掘事故場(chǎng)景配置無異于大海撈針.截止當(dāng)前,這仍然是困擾學(xué)術(shù)界[11–13]和工業(yè)界[14]的棘手難題.
為有效應(yīng)對(duì)該難題,前沿的研究工作[15–20]嘗試將模糊測(cè)試技術(shù)[21-22]與仿真測(cè)試相結(jié)合,構(gòu)建出面向無人駕駛系統(tǒng)的仿真模糊測(cè)試技術(shù)(simulation-based fuzzing).該技術(shù)的基本原理是:給定數(shù)量有限的初始場(chǎng)景配置(稱之為種子場(chǎng)景),通過類模糊測(cè)試的變異操作來自動(dòng)調(diào)整種子場(chǎng)景中的可配置要素(如將天氣參數(shù)由晴天變更為雨天),以此源源不斷地生成新的更易導(dǎo)致事故的場(chǎng)景配置.基于此原理,仿真模糊測(cè)試技術(shù)即可自動(dòng)化地探索龐大的場(chǎng)景搜索空間,并從中挖掘出易導(dǎo)致無人車事故的駕駛場(chǎng)景.例如,AV-FUZZER[16]提出了與遺傳算法相結(jié)合的模糊測(cè)試方案,通過改變無人車周圍車輛的變道行為和駕駛速度,尋找直道上因車距過近而導(dǎo)致的無人車事故場(chǎng)景;AutoFuzz[18]利用神經(jīng)網(wǎng)絡(luò)來指導(dǎo)仿真模糊測(cè)試,其首先將場(chǎng)景配置向量化,并通過梯度下降算法變異各類場(chǎng)景要素,以此生成導(dǎo)致無人車碰撞的駕駛場(chǎng)景.
盡管已有的仿真模糊測(cè)試工作已經(jīng)在高級(jí)別無人駕駛系統(tǒng)(high-level autonomous driving system)的安全測(cè)評(píng)中展示出了良好的應(yīng)用成效,即發(fā)現(xiàn)了數(shù)十乃至數(shù)百例主流開源無人駕駛系統(tǒng)Apollo 和Autoware的事故場(chǎng)景,它們?nèi)匀淮嬖跀?shù)個(gè)缺陷與不足,直接制約了它們提升無人駕駛系統(tǒng)安全性的能力.例如,現(xiàn)有的仿真模糊測(cè)試工作在準(zhǔn)備種子場(chǎng)景時(shí),普遍采用手工的方式構(gòu)建極其簡(jiǎn)易的駕駛場(chǎng)景,該類質(zhì)量低下的種子極大地限制了現(xiàn)有工具的事故挖掘能力.又如,現(xiàn)有的仿真模式測(cè)試工作的事故分類機(jī)制缺乏完善的設(shè)計(jì),大量冗余重復(fù)的事故為進(jìn)一步的系統(tǒng)缺陷歸因溯源造成巨大阻礙.
鑒于此,本文旨在系統(tǒng)性地總結(jié)現(xiàn)有工作的不足,指明完善這些不足之處的技術(shù)方向,并最終給出可行的解決方案,以此為該領(lǐng)域的后續(xù)工作提供可靠的指導(dǎo)建議.
本文的主要貢獻(xiàn)包括3 個(gè)方面:
1)調(diào)研了面向無人駕駛系統(tǒng)的仿真模糊測(cè)試技術(shù),并總結(jié)了該類技術(shù)的一般架構(gòu),該架構(gòu)分為種子場(chǎng)景生成、事故挖掘、事故分類與事故根源分析四大關(guān)鍵模塊.
2)面向這4 個(gè)關(guān)鍵模塊,剖析了現(xiàn)有工作的不足,以及解決這些不足所面臨的技術(shù)挑戰(zhàn).
3)針對(duì)現(xiàn)有工作的不足提出了可行的優(yōu)化方案,并在主流無人駕駛系統(tǒng)上進(jìn)行了可行性的實(shí)驗(yàn)論證,以此指明該領(lǐng)域的未來發(fā)展方向.
為了區(qū)分不同自動(dòng)駕駛系統(tǒng)的能力,國(guó)際汽車工程學(xué)會(huì)(Society of Automotive Engineers, SAE)將無人駕駛系統(tǒng)分為6 個(gè)等級(jí)[23],從L0(無自動(dòng)駕駛)到L5(完全自動(dòng)駕駛).其中,L4 與L5 的無人駕駛系統(tǒng)又稱高級(jí)別無人駕駛系統(tǒng).因高級(jí)別無人駕駛系統(tǒng)在多樣的駕駛場(chǎng)景中都具備自主運(yùn)行能力,許多制造商正致力于該類系統(tǒng)的開發(fā)部署與安全測(cè)試.具體地說,高級(jí)別無人駕駛系統(tǒng)通常是由多個(gè)功能模塊組成,這些模塊協(xié)同工作,以實(shí)現(xiàn)實(shí)時(shí)的自動(dòng)駕駛.如圖1 所示,高級(jí)別無人駕駛系統(tǒng)主要包含4 個(gè)關(guān)鍵模塊:
Fig.1 Architecture of simulation testing for autonomous driving systems圖1 無人駕駛系統(tǒng)仿真測(cè)試架構(gòu)
1)感知(Perception)模塊.通過接收來自攝像頭、激光雷達(dá)和超聲波雷達(dá)等車載傳感器的數(shù)據(jù),基于機(jī)器學(xué)習(xí)算法探知車身周圍障礙物的位置和類型.
2)預(yù)測(cè)(Prediction)模塊.基于上述障礙物探知信息,運(yùn)用機(jī)器學(xué)習(xí)算法進(jìn)一步預(yù)測(cè)周邊障礙物的未來運(yùn)動(dòng)軌跡.
3)規(guī)劃(Planning)模塊.結(jié)合目標(biāo)駕駛?cè)蝿?wù)與駕駛環(huán)境的感知預(yù)測(cè)結(jié)果,為無人駕駛車輛規(guī)劃出可達(dá)目的地的安全行駛軌跡.
4)控制(Control)模塊.基于規(guī)劃的軌跡和車輛的當(dāng)前狀態(tài),使用不同的控制算法生成一系列車身控制命令,如加速、剎車和轉(zhuǎn)向等.
這4 類功能模塊通常以異步的形式高頻運(yùn)作,并在運(yùn)行時(shí)依賴高性能中間件框架(如Cyber-RT[24]和ROS[25])進(jìn)行模塊間的通信.此外,該框架還負(fù)責(zé)無人駕駛系統(tǒng)和車載硬件之間的信息交互.
為了提高無人駕駛系統(tǒng)的安全性,許多研究工作著眼于測(cè)試單個(gè)系統(tǒng)模塊(如感知模塊[26–31])的魯棒性,即假設(shè)攻擊者或罕見的駕駛情況可能導(dǎo)致單個(gè)系統(tǒng)模塊的故障.例如,攻擊者偽造的傳感器數(shù)據(jù)可能會(huì)導(dǎo)致錯(cuò)誤的障礙物感知結(jié)果.然而,因無法從宏觀的層面對(duì)無人駕駛系統(tǒng)整體進(jìn)行測(cè)試[32],該類工作往往無法發(fā)現(xiàn)由多個(gè)模塊共同導(dǎo)致的系統(tǒng)故障.
與上述工作不同的是,無人駕駛系統(tǒng)仿真測(cè)試是面向無人駕駛系統(tǒng)整體而非單點(diǎn)模塊的測(cè)試方法.在虛擬的仿真環(huán)境下,安全分析人員可靈活指定場(chǎng)景的各類要素,并通過待測(cè)無人駕駛系統(tǒng)的實(shí)時(shí)計(jì)算來控制仿真無人車在該場(chǎng)景下的運(yùn)動(dòng).圖1 描述了無人駕駛系統(tǒng)仿真平臺(tái)的整體框架.其中,駕駛模擬器通常建立在圖形渲染引擎(如Unity[33]和Unreal[34])上,包含3 個(gè)用于仿真測(cè)試的重要組件:
1)無人車模擬組件.該組件主要負(fù)責(zé)模擬目標(biāo)無人車在虛擬場(chǎng)景中的駕駛行為.仿真環(huán)境中的無人車配置了各種虛擬傳感器,這些虛擬傳感器可以產(chǎn)生與仿真環(huán)境對(duì)應(yīng)的傳感器數(shù)據(jù)(如攝像頭數(shù)據(jù)、激光雷達(dá)數(shù)據(jù)和GPS 數(shù)據(jù)).隨后,駕駛模擬器會(huì)通過通信網(wǎng)橋?qū)⑦@些數(shù)據(jù)作為輸入連續(xù)地傳輸給無人駕駛系統(tǒng).同樣,經(jīng)過無人駕駛系統(tǒng)計(jì)算后生成的車輛控制指令(如油門和轉(zhuǎn)向)也會(huì)通過通信網(wǎng)橋?qū)崟r(shí)地發(fā)送給駕駛模擬器,進(jìn)而控制無人車在仿真環(huán)境中的運(yùn)動(dòng).
2)環(huán)境模擬組件.該組件允許配置多樣的駕駛環(huán)境,主要包括環(huán)境的物理屬性和靜態(tài)的地圖元素.這些配置決定了仿真環(huán)境的渲染,同時(shí)也是虛擬無人車傳感器生成實(shí)時(shí)傳感器數(shù)據(jù)的重要根據(jù).
3)交通模擬組件.該組件旨在模擬無人車周圍具有特定動(dòng)態(tài)行為的交通參與者.根據(jù)交通行為者的類型,交通模擬可以分為車輛交通模擬(如汽車和公共汽車)和非車輛交通模擬(如自行車和行人).
駕駛模擬器具有3 個(gè)重要組件,即無人車模擬組件、環(huán)境模擬組件和交通模擬組件.在實(shí)際的仿真測(cè)試過程中,測(cè)試人員須正確配置這3 個(gè)組件的必要參數(shù)以保證仿真測(cè)試的正常開展:
1)環(huán)境模擬參數(shù).該參數(shù)主要用于定制化場(chǎng)景的自然物理屬性和地圖元素.最常見的自然物理屬性包括天氣情況與光照情況.地圖元素通常指的是具有特定結(jié)構(gòu)和地理坐標(biāo)的道路網(wǎng)絡(luò),其中包含必要的道路基礎(chǔ)設(shè)施如交通標(biāo)志牌與交通信號(hào)燈等.
2)無人車模擬參數(shù).該參數(shù)主要指定待測(cè)無人車的物理學(xué)模型與動(dòng)力學(xué)模型.此外,該參數(shù)還須指定無人車駕駛的起點(diǎn)、目的地以及初始速度.
3)交通模擬參數(shù).該參數(shù)需指定各交通參與方的動(dòng)態(tài)行為.常見的方式是令車輛與行人等沿著給定的軌跡坐標(biāo)點(diǎn)運(yùn)動(dòng).
為保證這3 個(gè)參數(shù)配置的可移植性,現(xiàn)有工作普遍采用不同的領(lǐng)域特定語言(domain-specific language,DSL)實(shí)例化參數(shù)配置.例如,GeoScenario[35]和Open-SCENARIO[36]利用面向?qū)ο蟮恼Z言來描述仿真場(chǎng)景的各項(xiàng)參數(shù).此外,這些DSL 通常會(huì)結(jié)合其他標(biāo)準(zhǔn)(如OpenDRIVE[37],OSM[38]和Lanelets[39])來描述道路地圖.最終,這些格式良好的場(chǎng)景參數(shù)配置會(huì)被保存為與系統(tǒng)無關(guān)的文件格式(如XML 文件或JSON 文件),本文將此類文件統(tǒng)稱為場(chǎng)景配置文件.
現(xiàn)有工作[15–20]在實(shí)現(xiàn)面向無人駕駛系統(tǒng)的仿真模糊測(cè)試時(shí),主要利用了模糊測(cè)試的隨機(jī)性和仿真測(cè)試的靈活性,在僅有少數(shù)初始場(chǎng)景配置的情況下,自動(dòng)化地生成并驗(yàn)證海量未知的仿真駕駛場(chǎng)景.通過對(duì)現(xiàn)有工作的系統(tǒng)性總結(jié),本文將仿真模糊測(cè)試的一般架構(gòu)解構(gòu)為4 個(gè)關(guān)鍵模塊,分別為種子場(chǎng)景生成模塊、事故挖掘模塊、事故分類模塊和事故歸因分析模塊,如圖2 所示.
Fig.2 Architecture of simulation-based fuzzing圖2 仿真模糊測(cè)試框架
1)種子場(chǎng)景生成模塊.進(jìn)行模糊測(cè)試的首要條件是準(zhǔn)備一定量的初始輸入作為種子,從而可以通過種子的變異或調(diào)整源源不斷地生成新的測(cè)試輸入.在無人駕駛系統(tǒng)仿真測(cè)試的語境下,種子指代的是初始的仿真場(chǎng)景配置文件,其指明了駕駛仿真器在實(shí)現(xiàn)無人車模擬、環(huán)境模擬以及交通模擬時(shí)所依賴的必要參數(shù).
2)事故挖掘模塊.在給定種子場(chǎng)景的情況下,事故挖掘模塊的預(yù)期功能是通過變異種子場(chǎng)景的各項(xiàng)配置來生成新的待測(cè)場(chǎng)景,并通過監(jiān)控各待測(cè)場(chǎng)景的仿真執(zhí)行結(jié)果,驗(yàn)證變異后的場(chǎng)景是否會(huì)造成無人駕駛車輛的不當(dāng)行為,如車輛碰撞或交通違規(guī)等.在傳統(tǒng)的軟件模糊測(cè)試領(lǐng)域,現(xiàn)有工作[40–45]通常制定“變異-反饋”機(jī)制來避免盲目的種子生成與驗(yàn)證,即在變異過程中篩選出高質(zhì)量的種子,引導(dǎo)種子向更優(yōu)異的方向持續(xù)演進(jìn).同樣地,這類反饋機(jī)制也存在于面向無人駕駛系統(tǒng)的仿真模糊測(cè)試中,其旨在遴選出更接近事故發(fā)生的仿真駕駛場(chǎng)景.
3)事故分類模塊.在傳統(tǒng)的軟件模糊測(cè)試領(lǐng)域,崩潰去重[46-47]是必不可少的重要步驟.在收集完所有能夠觸發(fā)程序崩潰的種子后,該步驟旨在篩除有相似崩潰行為的冗余種子,以此減少安全人員的分析開銷.類似地,仿真模糊測(cè)試的事故分類模塊旨在去除同類的無人車事故場(chǎng)景,以此輔助安全分析人員更快定位和治理無人駕駛系統(tǒng)中的不同缺陷.
4)事故歸因分析模塊.傳統(tǒng)模糊測(cè)試通??梢蕾噧?nèi)存錯(cuò)誤檢測(cè)工具(如AddressSanitizer[48])來定位導(dǎo)致程序崩潰的代碼位置.然而,因無人駕駛系統(tǒng)的碰撞事故通常由邏輯缺陷(如算法設(shè)計(jì)缺陷或模型運(yùn)算錯(cuò)誤)導(dǎo)致,其不會(huì)出現(xiàn)顯式的內(nèi)存崩潰.因此,仿真模糊測(cè)試通常需要額外的事故歸因步驟來確認(rèn)導(dǎo)致事故的系統(tǒng)模塊、模型或代碼片段等.
近年來,不少前沿的學(xué)術(shù)工作[15–20]嘗試設(shè)計(jì)面向無人駕駛系統(tǒng)的仿真模糊測(cè)試技術(shù),以挖掘和整治無人駕駛系統(tǒng)的功能安全威脅.如表1 所示,根據(jù)2.1 節(jié)所述的四大模塊,本文嘗試對(duì)現(xiàn)有工作的技術(shù)方案進(jìn)行模塊化拆解,分別介紹這些工作實(shí)現(xiàn)的各關(guān)鍵模塊的具體方案.
Table 1 Existing Work in Simulation-based Fuzzing for Autonomous Driving Systems表1 現(xiàn)有的面向無人駕駛系統(tǒng)的仿真模糊測(cè)試工作
1)針對(duì)種子場(chǎng)景生成模塊,已有工作主要采用2 類方案,一類是根據(jù)人工經(jīng)驗(yàn)配置簡(jiǎn)單的駕駛場(chǎng)景,另一類是設(shè)計(jì)隨機(jī)算法以生成初始的場(chǎng)景配置.MFT[15]和AV-FUZZER[16]人工構(gòu)建了1~2 個(gè)簡(jiǎn)單的直道駕駛場(chǎng)景作為初始種子,場(chǎng)景中僅包含少量的動(dòng)態(tài)運(yùn)行車輛與靜態(tài)障礙物.其余工作則依據(jù)先驗(yàn)知識(shí),通過隨機(jī)采樣的方式生成一定數(shù)量的仿真場(chǎng)景作為初始種子.更具體地說,ASF[17]嘗試完全隨機(jī)生成符合場(chǎng)景配置格式的初始場(chǎng)景;AutoFuzz[18]從駕駛模擬器的API 規(guī)范中提取出場(chǎng)景配置參數(shù)的相關(guān)約束,并通過隨機(jī)采樣生成有效的場(chǎng)景配置;DriveFuzz[19]設(shè)計(jì)了一套可達(dá)性分析算法,為無人車在地圖上隨機(jī)選取有效的起點(diǎn)和目的地;MOSAT[20]在指定NPC 的數(shù)量和距離范圍后隨機(jī)生成初始場(chǎng)景.
2)針對(duì)事故挖掘模塊,已有工作基于無人駕駛測(cè)試的領(lǐng)域知識(shí),設(shè)計(jì)了多樣且有效的“變異-反饋”機(jī)制,以便將初始的種子場(chǎng)景更快地變異為誘發(fā)無人駕駛事故的場(chǎng)景.同時(shí),在挖掘事故場(chǎng)景時(shí),已有工作普遍關(guān)注車輛碰撞這一嚴(yán)重的安全事故類型.MFT嘗試在無人車的行進(jìn)道路上隨機(jī)放置新的靜態(tài)障礙物,通過增加無人車與周邊場(chǎng)景元素的交互來提高事故發(fā)生的概率.AV-FUZZER 嘗試改變無人車周圍虛擬車輛 (NPC) 車輛的變道策略和速度,計(jì)算NPC車輛和無人車的安全距離作為遺傳算法的適應(yīng)度函數(shù),用于發(fā)現(xiàn)更苛刻的行駛場(chǎng)景.MOSAT 則根據(jù)NPC 車輛與無人車的位置關(guān)系,定義了4 種場(chǎng)景變異模式來增加無人車路徑規(guī)劃的難度,此外還提出了多目標(biāo)的適應(yīng)度函數(shù),通過考慮事故的多樣性和無人車駕駛行為的不穩(wěn)定性等來引導(dǎo)變異的流程.ASF 在一定范圍內(nèi)新增NPC 車輛并修改原有NPC車輛的起始位置,以無人車駕駛的軌跡覆蓋率為導(dǎo)向,嘗試觸發(fā)更多樣的無人車駕駛行為以挖掘不同的事故場(chǎng)景.AutoFuzz 將場(chǎng)景配置參數(shù)向量化的同時(shí),創(chuàng)新性地利用梯度下降算法變異參數(shù)向量,并使用神經(jīng)網(wǎng)絡(luò)分類器來遴選更危險(xiǎn)的駕駛場(chǎng)景.DriveFuzz 在場(chǎng)景變異過程中,設(shè)計(jì)了更多樣的NPC車輛駕駛行為(如變道插隊(duì)),通過觀測(cè)無人車的危險(xiǎn)駕駛操作(如急剎車和急轉(zhuǎn)彎)來量化各場(chǎng)景的危險(xiǎn)程度.
3)針對(duì)事故分類模塊,AV-FUZZER 和MOSAT通過觀察所有事故場(chǎng)景的仿真運(yùn)行流程,根據(jù)無人車的駕駛行為特征,以人工的方式主觀地將碰撞事故歸為不同的類別.更進(jìn)一步地,AutoFuzz 首次嘗試實(shí)現(xiàn)自動(dòng)化的事故場(chǎng)景去重.給定任意2 個(gè)事故場(chǎng)景,AutoFuzz 通過判斷仿真場(chǎng)景配置文件的差異程度來決定兩者是否等價(jià),即當(dāng)差異程度超過預(yù)設(shè)的閾值時(shí),則認(rèn)為2 個(gè)事故場(chǎng)景屬于不同的類別.
4)針對(duì)事故歸因分析模塊,目前所有的工作都缺乏自動(dòng)化分析事故場(chǎng)景根源缺陷的能力.ASF 針對(duì)一例事故展開了詳細(xì)的人工歸因分析,并最終定位到導(dǎo)致事故的缺陷代碼位置.DriveFuzz 以人工分析的方式,將事故的根源歸納為不同的種類,包括仿真器缺陷、系統(tǒng)邏輯缺陷和系統(tǒng)功能不足等.此外,ASF 和DriveFuzz 僅描述了事故歸因分析的結(jié)果,但并未詳細(xì)闡釋歸因分析的方法論與具體步驟.
根據(jù)2.2 節(jié)的闡述不難發(fā)現(xiàn),現(xiàn)有的仿真模糊測(cè)試技術(shù)主要關(guān)注事故挖掘模塊的設(shè)計(jì),即嘗試借鑒傳統(tǒng)軟件模糊測(cè)試的“變異-反饋”機(jī)制,融合遺傳算法或神經(jīng)網(wǎng)絡(luò)等前沿方法,以便更快地挖掘到無人車事故場(chǎng)景.然而,相比之下,種子場(chǎng)景生成模塊、事故分類模塊與事故歸因分析模塊的設(shè)計(jì)則普遍依賴啟發(fā)式的規(guī)則或人工分析來實(shí)現(xiàn).值得注意的是,這4 個(gè)關(guān)鍵模塊協(xié)同工作才能構(gòu)成仿真模糊測(cè)試的閉環(huán),換言之,單個(gè)模塊的設(shè)計(jì)缺陷將直接影響到仿真模糊測(cè)試的有效性和可靠性.下面本文將詳細(xì)剖析不同模塊的設(shè)計(jì)缺陷.
1)種子場(chǎng)景的質(zhì)量低下且依賴個(gè)人經(jīng)驗(yàn)手工構(gòu)造.長(zhǎng)期以來,初始種子的質(zhì)量已被廣泛證明對(duì)模糊測(cè)試的結(jié)果存在顯著影響[49-50].然而,在開展面向無人駕駛系統(tǒng)的仿真模糊測(cè)試時(shí),現(xiàn)有工作普遍根據(jù)專家經(jīng)驗(yàn)或個(gè)人經(jīng)驗(yàn),主觀地選擇數(shù)量有限的簡(jiǎn)單場(chǎng)景作為種子,沒有重視或評(píng)估種子場(chǎng)景對(duì)于測(cè)試結(jié)果可能存在的影響.其次,現(xiàn)有工作普遍采用手工構(gòu)造的方式來創(chuàng)建初始場(chǎng)景.正如1.3 節(jié)所述,場(chǎng)景的配置涉及種類繁多的參數(shù),且不同參數(shù)的格式與內(nèi)涵相差甚遠(yuǎn),即需要耗費(fèi)可觀的人力與時(shí)間才能完成參數(shù)的逐一配置.雖然部分工作嘗試使用隨機(jī)生成的方式來減少人工開銷,但這些工作仍然需要人工總結(jié)出場(chǎng)景模板或場(chǎng)景約束來指導(dǎo)場(chǎng)景的生成.
2)缺乏可靠的自動(dòng)化事故分類.現(xiàn)有的仿真模糊測(cè)試工作在各自的實(shí)驗(yàn)評(píng)估中均成功發(fā)現(xiàn)了主流開源無人駕駛系統(tǒng)的多例事故場(chǎng)景.然而,這些工作普遍缺乏自動(dòng)化的事故分類方法,導(dǎo)致分析人員難以從眾多的事故案例中遴選出典型的案例作為進(jìn)一步分析和診斷的目標(biāo).AutoFuzz 雖然嘗試提出自動(dòng)化的聚類方法,但該方法僅通過仿真場(chǎng)景配置的相似度來判斷事故是否類似.因缺乏事故相關(guān)的分析(如事故主體和事故特性),AutoFuzz 在事故分類中極易產(chǎn)生錯(cuò)誤.
3)缺乏可靠的自動(dòng)化事故歸因分析.現(xiàn)有的仿真模糊測(cè)試在匯報(bào)了事故場(chǎng)景后,無法通過可靠的自動(dòng)化歸因分析來定位系統(tǒng)缺陷點(diǎn)(即代碼位置).這使得事故的確認(rèn)與修復(fù)受到了極大的阻礙.ASF和DriveFuzz 嘗試通過人工的方式進(jìn)行系統(tǒng)缺陷點(diǎn)的定位.顯然,該類方式需要極強(qiáng)的無人駕駛領(lǐng)域知識(shí),以及對(duì)目標(biāo)無人駕駛系統(tǒng)代碼實(shí)現(xiàn)的深入理解.此外,因ASF 與DriveFuzz 并未闡明人工歸因分析的具體流程與方法論,這使得歸因分析結(jié)果的準(zhǔn)確性難以得到保證.
為切實(shí)提高仿真模糊測(cè)試的可用性和可靠性,本文面向上述3 大缺陷提出針對(duì)性的解決思路.具體而言,在第3~5 節(jié)中,本文分別剖析了優(yōu)化種子場(chǎng)景生成模塊、事故分類模塊與事故歸因模塊所面臨的挑戰(zhàn),并提供了可行的解決思路.為論證這些思路的可行性與先進(jìn)性,本文嘗試在主流開源無人駕駛系統(tǒng)Apollo 和Autoware 開展實(shí)驗(yàn)并與現(xiàn)有工作的方案進(jìn)行對(duì)比.此外,本文將根據(jù)實(shí)驗(yàn)論證的結(jié)果進(jìn)一步展望仿真模糊測(cè)試領(lǐng)域的發(fā)展方向.
如2.1 節(jié)所述,仿真模糊測(cè)試依賴種子場(chǎng)景作為初始輸入.然而,現(xiàn)有的無人駕駛相關(guān)的公開數(shù)據(jù)集[51–59]主要提供原始傳感器數(shù)據(jù)(如相機(jī)、激光雷達(dá)等),這些數(shù)據(jù)可以用于訓(xùn)練和測(cè)試無人駕駛系統(tǒng)內(nèi)的機(jī)器學(xué)習(xí)算法(如對(duì)象檢測(cè)和追蹤),但不能直接用于仿真測(cè)試.因此,現(xiàn)有的仿真模糊測(cè)試工作中所使用的種子場(chǎng)景普遍是研究者根據(jù)自身經(jīng)驗(yàn)手動(dòng)或隨機(jī)構(gòu)建的簡(jiǎn)單場(chǎng)景,極大地限制了仿真模糊測(cè)試的事故場(chǎng)景挖掘能力.然而,為仿真模糊測(cè)試自動(dòng)化準(zhǔn)備高質(zhì)量的種子場(chǎng)景絕非易事,所構(gòu)建的種子場(chǎng)景應(yīng)該滿足2 個(gè)基本特性:
挑戰(zhàn)1.滿足高保真性.仿真場(chǎng)景是現(xiàn)實(shí)世界駕駛場(chǎng)景的數(shù)字化版本,其應(yīng)當(dāng)符合真實(shí)世界中可能存在的駕駛情況.為了滿足該需求,安全測(cè)試人員通常需要參考已有的交通事故報(bào)告或路測(cè)報(bào)告,以繁重的人工成本在仿真環(huán)境中進(jìn)行等價(jià)的還原.
挑戰(zhàn)2.滿足語法正確性.對(duì)于仿真測(cè)試而言,虛擬場(chǎng)景的參數(shù)配置應(yīng)該被編碼成規(guī)范的格式(如OpenSCENARIO[36]),否則仿真器不能接受其作為輸入.這些格式規(guī)范往往有著復(fù)雜的語法約束,例如,一個(gè)簡(jiǎn)單的變道超車場(chǎng)景需要200 多行格式良好的代碼來進(jìn)行參數(shù)配置.
針對(duì)3.1 節(jié)所述的2 個(gè)挑戰(zhàn),本文提出了一種自動(dòng)化的種子場(chǎng)景構(gòu)建方法.該方法的核心思路是,從真實(shí)世界的交通軌跡數(shù)據(jù)集[60-61]中收集指定路段上可能出現(xiàn)的交通參與方(車輛或行人)的運(yùn)動(dòng)行為,以此作為仿真場(chǎng)景參數(shù)配置的數(shù)據(jù)參考.這類軌跡數(shù)據(jù)通常由車端或路端記錄儀在真實(shí)道路上實(shí)時(shí)捕捉所得,因此可以準(zhǔn)確地反映真實(shí)世界中可能存在的復(fù)雜交通流模式.參考這類數(shù)據(jù)來配置仿真場(chǎng)景的交通模擬參數(shù)可以極大地確保場(chǎng)景的保真性.
交通軌跡數(shù)據(jù)集主要以帶時(shí)間戳的GPS 坐標(biāo)序列來描述各交通參與方的行為:
其中,Entity表示交通參與方,gps表示經(jīng)緯地理坐標(biāo),t表示時(shí)間戳.
在構(gòu)建種子場(chǎng)景時(shí),本文嘗試基于現(xiàn)有的地圖轉(zhuǎn)換工具[62],將交通軌跡相關(guān)的路段地圖(如Lanelets格式[39])轉(zhuǎn)換為等價(jià)的仿真地圖格式(如OpenDrive格式[37]),并在該仿真地圖上靈活地布置這些具有特定運(yùn)動(dòng)行為的交通參與方,以此完成交通模擬參數(shù)的配置.然而,這些軌跡數(shù)據(jù)通常被存儲(chǔ)于自定義格式的CSV 文件中,并不兼容仿真場(chǎng)景參數(shù)配置的格式規(guī)范(見1.3 節(jié)).此外,這些軌跡數(shù)據(jù)的坐標(biāo)系通常與仿真場(chǎng)景所需的坐標(biāo)系不同.因此,為進(jìn)一步保證仿真場(chǎng)景配置的語法正確性,交通參與方的GPS坐標(biāo)序列須進(jìn)行正確的坐標(biāo)轉(zhuǎn)換(如從UTM 坐標(biāo)系轉(zhuǎn)換為局部坐標(biāo)系),并按照仿真場(chǎng)景的語法格式規(guī)范進(jìn)行參數(shù)配置.
圖3 展示了自動(dòng)化種子場(chǎng)景構(gòu)建的一般流程.值得注意的是,除交通模擬參數(shù)和地圖參數(shù)外,本文將隨機(jī)生成仿真場(chǎng)景的自然環(huán)境參數(shù)(如天氣),使用仿真器和無人駕駛系統(tǒng)提供的無人車物理學(xué)和動(dòng)力學(xué)模型,并隨機(jī)生成其余無人車模擬參數(shù)(如駕駛的起始位置).最終,基于仿真場(chǎng)景描述性語言(如OpenSCENARIO[36])的語法模板(如XSD 文件),本文將上述參數(shù)實(shí)例化為種子場(chǎng)景配置文件(如XML 文件),以作為模糊測(cè)試的輸入.
Fig.3 Overview of automated seed scenario construction圖3 自動(dòng)化種子場(chǎng)景構(gòu)建概覽
本文嘗試證明3.2 節(jié)所述的方法所得的種子場(chǎng)景能夠提升仿真模糊測(cè)試技術(shù)的事故場(chǎng)景挖掘能力.為實(shí)現(xiàn)該目標(biāo),本文嘗試將所得種子場(chǎng)景與現(xiàn)有工作使用的種子場(chǎng)景分別作為同一款仿真模糊測(cè)試工具的輸入,并面向相同的無人駕駛系統(tǒng)進(jìn)行事故場(chǎng)景挖掘.
在仿真模糊測(cè)試工具方面:本文基于LGSVL 模擬器實(shí)現(xiàn),通過4 000 行左右的Python 代碼實(shí)現(xiàn)了基本的仿真模糊測(cè)試工具.在實(shí)現(xiàn)該工具時(shí),本文參考了領(lǐng)域內(nèi)的前沿工作DriveFuzz[19],并進(jìn)一步豐富了其場(chǎng)景變異的模式(如變更光照強(qiáng)度等).值得注意的是,該實(shí)驗(yàn)的目標(biāo)是衡量種子質(zhì)量對(duì)于模糊測(cè)試結(jié)果的影響.因此,參考傳統(tǒng)模糊測(cè)試領(lǐng)域的實(shí)踐方式[47],本文禁用了DriveFuzz 的種子調(diào)度機(jī)制,以免對(duì)實(shí)驗(yàn)結(jié)果造成干擾.
在待測(cè)無人駕駛系統(tǒng)方面:本文挑選了2 款主流的高級(jí)別無人駕駛系統(tǒng)作為測(cè)試對(duì)象,Apollo 6.0 和Autoware 1.15.
在待測(cè)種子場(chǎng)景方面:實(shí)驗(yàn)生成了50 個(gè)適用于模擬器LGSVL 的仿真場(chǎng)景作為待測(cè)種子.這些種子場(chǎng)景基于數(shù)十種地圖進(jìn)行構(gòu)建,擁有不同的道路結(jié)構(gòu)(如單車道、合并車道、交通路口等)、車流模式(如跟車、轉(zhuǎn)彎、變道超車、緊急停車等)、車輛類型(如汽車、卡車、自行車等)和天氣狀況(如晴天、雨天、霧天)等.
另外,本文嘗試從現(xiàn)有工作中獲取可用的種子場(chǎng)景用于實(shí)驗(yàn)對(duì)比.此處,只有AV-FUZZER 和AutoFuzz開源了可用的場(chǎng)景配置文件.因此,本文最終獲取了AV-FUZZER 的2 個(gè)種子場(chǎng)景和AutoFuzz 的4 個(gè)種子場(chǎng)景,并以這6 個(gè)種子場(chǎng)景作為實(shí)驗(yàn)的參照組.
為便于理解,圖4 直觀地展示了來自AV-FUZZER、AutoFuzz 及本文構(gòu)建的部分場(chǎng)景種子的俯視圖(藍(lán)色車輛為無人車,藍(lán)色箭頭代表預(yù)期駕駛?cè)蝿?wù)).
Fig.4 Comparison of seed scenarios from existing works and our work圖4 現(xiàn)有工作和本文工作的種子場(chǎng)景對(duì)比
在實(shí)驗(yàn)設(shè)置與環(huán)境方面:以各種子場(chǎng)景作為仿真模糊測(cè)試工具的輸入,本文獨(dú)立進(jìn)行時(shí)長(zhǎng)為3 h 的仿真模糊測(cè)試,并收集產(chǎn)生的事故場(chǎng)景數(shù)量.所有的實(shí)驗(yàn)評(píng)估都在Ubuntu 18.04 服務(wù)器上進(jìn)行,該服務(wù)器有314 GB 內(nèi)存、4 個(gè)GPU 核心(NVIDIA GeForce RTX 2080 Ti)和40 個(gè) CPU 核心(Intel Xeon Gold 5215,2.50 GHz).
如表2 所示,參照本文思路構(gòu)建的各種子場(chǎng)景在3 h 內(nèi)平均可發(fā)現(xiàn)Apollo 的80.3 例事故場(chǎng)景和Autoware 的84.9 例事故場(chǎng)景,遠(yuǎn)高于AV-FUZZER 和AutoFuzz 的種子場(chǎng)景在相同實(shí)驗(yàn)配置下產(chǎn)生的事故數(shù)量.例如,本文種子場(chǎng)景在Apollo 系統(tǒng)上的碰撞數(shù)量相較現(xiàn)有工作的種子場(chǎng)景分別提升了203%和351%.該數(shù)據(jù)直觀地表明本文構(gòu)建的種子場(chǎng)景更利于事故場(chǎng)景的挖掘.
Table 2 Assessment Results on Seed Scenarios Quality表2 種子場(chǎng)景質(zhì)量的評(píng)估結(jié)果
經(jīng)分析,本文發(fā)現(xiàn)導(dǎo)致該差異的主要原因是,現(xiàn)有工作使用的初始場(chǎng)景往往交通狀況簡(jiǎn)單且場(chǎng)景元素匱乏,故需要進(jìn)行繁多的變異操作后才能增加無人車與周圍環(huán)境或交通參與方的交互頻率,以此提高事故發(fā)生的概率.然而相比之下,依照本文思路構(gòu)建的種子場(chǎng)景反映了真實(shí)世界的交通路況,其場(chǎng)景元素復(fù)雜且交通參與方行為多樣,即初始的場(chǎng)景配置就對(duì)無人駕駛系統(tǒng)的感知、規(guī)劃與控制造成了不小的挑戰(zhàn).因此,該類場(chǎng)景僅需少量的變異操作,就極有可能觸發(fā)無人駕駛系統(tǒng)的缺陷,繼而導(dǎo)致事故的發(fā)生.
如表2 所示,本文構(gòu)建的種子場(chǎng)景的平均事故挖掘能力遠(yuǎn)高于現(xiàn)有工作的種子場(chǎng)景.然而,本文發(fā)現(xiàn),不同種子的事故挖掘能力存在巨大差異.例如,在本文構(gòu)建的50 個(gè)種子場(chǎng)景中,某種子場(chǎng)景在3h 內(nèi)無法挖掘到任何事故,而某種子場(chǎng)景可成功挖掘到200 余例事故場(chǎng)景.鑒于此,若能在仿真模式測(cè)試前對(duì)種子場(chǎng)景的事故挖掘能力進(jìn)行預(yù)測(cè),則能夠極大地提升測(cè)試的有效性.在二進(jìn)制模糊測(cè)試的領(lǐng)域,現(xiàn)有工作[49,63]往往在測(cè)試前基于代碼覆蓋率對(duì)種子質(zhì)量進(jìn)行預(yù)測(cè)評(píng)估.與此不同的是,無人駕駛仿真測(cè)試具有更多可參考的信息要素(如場(chǎng)景語義和系統(tǒng)代碼),如何妥當(dāng)?shù)乩眠@些要素實(shí)現(xiàn)種子場(chǎng)景的遴選是該領(lǐng)域內(nèi)有待探索的方向之一.
在傳統(tǒng)的模糊測(cè)試領(lǐng)域,長(zhǎng)時(shí)間的測(cè)試極有可能產(chǎn)生大量的程序崩潰,且其中不乏相似的崩潰.為避免不必要的分析開銷,相關(guān)工作普遍依賴崩潰去重技術(shù)[46-47]實(shí)現(xiàn)相似崩潰的聚類.類似地,如3.4 節(jié)的實(shí)驗(yàn)結(jié)果所示,面向無人駕駛系統(tǒng)的仿真模糊測(cè)試也極有可能挖掘到大量的事故場(chǎng)景,亟需事故分類技術(shù)實(shí)現(xiàn)相似事故的聚類.
挑戰(zhàn):事故場(chǎng)景元素眾多,難以自動(dòng)確認(rèn)事故相關(guān)要素.在交通領(lǐng)域[64],相關(guān)人員通常需要確認(rèn)事故主體(對(duì)事故發(fā)生產(chǎn)生直接或間接影響的交通參與方)和事故特性(地點(diǎn)與危害程度)來完成交通事故的分類.然而,在仿真事故場(chǎng)景中,場(chǎng)景元素通常復(fù)雜繁多,難以實(shí)現(xiàn)對(duì)該類信息的提取與甄別,進(jìn)而導(dǎo)致仿真事故場(chǎng)景的分類困難.
針對(duì)4.1 節(jié)所述的難點(diǎn),本文提出了一種自動(dòng)化的事故要素分析(即事故主體與事故特性)與事故場(chǎng)景分類方案,該方案主要適用于碰撞類事故.首先,當(dāng)在仿真環(huán)境中觀測(cè)到無人車碰撞事故時(shí),本文會(huì)立即通過仿真器所提供的應(yīng)用程序接口 (API) 記錄必要的事故特性.這些特性主要包括:碰撞發(fā)生的具體地點(diǎn)(如車輛所在的道路編號(hào))、碰撞的角度(如兩車車頭的夾角)和碰撞速度.隨后,本文嘗試分析各交通參與方與事故發(fā)生之間的關(guān)聯(lián)性,從而確認(rèn)事故主體.具體而言,該方法將逐個(gè)變更交通參與方的運(yùn)動(dòng)行為(隨機(jī)改變速度和軌跡點(diǎn)),若行為變更后碰撞事故不再發(fā)生或事故特性改變,則認(rèn)為該交通參與方為事故主體之一.通過上述這種“調(diào)整-重放”式的分析策略,本文能夠可信地確認(rèn)交通參與方的運(yùn)動(dòng)行為與事故發(fā)生之間的相關(guān)性.
最終,本文根據(jù)事故特性和事故主體的一致性,實(shí)現(xiàn)碰撞事故的自動(dòng)化聚類.具體地說,本文提取發(fā)生碰撞所在道路序號(hào)來標(biāo)識(shí)碰撞地點(diǎn),以追尾(0°~60°)、側(cè)撞(60°~120°)與對(duì)撞(120°~180°)這3 類情況來描述碰撞角度,以低速碰撞(0~30 km/h)、中速碰撞(30~60 km/h)和高速碰撞(60 km/h 以上)這3 類情況來描述碰撞速度.當(dāng)且僅當(dāng)碰撞所在的道路序號(hào)、碰撞角度情況和碰撞速度情況都相同時(shí),2 例無人車碰撞事故才被認(rèn)為具有相同的事故特性.對(duì)于事故主體的一致性分析,本文主要判斷主體類型和主體數(shù)量是否一致.
本文嘗試證明4.2 節(jié)所述的方案能夠幫助實(shí)現(xiàn)準(zhǔn)確的事故分類.因現(xiàn)有的仿真模糊測(cè)試工作中僅AutoFuzz 嘗試實(shí)現(xiàn)自動(dòng)化的事故分類,本文嘗試將本文所提方案與AutoFuzz 進(jìn)行對(duì)比,以體現(xiàn)其優(yōu)勢(shì).
在AutoFuzz 事故分類方案方面:AutoFuzz 提出,如果2 個(gè)事故場(chǎng)景配置的參數(shù)中至少有x%是不同的(x%是人工設(shè)置的閾值),則認(rèn)為這2 個(gè)事故場(chǎng)景不是同一類型.參照AutoFuzz 的原文[18]實(shí)現(xiàn),本文將該閾值設(shè)置為10%.與本文所提方案的區(qū)別在于,AutoFuzz 并不會(huì)區(qū)分事故主體,也不會(huì)甄別事故特性,其考慮仿真場(chǎng)景中所有的元素作為事故相似性的判斷依據(jù).
在待分類事故場(chǎng)景方面:本文從第3 節(jié)的仿真模糊測(cè)試結(jié)果中人工標(biāo)注并篩選出了50 種不同類型的碰撞事故,每個(gè)事故種類包含了10 例事故場(chǎng)景.基于這500 例事故場(chǎng)景,本文嘗試開展AutoFuzz 事故分類方案和本文所提方案的對(duì)比實(shí)驗(yàn).
在分類評(píng)估指標(biāo)方面:為了評(píng)估事故分類的效果,本文主要使用了聚類分析領(lǐng)域的常用指標(biāo)[65],即平均準(zhǔn)確率(又稱純凈度)和平均召回率(又稱倒純凈度).具體地說,平均準(zhǔn)確率可以有效衡量不同類型的事故是否會(huì)被錯(cuò)誤地分到同一類中,平均召回率可以有效衡量同一類型的事故是否會(huì)被錯(cuò)誤地分到不同類中.因這2 個(gè)指標(biāo)涵蓋了事故分類中所有可能出現(xiàn)的分類錯(cuò)誤情況,本文可以客觀地衡量不同分類方案的可靠性.基于上述定義,平均準(zhǔn)確率和平均召回率的計(jì)算方式為:
其中,Cj是第j個(gè)實(shí)驗(yàn)聚類,Li是第i個(gè)基準(zhǔn)分類,N是聚類中的元素總數(shù).
在實(shí)驗(yàn)設(shè)置與環(huán)境方面:本文使用3.3 節(jié)中介紹的服務(wù)器開展該實(shí)驗(yàn).
本實(shí)驗(yàn)的評(píng)估結(jié)果如表3 所示.由該表可知,本文方案的平均準(zhǔn)確率和平均召回率遠(yuǎn)高于AutoFuzz.為了便于理解,下面將通過2 個(gè)反例分析AutoFuzz分類效果不佳的根本原因.
Table 3 Assessment Results on Accident Triage表3 事故分類的評(píng)估結(jié)果
1)AutoFuzz 平均準(zhǔn)確率較低.如圖5 所示,對(duì)于參數(shù)配置高度相似但實(shí)則代表不同事故的場(chǎng)景,AutoFuzz 會(huì)錯(cuò)誤地將其歸類為同一類型的事故.其根本原因在于,AutoFuzz 無法鑒別事故主體與事故特性.
Fig.5 Inequivalent accidents misclassified into the same category圖5 不同事故誤分為同一類
2)AutoFuzz 平均召回率較低.類似地,如圖6 所示,當(dāng)場(chǎng)景中存在較多事故無關(guān)的主體時(shí),AutoFuzz 極有可能認(rèn)為2 個(gè)事故場(chǎng)景代表著不同類型的交通事故.
Fig.6 Equivalent accidents misclassified into different categories圖6 同種事故誤分為不同類
此外,本文方案也存在將同一類型事故錯(cuò)誤分到不同類別的情況,即平均召回率并非100%.經(jīng)過細(xì)致的案例分析,本文發(fā)現(xiàn)其主要的原因在于,部分無人車相關(guān)的碰撞事故是概率性的.如4.2 節(jié)所述,本文主要通過多次的事故重放來推斷各交通參與方是否為事故主體.因概率性事故的重放結(jié)果并不穩(wěn)定,這極易導(dǎo)致事故主體的判斷錯(cuò)誤,進(jìn)而誤導(dǎo)事故分類.
值得注意的是,本文在進(jìn)行事故分類時(shí),僅參考仿真場(chǎng)景的語義信息(事故主體和事故特性),而忽略了無人駕駛系統(tǒng)的內(nèi)部執(zhí)行狀態(tài).這意味著,不同系統(tǒng)缺陷導(dǎo)致的交通事故有可能被歸為同一類,進(jìn)而在后續(xù)的缺陷確認(rèn)環(huán)節(jié)中被忽略.因此,如何結(jié)合場(chǎng)景的語義信息與系統(tǒng)內(nèi)部的執(zhí)行信息來完成魯棒的事故分類也是亟待探索的課題之一.
傳統(tǒng)的模糊測(cè)試工具通常依賴內(nèi)存錯(cuò)誤檢測(cè)工具(如AddressSanitizer[48])來確認(rèn)崩潰發(fā)生的代碼位置,以此輔助程序缺陷的確認(rèn)與修復(fù).同樣地,對(duì)于仿真模糊測(cè)試而言,定位導(dǎo)致交通事故的系統(tǒng)缺陷位置對(duì)無人駕駛安全性的提升至關(guān)重要.然而,據(jù)現(xiàn)有研究[66]顯示,無人駕駛系統(tǒng)中易致使交通事故的缺陷通常為邏輯缺陷,其不會(huì)引發(fā)顯式的內(nèi)存錯(cuò)誤或系統(tǒng)崩潰,因此無法用常規(guī)的內(nèi)存錯(cuò)誤檢測(cè)工具來進(jìn)行缺陷代碼位置的定位.鑒于此,仿真模糊測(cè)試亟需定制化的事故歸因分析能力來提升其安全應(yīng)用價(jià)值.
挑戰(zhàn):無人駕駛系統(tǒng)的復(fù)雜性.無人駕駛系統(tǒng)是代碼和模型深度耦合的復(fù)雜智能系統(tǒng),其往往具有龐大的代碼量,使得藏匿其中的系統(tǒng)缺陷難以被發(fā)現(xiàn).例如,Apollo 開源無人駕駛系統(tǒng)擁有數(shù)十萬行的代碼.現(xiàn)有的仿真模糊測(cè)試工作(如ASF 和DriveFuzz)依賴專家經(jīng)驗(yàn)進(jìn)行人工的缺陷定位,這不僅需要對(duì)無人駕駛系統(tǒng)的模塊架構(gòu)具有深入的了解,還需要對(duì)海量的被執(zhí)行代碼進(jìn)行準(zhǔn)確邏輯語義分析.同時(shí),因這些工作并未提供人工分析的方法論和細(xì)節(jié)步驟,其可借鑒性十分有限.
盡管不同的高級(jí)別無人駕駛系統(tǒng)在代碼實(shí)現(xiàn)上截然不同,但如1.1 節(jié)所述,它們的系統(tǒng)模塊結(jié)構(gòu)和各模塊的預(yù)期功能普遍高度相似.其中,感知模塊主要負(fù)責(zé)確認(rèn)車身周圍障礙物位置;預(yù)測(cè)模塊主要推斷障礙物未來的運(yùn)行軌跡;規(guī)劃模塊主要確定無人車的安全行駛路線;控制模塊主要根據(jù)規(guī)劃路線生成對(duì)應(yīng)的車輛控制指令.鑒于此,本文實(shí)現(xiàn)了模塊級(jí)別的自動(dòng)化缺陷定位,以此提高該方案在不同無人駕駛系統(tǒng)間的可移植性.該類模塊級(jí)別的缺陷定位可極大地輔助缺陷的診斷與修復(fù).
該方案的核心思路為:實(shí)時(shí)地監(jiān)控并比對(duì)仿真場(chǎng)景中各元素的真實(shí)狀態(tài)(僅考慮事故主體,見4.2 節(jié))以及無人駕駛系統(tǒng)的模塊執(zhí)行信息,以此判斷無人駕駛系統(tǒng)各功能模塊實(shí)際運(yùn)行效果與預(yù)期功能的差距(簡(jiǎn)稱為模塊功能差距),最終將功能差距最大的模塊視為事故主責(zé)模塊(即缺陷模塊).為準(zhǔn)確地定義模塊功能差距,本文歸納了不同系統(tǒng)模塊的預(yù)期功能,并借助仿真模糊測(cè)試可實(shí)時(shí)觀測(cè)、可重放的特性實(shí)現(xiàn)了模塊功能差距的計(jì)算,具體為:
1)感知模塊功能差距.正常運(yùn)作的感知模塊旨在準(zhǔn)確定位無人車周圍所有障礙物的具體位置.為計(jì)算該模塊的功能差距,本文在仿真器中實(shí)時(shí)觀測(cè)各障礙物的真實(shí)位置信息作為預(yù)期數(shù)據(jù),同時(shí)在無人駕駛系統(tǒng)中截取感知模塊計(jì)算所得的障礙物位置信息作為實(shí)際運(yùn)行數(shù)據(jù),最終計(jì)算這2 類信息中各障礙物的位置坐標(biāo)的平均距離作為感知模塊功能差距.
2)預(yù)測(cè)模塊功能差距.正常運(yùn)作的預(yù)測(cè)模塊旨在準(zhǔn)確預(yù)測(cè)無人車周圍物體的未來運(yùn)動(dòng)軌跡.為計(jì)算該模塊的功能差距,本文嘗試重放事故場(chǎng)景,記錄仿真器中每一時(shí)刻各物體的真實(shí)未來運(yùn)動(dòng)軌跡作為預(yù)期數(shù)據(jù),同時(shí)截取預(yù)測(cè)模塊計(jì)算所得的未來軌跡作為實(shí)際運(yùn)行數(shù)據(jù),最終計(jì)算這2 類信息中平均的軌跡差異作為預(yù)測(cè)模塊功能差距.在衡量軌跡之間的差異時(shí),本文主要計(jì)算兩軌跡上具有相同時(shí)間戳的坐標(biāo)點(diǎn)之間的平均距離.
3)控制模塊功能差距.正常運(yùn)作的控制模塊旨在準(zhǔn)確按照無人駕駛系統(tǒng)規(guī)劃的行駛路徑來控制無人車的行進(jìn).為計(jì)算該模塊的功能差距,本文截取規(guī)劃模塊計(jì)算所得的行駛路徑作為預(yù)期數(shù)據(jù),同時(shí)在仿真器中記錄無人車的真實(shí)運(yùn)行軌跡作為實(shí)際運(yùn)行數(shù)據(jù),最終計(jì)算這2 類信息中無人車的軌跡差異作為控制模塊功能差距.類似地,此處仍然計(jì)算2 軌跡上具有相同時(shí)間戳的坐標(biāo)點(diǎn)之間的平均距離作為軌跡差異.
4)規(guī)劃模塊缺陷判斷.值得注意的是,正常運(yùn)作的規(guī)劃模塊旨在計(jì)算出可達(dá)目的地的安全駕駛路徑.在沒有任何人工分析的輔助下,該模塊的預(yù)期表現(xiàn)是難以定性的.因此,本文在進(jìn)行歸因分析時(shí),首先依次計(jì)算上述3 種模塊的功能差距.若這3 種模塊的功能差距都小于一定閾值(閾值的設(shè)置見5.3 節(jié)),即認(rèn)為缺陷不存在于這3 種模塊中,并參考現(xiàn)有工作[67-68]計(jì)算各時(shí)間節(jié)點(diǎn)無人車的可行駛空間,以此判斷是否為規(guī)劃模塊缺陷.具體地說,若不存在任何可行駛空間但仍然發(fā)生了碰撞(例如堵車時(shí)被后車追尾),則認(rèn)為這不是無人車負(fù)主責(zé)的事故,即該事故不是由規(guī)劃模塊缺陷導(dǎo)致;反之,本文則認(rèn)為規(guī)劃模塊是該碰撞事故的主責(zé)模塊.
現(xiàn)有的仿真模糊測(cè)試在匯報(bào)了事故場(chǎng)景后,通常僅依靠純?nèi)斯さ姆绞竭M(jìn)行歸因分析.因此,在本實(shí)驗(yàn)中,本文嘗試將所提歸因分析方案與人工分析做對(duì)比,以體現(xiàn)本文方案優(yōu)勢(shì).
在人工事故歸因分析方面:給定仿真環(huán)境下的無人車碰撞事故,本文總計(jì)邀請(qǐng)了4 位無人駕駛系統(tǒng)領(lǐng)域的專家來分析事故對(duì)應(yīng)的缺陷模塊.他們都曾為主流開源無人駕駛系統(tǒng)Apollo 或Autoware 提交過漏洞修復(fù)的commit,對(duì)這2 款無人駕駛系統(tǒng)的模塊結(jié)構(gòu)與代碼實(shí)現(xiàn)有著較深的了解.具體地說,為避免人工分析的錯(cuò)誤,各事故場(chǎng)景的歸因分析結(jié)果將由2 位專家進(jìn)行交叉驗(yàn)證.該人工驗(yàn)證所得的事故主責(zé)模塊也將作為衡量本文所提方案的基準(zhǔn)數(shù)據(jù).
在待歸因事故場(chǎng)景方面:本文從4.3 節(jié)所述的50 類交通事故中,各隨機(jī)挑選了1 例事故場(chǎng)景作為待歸因分析的對(duì)象.同類事故中,雖然不同事故場(chǎng)景的場(chǎng)景參數(shù)不同,但它們的事故特性和事故主體一致,極大概率是由相同的無人車系統(tǒng)缺陷導(dǎo)致的碰撞.因此,本文僅從每類事故中選取1 例作為歸因分析的對(duì)象.此外,這50 例碰撞事故涵蓋了不同的交通路況、無人車駕駛?cè)蝿?wù)以及環(huán)境狀態(tài),能夠全面且可信地評(píng)估事故歸因分析方案的可靠性.
在閾值設(shè)置方面:在該實(shí)驗(yàn)中,本文統(tǒng)一將感知模塊、預(yù)測(cè)模塊以及控制模塊的功能差距閾值設(shè)置為1 m.特別地,若感知模塊或預(yù)測(cè)模塊出現(xiàn)了嚴(yán)重的運(yùn)行時(shí)錯(cuò)誤(如完全無法探知某物體的存在與運(yùn)動(dòng)軌跡或認(rèn)為空曠處存在某物體),本文直接將相應(yīng)的模塊視作事故主責(zé)模塊.
在實(shí)驗(yàn)環(huán)境方面:本文使用3.3 節(jié)和3.4 節(jié)中介紹的服務(wù)器開展該實(shí)驗(yàn).
表4 展示了本實(shí)驗(yàn)的評(píng)估結(jié)果.本文能夠正確分析出44 例事故的主責(zé)模塊.雖然該準(zhǔn)確率(44/50)略低于專家分析,但本文所提的自動(dòng)化工具不要求測(cè)試人員具有豐富的無人駕駛安全領(lǐng)域知識(shí),具有高度的靈活性與可用性.本文分析了6 例歸因錯(cuò)誤的事故場(chǎng)景,發(fā)現(xiàn)錯(cuò)誤原因主要有2 類:1)其中4 例由可行駛空間計(jì)算的錯(cuò)誤導(dǎo)致.具體地說,在計(jì)算可行駛空間時(shí),本文并未考慮無人車所在道路是否可以變道或逆行,結(jié)果導(dǎo)致無法規(guī)避的碰撞事故被錯(cuò)誤地認(rèn)為是由規(guī)劃模塊缺陷導(dǎo)致的事故.2)剩余2 例事故場(chǎng)景中,本文發(fā)現(xiàn)功能差距最大的模塊并非事故主責(zé)模塊.這2 例事故均為高速駕駛場(chǎng)景,在碰撞前空曠路段的直線高速行駛過程中,因不可避免的系統(tǒng)延時(shí)導(dǎo)致控制模塊的功能差距高達(dá)2.3 m 以上.然而,碰撞發(fā)生的關(guān)鍵原因是,無人駕駛系統(tǒng)沒有準(zhǔn)確預(yù)測(cè)前車的減速行為.雖然該預(yù)測(cè)誤差僅為0.9 m 左右,但直接導(dǎo)致了無人車沒有及時(shí)剎車,造成追尾碰撞.
Table 4 Assessment Results on Accident Root Cause Analysis表4 事故歸因分析的評(píng)估結(jié)果
此外,由表4 可知,本文所提的自動(dòng)化方案平均僅需0.05 h 就可完成1 例事故場(chǎng)景的歸因分析.相比之下,具有豐富領(lǐng)域知識(shí)的安全專家需要約4.4 h 才可完成這一分析任務(wù).這直接表明,本文工作能夠大幅度地提高事故歸因分析的效率,降低事故分析的人工成本.
圖7 展示了本文工作從Apollo 6.0 中找到的1 處代碼缺陷,場(chǎng)景如圖7(b)所示.在無人車經(jīng)過一處交叉路口時(shí),右側(cè)同時(shí)橫向駛來一輛速度極慢的灰色車輛,無人車?yán)響?yīng)觀察并預(yù)測(cè)到該車輛將出現(xiàn)在前方規(guī)劃的道路上,并做出減速?zèng)Q策.然而,Apollo 系統(tǒng)并沒有對(duì)該車輛進(jìn)行任何的軌跡預(yù)測(cè),導(dǎo)致無人車徑直駛過十字路口,并最終與灰色車輛產(chǎn)生碰撞.
Fig.7 An example design flaw in Apollo 6.0圖7 Apollo 6.0 中的設(shè)計(jì)缺陷示例
本文通過采用所提的事故歸因分析方法,將導(dǎo)致該場(chǎng)景的缺陷定位于預(yù)測(cè)模塊.隨后,經(jīng)過人工的模塊內(nèi)代碼分析,定位于缺陷代碼的位置.如圖7(a)所示,在對(duì)周圍駕駛車輛進(jìn)行預(yù)測(cè)時(shí),Apollo 定義了靜止障礙物速度閾值來對(duì)抗擾動(dòng),將低于該速度的車輛統(tǒng)一認(rèn)定為靜止的障礙物.然而,Apollo 關(guān)于該閾值的默認(rèn)值(3.6 km/h)較高.該不合理的設(shè)置將導(dǎo)致系統(tǒng)無法對(duì)一些低速車輛進(jìn)行軌跡預(yù)測(cè),從而有可能導(dǎo)致交通事故的發(fā)生.
本文所提的歸因分析方案僅能定位到事故的缺陷模塊,而非具體的代碼片段.雖然該模塊定位信息能夠輔助缺陷的確認(rèn)與修復(fù),但仍然需要較多的人力進(jìn)行模塊內(nèi)代碼的溯源分析.鑒于此,本文認(rèn)為未來工作可以著眼于模塊內(nèi)的缺陷根源分析,通過充分理解事故場(chǎng)景的語義信息,結(jié)合模塊內(nèi)代碼執(zhí)行的控制流與數(shù)據(jù)流信息,實(shí)現(xiàn)更細(xì)粒度的缺陷定位.
面向無人駕駛系統(tǒng)的仿真模糊測(cè)試技術(shù)旨在將傳統(tǒng)的模糊測(cè)試技術(shù)與仿真測(cè)試技術(shù)結(jié)合,自動(dòng)地挖掘與分析易導(dǎo)致交通事故的無人駕駛系統(tǒng)缺陷.然而,該研究領(lǐng)域仍處于起步階段,現(xiàn)有工作仍然存在較大缺陷,制約了其安全應(yīng)用.鑒于此,本文首先嘗試構(gòu)建仿真模糊測(cè)試的框架,其包含種子場(chǎng)景生成、事故挖掘、事故分類和事故歸因分析四大關(guān)鍵模塊.隨后,本文系統(tǒng)性地分析了現(xiàn)有工作在實(shí)現(xiàn)四大模塊時(shí)的不足之處.最終,本文嘗試提出可行的解決思路,并將這些思路直接用于主流開源無人駕駛系統(tǒng)的安全測(cè)評(píng),以體現(xiàn)其可行性和優(yōu)越性.結(jié)合實(shí)際的安全測(cè)評(píng)結(jié)果,本文進(jìn)一步指出該領(lǐng)域未來可能的發(fā)展方向,為后續(xù)的研究工作提供可靠的指導(dǎo)意見.
作者貢獻(xiàn)聲明:戴嘉潤(rùn)負(fù)責(zé)論文的框架設(shè)計(jì)、實(shí)驗(yàn)設(shè)計(jì)以及論文撰寫;李忠睿負(fù)責(zé)論文初稿撰寫、圖表繪制和實(shí)驗(yàn)數(shù)據(jù)統(tǒng)計(jì);張琬琪參與了論文的修改潤(rùn)色;張?jiān)磁c楊珉關(guān)于論文選題和寫作提供了指導(dǎo)性建議.