一文看懂自動(dòng)駕駛測(cè)試體系
自動(dòng)駕駛的測(cè)試是一個(gè)非常復(fù)雜的系統(tǒng),我們用一篇文章,由小到大的逐個(gè)展開(kāi)來(lái)和大家一起梳理下。
在梳理之前我們先拋出一個(gè)問(wèn)題:自動(dòng)駕駛的測(cè)試需要達(dá)到什么量級(jí)?
根據(jù)國(guó)際一般標(biāo)準(zhǔn)統(tǒng)計(jì),人類司機(jī)駕駛一小時(shí)的死亡概率約為1/10^6,全世界每年因道路交通事故死亡人數(shù)約有125萬(wàn)。自動(dòng)駕駛汽車如果要發(fā)展,其死亡概率必然要遠(yuǎn)低于這個(gè)標(biāo)準(zhǔn)。根據(jù)調(diào)查,目前社會(huì)可以接受的自動(dòng)駕駛一小時(shí)的死亡率須不高于1/10^9。因此,如果要將死亡率降到1/10^9,每更新一次軟件,司機(jī)必須駕駛10^9小時(shí),才能保證功能的可靠性。顯然,這種實(shí)車測(cè)試的方法并不可取。
真實(shí)的測(cè)試體系往往利用了分層思想,結(jié)合多種不同成本和覆蓋角度的測(cè)試手段,讓我們可以用可控的時(shí)間和成本,近似達(dá)成類似實(shí)車測(cè)試的效果。不同測(cè)試方法的成本是不同的,合理迭代次數(shù)也是有區(qū)別的。一個(gè)擁有合理測(cè)試體系的項(xiàng)目,模塊邏輯測(cè)試必須規(guī)避60%以上的潛在問(wèn)題,仿真功能性能測(cè)試則要解決30%的剩余潛在問(wèn)題,而留給實(shí)車魯棒性測(cè)試最多10%。在各自手段內(nèi)盡可能的發(fā)現(xiàn)潛在問(wèn)題,控制后道測(cè)試手段的問(wèn)題量,如果搭配合理,則在保證極高覆蓋度的同時(shí),成本也會(huì)進(jìn)入可控范圍。比如如果仿真測(cè)試體系完備,則規(guī)劃開(kāi)發(fā)幾乎無(wú)須上車驗(yàn)證,就可以減少大量的外圍支持資源。
不同測(cè)試方法的對(duì)比
多層次的測(cè)試手段搭配也并非沒(méi)有代價(jià),構(gòu)建一個(gè)專項(xiàng)測(cè)試系統(tǒng)往往存在搭建周期長(zhǎng),初期成本高的問(wèn)題。無(wú)論是零部件測(cè)試中的CAE,DV,PV測(cè)試,還是軟件里的靜態(tài),集成,仿真測(cè)試,常有為了追趕進(jìn)度而繞過(guò)一些測(cè)試工序的情況發(fā)生。
其實(shí)這是一筆經(jīng)濟(jì)賬,當(dāng)我們省略了某一前道測(cè)試工序時(shí),如果后道高成本的測(cè)試工序解決前道工序遺留問(wèn)題時(shí)所耗費(fèi)的資源,要高于設(shè)立前道流程的花費(fèi),整個(gè)測(cè)試體系就會(huì)變得得不償失,反之亦然。
合理的測(cè)試層次也是一個(gè)平衡過(guò)程。
但一般而言,在一個(gè)延續(xù)性和成熟度較強(qiáng)的研發(fā)體系內(nèi),更多梯次且相互正交的測(cè)試體系配合高效的流轉(zhuǎn)往往會(huì)達(dá)成更高的效率。
真正有效的測(cè)試,往往是使用特定的測(cè)試工具和特定的測(cè)試用例,審核被測(cè)對(duì)象特定維度的問(wèn)題。任何一種測(cè)試系統(tǒng),只要其針對(duì)某一類潛在問(wèn)題,成本低于其他手段,覆蓋問(wèn)題范圍又高于其他手段,則就是一個(gè)好的測(cè)試系統(tǒng),并無(wú)所謂其屬于哪種類型的測(cè)試系統(tǒng),那都是后期被人為強(qiáng)行劃分出來(lái)的概念。在測(cè)試的設(shè)計(jì)中,務(wù)實(shí)非常重要。
工程實(shí)踐過(guò)程中的測(cè)試過(guò)程
另外,測(cè)試Pipeline往往也是訓(xùn)練Pipeline的一部分。過(guò)去測(cè)試體系的工作主要是杜絕+由于人的失誤所導(dǎo)致的潛在產(chǎn)品隱患。
最為我們所熟知的就是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test-DrivenDevelopment,TDD),其要求在編寫某個(gè)功能的代碼之前先編寫測(cè)試代碼,然后只編寫使測(cè)試通過(guò)的功能代碼,通過(guò)測(cè)試來(lái)推動(dòng)開(kāi)發(fā)進(jìn)行。
而現(xiàn)在自動(dòng)駕駛正在走向自監(jiān)督過(guò)程,我們看到更多機(jī)器與機(jī)器之間的互動(dòng)。其中也包括機(jī)器與機(jī)器之間的測(cè)試反饋和開(kāi)發(fā)調(diào)整,也就是我們非常熟悉的深度學(xué)習(xí)。對(duì)人而言,測(cè)試是為了保證產(chǎn)品和目標(biāo)一致。對(duì)機(jī)器而言,訓(xùn)練也是為了達(dá)成類似的目的。
以上就是測(cè)試的一些基本思想,緊接著我們?cè)敿?xì)看下,目前智能駕駛有哪些典型的測(cè)試過(guò)程。如下圖所示,個(gè)人認(rèn)為可以從不同合作模式、不同領(lǐng)域?qū)O蛞约安煌夹g(shù)斷面三個(gè)方面進(jìn)行系統(tǒng)性的梳理。
自動(dòng)駕駛的常用測(cè)試手段
從不同合作模式來(lái)看,可以分為黑盒、白盒以及灰盒測(cè)試。
白盒測(cè)試會(huì)檢查內(nèi)部結(jié)構(gòu)每一條通路是否按照設(shè)計(jì)正常工作,一般用于產(chǎn)品提供方內(nèi)部的管理;黑盒測(cè)試一般不考慮內(nèi)部結(jié)構(gòu),僅檢查產(chǎn)品功能是否按照合同提出的技術(shù)要求實(shí)現(xiàn)了,一般用于被提供方的內(nèi)部管理;灰盒測(cè)試介于上述兩種測(cè)試程度之間,在測(cè)試外部功能的基礎(chǔ)上,會(huì)對(duì)關(guān)鍵鏈路進(jìn)行確認(rèn),一般用于提供方的發(fā)布測(cè)試或者被提供方的驗(yàn)收測(cè)試,具體程度視具體合作而定。
從不同領(lǐng)域?qū)m?xiàng)來(lái)看,不同的領(lǐng)域有各自特有的問(wèn)題及其對(duì)應(yīng)的測(cè)試維度。
從軟件代碼出發(fā)會(huì)有靜態(tài)測(cè)試、動(dòng)態(tài)測(cè)試等:靜態(tài)測(cè)試會(huì)分析程序的語(yǔ)句結(jié)構(gòu)、編程規(guī)范等是否有錯(cuò)誤和不妥,常用工具包括QAC/Converity等,占整個(gè)測(cè)試體系的比重較小,一般是軟件測(cè)試的第一道,與之類似的是codereview其會(huì)組織相關(guān)專家對(duì)代碼的靜態(tài)設(shè)計(jì)做出評(píng)估;而動(dòng)態(tài)測(cè)試則會(huì)比對(duì)運(yùn)行程序后的結(jié)果與預(yù)期,分析運(yùn)行效率和健壯性,目前自動(dòng)駕駛絕大部分軟件測(cè)試科目都屬于動(dòng)態(tài)測(cè)試范疇,比如性能測(cè)試及各類在環(huán)測(cè)試。
從不同技術(shù)斷面出發(fā),是所有劃分模式中最復(fù)雜也是最重要的。
首先解釋下設(shè)置斷面的意義。當(dāng)我們面臨一個(gè)復(fù)雜多因素混合作用的系統(tǒng)問(wèn)題時(shí),通過(guò)設(shè)置斷面,可以隔離影響變量,將復(fù)雜性簡(jiǎn)化到一個(gè)可被測(cè)試的程度,同時(shí)可以將原本串行的問(wèn)題排查任務(wù)轉(zhuǎn)化成并行任務(wù),縮短項(xiàng)目進(jìn)度。
如下圖所示,最底層的是單元測(cè)試、模塊測(cè)試和模塊集成測(cè)試。在研發(fā)平臺(tái)上(X86),將軟件函數(shù)、單個(gè)或多個(gè)模塊的輸入輸出作為斷面,核心在于驗(yàn)證代碼邏輯的正確性。通過(guò)VectorCast、GTest等工具將大量的錯(cuò)誤輸入和少量的正確輸入注入被測(cè)對(duì)象,確認(rèn)反饋符合預(yù)期,這個(gè)過(guò)程一般是開(kāi)環(huán)的。
模塊級(jí)別的測(cè)試一般也被稱為模型在環(huán)測(cè)試Model-in-the-Loop(MIL) 除了考慮部分正確性外,還會(huì)有一些模型性能指標(biāo)比如感知模塊的識(shí)別精度等。
軟件邏輯層面的測(cè)試方法
一個(gè)在X86上穩(wěn)定運(yùn)行的軟件,在嵌入式環(huán)境下可能出現(xiàn)堆棧溢出,調(diào)度混亂,時(shí)間戳不穩(wěn)定,系統(tǒng)調(diào)用支持不到位,內(nèi)存讀取異常,運(yùn)行阻塞等一系列問(wèn)題。為了排查這種差異。如下圖所示,在軟件邏輯層面之上可以繼續(xù)引入目標(biāo)硬件這個(gè)維度,也就是處理器在環(huán)測(cè)試Processor-in-the-Loop(PIL),其是將部分代碼放置于目標(biāo)處理器上,驗(yàn)證代碼功能正確性的同時(shí),確認(rèn)其性能是否達(dá)到要求。比如,軟件最長(zhǎng)耗時(shí),系統(tǒng)調(diào)用可靠性等。軟件在環(huán)測(cè)試一般評(píng)估正確性,而硬件在環(huán)測(cè)試一般評(píng)估穩(wěn)定性。
PIL測(cè)試方法
如下圖所示,以上所有的測(cè)試一般都是開(kāi)環(huán)的,并不會(huì)驗(yàn)證與環(huán)境的交互。當(dāng)我們?cè)谲浻布木S度上增加和虛擬或者現(xiàn)實(shí)環(huán)境的交互,就產(chǎn)生了軟件在環(huán)測(cè)試SIL(Software-in-the-Loop)和硬件在環(huán)測(cè)試HIL(Hardware-in-the-Loop)的概念。
引入環(huán)境要素后,還會(huì)同時(shí)引入場(chǎng)景庫(kù)作為測(cè)試用例。測(cè)試過(guò)程除了驗(yàn)證基本邏輯外,還會(huì)評(píng)估一部分智能駕駛的運(yùn)行服務(wù)指標(biāo)。
SIL測(cè)試不考慮目標(biāo)硬件,可以在服務(wù)器上大量部署,成本較低,核心用于驗(yàn)證智駕功能的閉環(huán)運(yùn)行正確性??梢詣澐譃槭褂谜Z(yǔ)義級(jí)仿真系統(tǒng)進(jìn)行的局部閉環(huán)測(cè)試,以及使用環(huán)境渲染級(jí)別仿真系統(tǒng)進(jìn)行的軟件全功能閉環(huán)測(cè)試。
SIL是目前最有潛力的測(cè)試手段之一,因此我們做一個(gè)簡(jiǎn)單展開(kāi)。單元測(cè)試、模塊測(cè)試等方法雖然自動(dòng)化率高,但不能直接發(fā)現(xiàn)智駕系統(tǒng)的功能性問(wèn)題。而硬件在環(huán)測(cè)試、實(shí)車測(cè)試等雖然問(wèn)題發(fā)現(xiàn)更為直觀,但成本較高。而SIL在這些方法之間取得了不錯(cuò)的平衡,是一種性價(jià)比很高的手段。SIL系統(tǒng)從內(nèi)部看核心要確??芍貜?fù)性。如果測(cè)試無(wú)法復(fù)現(xiàn)其過(guò)去的實(shí)驗(yàn)結(jié)果,對(duì)后續(xù)評(píng)估會(huì)構(gòu)成很大影響。如果由于多線程等原因確實(shí)無(wú)法完全保持可重復(fù)性,也需要多次實(shí)驗(yàn)后確認(rèn)其方差與穩(wěn)定性。從整個(gè)測(cè)試體系看,越靠近內(nèi)部(比如單元測(cè)試),則越容易控制可重復(fù)性,而越靠近外部(比如實(shí)車測(cè)試),就越難控制。從SIL系統(tǒng)的外部看核心是自動(dòng)化率和大規(guī)模并行部署的能力,作為整個(gè)測(cè)試體系當(dāng)中綜合分析來(lái)說(shuō)規(guī)模最大的測(cè)試手段。減少人工和提高并發(fā)部署能力可以有效降低測(cè)試成本,并提高測(cè)試效率。SIL系統(tǒng)在智能駕駛的閉環(huán)體系下,除了測(cè)試,也開(kāi)始為規(guī)劃的迭代訓(xùn)練服務(wù)。我們?cè)诜抡鏈y(cè)試中進(jìn)行的安全評(píng)估、功能評(píng)估、法規(guī)要求評(píng)估、舒適性評(píng)估等所使用的指標(biāo)和用例,其實(shí)也都是規(guī)控訓(xùn)練過(guò)程中的一種“損失函數(shù)”。
HIL測(cè)試區(qū)別于SIL需要考慮目標(biāo)硬件,一般不會(huì)大量部署,因?yàn)槌杀据^高,其結(jié)果相比SIL更接近真實(shí)狀態(tài),可以額外評(píng)估軟件在目標(biāo)硬件上的整體性能(運(yùn)行調(diào)度,內(nèi)存調(diào)用,算力調(diào)用)是否符合預(yù)期。HIL測(cè)試通常將一個(gè)被測(cè)控制器和一系列模擬設(shè)備做硬線(PWM、UART、CAN、GPIO等)連接,將記錄或模擬的原始數(shù)據(jù)反向構(gòu)建成真實(shí)信號(hào)輸入,來(lái)完成對(duì)目標(biāo)硬件的測(cè)試工作。在實(shí)踐過(guò)程中,個(gè)人認(rèn)為,切勿執(zhí)著于全功能長(zhǎng)周期工作的HIL臺(tái)架,20臺(tái)輕量級(jí)HIL臺(tái)架(PIL臺(tái)架)的價(jià)格可能還不及1臺(tái)全功能HIL臺(tái)架。效果上兩者對(duì)比差距卻并不大。一部分物理IO,一部分功能模擬往往更為科學(xué),HIL臺(tái)架一般僅用于短周期的閉環(huán)測(cè)試,長(zhǎng)周期測(cè)試往往會(huì)有較大誤差。
SIL和HIL測(cè)試方法
完成了單控制器的測(cè)試后,智能駕駛測(cè)試會(huì)繼續(xù)進(jìn)入整車級(jí)別,如下圖所示,首先我們要介紹的是車輛在環(huán)測(cè)試VIL(Vehicle-in-Loop)或者說(shuō)實(shí)車虛擬注入測(cè)試,即通過(guò)在軟件內(nèi)部配置斷面測(cè)試接口,在封閉測(cè)試場(chǎng)內(nèi)的實(shí)車測(cè)試環(huán)境下,屏蔽部分真實(shí)感知輸入,從而在測(cè)試場(chǎng)內(nèi)的空曠區(qū)域模擬任何形式的道路環(huán)境。比如在路上添加并不存在的車輛,或是模擬一個(gè)交叉口的信號(hào)燈切換。由于其他測(cè)試要素均為真實(shí)內(nèi)容,因此測(cè)試可信度高,且可以充分利用封閉測(cè)試場(chǎng)的環(huán)境資源。
VIL測(cè)試方法
另一種VIL的全新形態(tài)是實(shí)車交通環(huán)境在環(huán)測(cè)試(VTEHIL),在室內(nèi)場(chǎng)地構(gòu)建模擬的周邊環(huán)境變化以及車輛移動(dòng),來(lái)進(jìn)行智能駕駛車的測(cè)試。由于環(huán)境完全受控,不受到氣候變化影響,可實(shí)現(xiàn)24小時(shí)連續(xù)測(cè)試,并且可以高效且完整模擬極端工況。
VTEHIL測(cè)試方法
進(jìn)一步往下,是道路在環(huán)測(cè)試RIL(Road-in-Loop)或者說(shuō)封閉場(chǎng)地測(cè)試。除了環(huán)境參與者和司機(jī)之外,其他全部都是真實(shí)要素。
在常規(guī)汽車測(cè)試體系中,此種測(cè)試手段也是常規(guī)操作,但不同于過(guò)去人工遙控和擺放的實(shí)施手段,目前已經(jīng)出現(xiàn)了自動(dòng)化測(cè)試方案,由于最新的假人假車裝備同樣配置了必要的傳感器,執(zhí)行器與通信設(shè)備,可以接入云端集中指揮調(diào)度。因此云端的測(cè)試用例可以同步到封閉測(cè)試場(chǎng)內(nèi)被智能假人和假車“表演”出來(lái)。大大提升完成一次測(cè)試的效率。
RIL測(cè)試方法
相比控制器級(jí)別的測(cè)試,整車級(jí)測(cè)試更關(guān)系體驗(yàn)下指標(biāo),比如接管率、魯棒性等指標(biāo)。除了VIL和RIL之外,整車級(jí)別測(cè)試還有LabCar測(cè)試以及大規(guī)模實(shí)車測(cè)試,這部分內(nèi)容更多和整車其他傳統(tǒng)測(cè)試流程一起進(jìn)行。
LABCAR測(cè)試臺(tái)架
單個(gè)智駕控制器測(cè)試完成后,需要給到整車部門,在整個(gè)電子電氣架構(gòu)中進(jìn)行測(cè)試,這個(gè)測(cè)試就被稱為L(zhǎng)ABCAR測(cè)試,LABCAR測(cè)試也可以理解為幾個(gè)控制器組成的硬件在環(huán)(HIL)測(cè)試。通過(guò)模擬外圍傳感器與執(zhí)行器信息來(lái)檢測(cè)整個(gè)電子電氣系統(tǒng)是否工作正常,同時(shí)LABCAR還可以人為注入故障(短路,斷路等)來(lái)檢測(cè)非正常情況下反應(yīng)是否符合預(yù)期。
整車測(cè)試相對(duì)于系統(tǒng)測(cè)試往往關(guān)注的并非單個(gè)功能,而是可能導(dǎo)致綜合影響的共性維度。比如整車異響性能測(cè)試。在很多相關(guān)問(wèn)題上,涉事零部件往往在單體臺(tái)架試驗(yàn)、系統(tǒng)級(jí)臺(tái)架試驗(yàn)上,均無(wú)法復(fù)現(xiàn),僅僅只有在整車狀態(tài)下的某些特殊工況下才會(huì)出現(xiàn)。
整車測(cè)試的一般做法就是開(kāi)放道路測(cè)試。首先是汽車的六大基本性能,包括動(dòng)力性、經(jīng)濟(jì)性、制動(dòng)性、操穩(wěn)性、通過(guò)性,都有標(biāo)準(zhǔn)客觀試驗(yàn)做定量解析,平順性可能涉及工程師校調(diào),隨風(fēng)格會(huì)有些許差異。另外會(huì)在各種極端環(huán)境下做綜合測(cè)試(高原,高寒,高溫),常說(shuō)的“冬天去黑河,夏天去海南”,就是這么來(lái)的。一般來(lái)說(shuō)所有測(cè)試的試驗(yàn)條件會(huì)比正常用車條件苛刻的多,從而可以有效提升測(cè)試效率。當(dāng)然還包括剛才說(shuō)到的NVH性能,耐久性能等只有在整車環(huán)境下才可以進(jìn)行的測(cè)試。總的來(lái)說(shuō),整車測(cè)試的核心邏輯和零部件測(cè)試類似。由于測(cè)試需要配備牌照,保險(xiǎn),司機(jī)以及大量其他人力和保障資源,時(shí)間和經(jīng)濟(jì)成本都很高。因此整車測(cè)試往往較為精煉且被嚴(yán)格計(jì)劃。實(shí)驗(yàn)工況數(shù)量和測(cè)試次數(shù)會(huì)被精密計(jì)算,一般根據(jù)理論外加經(jīng)驗(yàn)估計(jì)得到。整車測(cè)試的另一個(gè)目的就是獲得政府認(rèn)可公告。中國(guó)有針對(duì)乘用車的強(qiáng)制檢驗(yàn)標(biāo)準(zhǔn),大概40余項(xiàng),對(duì)于可以在市場(chǎng)售賣的車輛而言,這些試驗(yàn)是必須通過(guò)的。
大規(guī)模實(shí)車測(cè)試
大規(guī)模開(kāi)放道路測(cè)試對(duì)于智能駕駛系統(tǒng)來(lái)說(shuō)也是必須的,原因和傳統(tǒng)路測(cè)略有不同。由于真實(shí)交通中更加千變?nèi)f化,而駕駛模擬器或者受控場(chǎng)地測(cè)試只能復(fù)現(xiàn)很小一部分,評(píng)價(jià)的結(jié)果可能與真實(shí)情況有偏差。因此需要大規(guī)模路試來(lái)對(duì)智能駕駛汽車在整個(gè)交通環(huán)境中的運(yùn)行進(jìn)行驗(yàn)證。在開(kāi)放道路測(cè)試中,功能數(shù)據(jù)、行為數(shù)據(jù)、環(huán)境數(shù)據(jù)都要同步采集。功能數(shù)據(jù)往往來(lái)源于智駕系統(tǒng)本身。行為數(shù)據(jù)核心是監(jiān)控司機(jī)反應(yīng),來(lái)源于額外安裝的內(nèi)部攝像頭、眼球追蹤儀、生理檢測(cè)設(shè)備。而環(huán)境數(shù)據(jù)會(huì)同時(shí)來(lái)源于車輛自身的環(huán)境傳感器以及一些額外安裝的性能更高的傳感設(shè)備,比如激光、ins或者高清相機(jī)。當(dāng)然目前這種方法已經(jīng)更多的被數(shù)據(jù)閉環(huán)的方式所代替
以上就是和智能駕駛系統(tǒng)相關(guān)的所有測(cè)試手段的介紹,個(gè)人往往很難接觸到所有這些任務(wù),但是理解完全局,對(duì)于個(gè)人理解自己的測(cè)試任務(wù)在研發(fā)中的意義是有指導(dǎo)性的。