張劍鋒 馬玲 李廣召
(吉利汽車研究院)
如今,自動(dòng)駕駛汽車已經(jīng)成為各大車企競相研發(fā)的領(lǐng)域之一。相對于傳統(tǒng)汽車,自動(dòng)駕駛汽車依靠系統(tǒng)中的感知、決策、控制三大子系統(tǒng)完成汽車的無人駕駛?cè)蝿?wù)。自動(dòng)駕駛控制系統(tǒng)的研發(fā)必須把該系統(tǒng)的安全性放在第一位,而如何保證系統(tǒng)的安全性成為研發(fā)中最具挑戰(zhàn)性的難題。為了提高控制軟件的開發(fā)效率和品質(zhì)[1],基于MATLAB/Simulink 的MBD[2](Model-Based Development)開發(fā)方法,文章介紹了一套控制軟件算法的仿真測試環(huán)境,并使用該環(huán)境對控制軟件進(jìn)行了測試,達(dá)到了預(yù)期的目的。
在V 字形開發(fā)流程中,MIL 測試環(huán)節(jié)的位置,如圖1 所示。
圖1 MIL 環(huán)節(jié)在V 字形開發(fā)流程中位置的示意圖
文章介紹的MIL 環(huán)境主要分為4 個(gè)部分,如圖2所示。
圖2 MIL 環(huán)境的構(gòu)成示意圖
1)ADSM (Autonomous Driving Service Module)。ADSM模型主要包含傳感器對環(huán)境的感知、數(shù)據(jù)融合和軌跡規(guī)劃等功能。其中,傳感器對環(huán)境的感知部分由CarSim 中的Sensor 模型來模擬,其它部分由ADSM中的模型來完成。
2)MCM(Motion Control Module)。該部分主要包含車輛的模式管理、橫向控制、縱向控制、安全決策、人機(jī)管理等模型。這部分值得注意的是,搭建的自動(dòng)駕駛車輛運(yùn)動(dòng)控制MIL 仿真模型的主要目的之一就是為了測試基于模型開發(fā)的MCM控制器的功能是否滿足需求,在設(shè)計(jì)智能PHEV 系統(tǒng)MIL 平臺時(shí),更多考慮的是如何仿真實(shí)現(xiàn)MCM的所有功能,因此另外3 個(gè)部分是圍繞如何實(shí)現(xiàn)MCM功能來設(shè)計(jì)的。
3)Vehicle。該模型由車輛動(dòng)力學(xué)仿真工具CarSim來完成,通過S-Function 的形式和Simulink 中的控制算法模型進(jìn)行聯(lián)合仿真。CarSim 中動(dòng)力系統(tǒng)的設(shè)置,如圖3 所示,其中原車中的發(fā)動(dòng)機(jī)、變速箱等部分被屏蔽掉,在差速器的輸入端接入MCM 發(fā)來的驅(qū)動(dòng)扭矩指令,另外再接入從MCM發(fā)來的轉(zhuǎn)向盤轉(zhuǎn)角指令和制動(dòng)主缸壓力指令,CarSim 輸出車輛的坐標(biāo)、速度、加速度、Yaw、Row、轉(zhuǎn)向盤轉(zhuǎn)角、車道線和障礙物信息等。
圖3 CarSim 中動(dòng)力系統(tǒng)的配置圖
4)Others。這部分內(nèi)容包括電子液壓制動(dòng)系統(tǒng)(EHB:Electric Hydraulic Brake)、車身穩(wěn)定控制器(ESC:Electronic Stability Control)等,為了提高仿真效率,這部分的控制器模型大部分是使用現(xiàn)有車型的控制器模型做簡化后集成的。
上述MIL 環(huán)境搭建好之后,為了驗(yàn)證該環(huán)境的正確性,選取了一種工況,采集實(shí)車的驅(qū)動(dòng)扭矩、制動(dòng)主缸壓力和轉(zhuǎn)向盤轉(zhuǎn)角數(shù)據(jù),同時(shí)在MIL 模型中模擬同一種工況,記錄驅(qū)動(dòng)扭矩、制動(dòng)主缸壓力和轉(zhuǎn)向盤轉(zhuǎn)角,并與實(shí)車數(shù)據(jù)進(jìn)行了對比,如圖4 所示。從對比結(jié)果來看,MIL 仿真結(jié)果在趨勢上與實(shí)車結(jié)果是吻合的,因此,該環(huán)境可以用來對自動(dòng)駕駛車輛控制算法進(jìn)行功能性驗(yàn)證和測試。
圖4 實(shí)車采集數(shù)據(jù)與MIL 仿真數(shù)據(jù)的對比結(jié)果圖
測試用例編寫的難易程度受到需求描述是否足夠詳細(xì)、明確,以及測試工具的易用程度的影響[3]。當(dāng)上游工程將軟件需求釋放之后,準(zhǔn)確理解需求是寫好測試用例的前提條件。測試工具選擇MATLAB/Simulink 工具箱Simulink Test,文章以MCM 中的模式管理模塊為例,介紹測試用例的編寫方法。
首先,自動(dòng)駕駛車輛運(yùn)動(dòng)控制MIL 仿真模型中根據(jù)測試需求將需要操作的輸入輸出信號通過Simulink的Inport、Outport 模塊引出來,創(chuàng)建帶有Test Sequence模塊的Test Harness(Test Harness 是Simulink Test 根據(jù)模型生成的測試框架模型,它附著在主模型上,也可以進(jìn)行批量化管理),如圖5 所示。在Test Sequence 模塊中可以實(shí)現(xiàn)對輸入信號的控制和對輸出信號的判斷,以及對每個(gè)測試步驟設(shè)置遷移條件。Test Sequence 支持豐富的語句,包含賦值語句、when、verify()、assert()等,遷移條件語句有duration (),after (),true。創(chuàng)建好Test Harness 后,便可在Test Sequence 中編寫測試用例。
圖5 Test Harness 中Test Sequence 的示意圖
表1 示出模式管理模塊的部分軟件需求,依據(jù)該軟件需求,使用Test Sequence 模塊設(shè)計(jì)出的測試用例,如圖6 所示。圖7 示出從示波器中觀察到的運(yùn)動(dòng)控制模式信號(XCU_AutoDriverSts)隨測試步驟的跳轉(zhuǎn)圖。
表1 MCM 中模式管理模塊部分模式的跳轉(zhuǎn)需求
圖6 Test Sequence 中測試步驟截圖
圖7 XCU_AutoDriverSts 信號的模式跳轉(zhuǎn)圖
如果編寫的測試用例數(shù)量很多,可以借助Simulink Test 中的Test Manager 工具實(shí)現(xiàn)批量化自動(dòng)執(zhí)行,如圖8 所示。Test Manager 可實(shí)現(xiàn)多個(gè)Test Harness 一鍵運(yùn)行測試,并在運(yùn)行結(jié)束后產(chǎn)生測試報(bào)告。應(yīng)用此方法,在第1 輪MCM軟件迭代開發(fā)過程中,MIL 測試共發(fā)現(xiàn)了包含軟件開發(fā)與需求不符,軟件bug 等在內(nèi)的42 個(gè)軟件問題,其中:1)軟件bug 問題占4 個(gè);2)需求功能軟件暫未實(shí)現(xiàn)問題占6 個(gè);3)軟件功能與需求不符問題占32 個(gè)。
圖8 Test Manager 中同時(shí)管理多個(gè)Test Harness 的截圖
文章主要介紹了一種基于Simulink Test 的自動(dòng)駕駛車輛運(yùn)動(dòng)控制的MIL 測試方法。在完成對MIL 環(huán)境的搭建之后,通過與實(shí)車數(shù)據(jù)進(jìn)行對比,驗(yàn)證了該MIL環(huán)境的正確性。在此基礎(chǔ)上,對軟件需求進(jìn)行了理解和分析,借助于MATLAB/Simulink 工具箱Simulink Test,編寫出相應(yīng)的測試用例并進(jìn)行了MIL 測試。測試結(jié)果表明,使用該方法,可以在控制軟件開發(fā)的早期,發(fā)現(xiàn)軟件中存在的bug 以及需求和軟件不符之處,有效地提高了軟件的品質(zhì),縮短了軟件的開發(fā)周期。
然而,在實(shí)際測試過程中也發(fā)現(xiàn)了以下不足之處:1)軟件需求難于理解;2)CarSim 交通場景搭建耗時(shí)耗力;3)MIL 模型復(fù)雜導(dǎo)致的仿真速度慢。對于此類問題,將在后續(xù)的工作中持續(xù)加以解決和改善。