鮑海寶
(同濟大學 控制工程,上海 200092)
車載信息系統(tǒng)是給車輛駕駛者提供車輛狀態(tài)、操作提示、故障報警以及信息反饋的系統(tǒng)平臺,主要包括:收音機/導航/CD機模塊、儀表、空調面板模塊、方向盤開關模塊、后攝像頭模塊。是人車交互最多的系統(tǒng),也是最易被客戶察覺故障的系統(tǒng)。其系統(tǒng)測試環(huán)節(jié)繁瑣冗長,而且很大程度上受到測試人員經(jīng)驗及仔細度耐心度的制約。因此,研發(fā)高自動化的車載信息系統(tǒng)對提高車載信息系統(tǒng)的產(chǎn)品性能,并為更好的挖掘其隱藏的問題奠定了良好的基礎。
系統(tǒng)原理圖如圖1所示。工業(yè)相機用于采集和處理車載信息系統(tǒng)的屏幕圖像;4軸機械手用于操控車載信息系統(tǒng)的觸摸屏;VTsystem用于仿真試驗相關環(huán)境。其中 CANoe是Vector公司開發(fā)的一款用于網(wǎng)絡和ECU開發(fā)、測試和分析的專業(yè)工具,支持從需求分析到系統(tǒng)實現(xiàn)的整個系統(tǒng)的開發(fā)過程。CANoe可用于DBC文件的生成,網(wǎng)絡設計評估,通過其內部嵌套的CAPL語言實現(xiàn)ECU功能建模仿真。同時,CANoe還集成了大量的函數(shù)庫以及支持VTsystem等相關硬件,便于簡化測試開發(fā)。通過使用test setup模塊,CANoe可以進行連續(xù)自動化測試,并自動生成測試報告。另外,CANoe具有診斷功能集,用以與ECU進行診斷通信。
圖1 系統(tǒng)原理圖
以Execel為模板的測試用例通過腳本應用程序,也就是VBA[1](Visual Basic for Applications),編譯后生成 CAPL 測試腳本[2],該測試腳本可以直接集成到CANoe中運行。工業(yè)相機通過以太網(wǎng)與主機相連,通過MATLAB的應用接口受控于CANoe。當需要圖像處理時,CANoe向MATLAB發(fā)送命令,MATLAB接收指令,并將識別結果反饋給CANoe。四軸機械手通過以太網(wǎng)與主機相連,通過MATLAB的應用接口受控于CANoe。當需要對觸摸屏操作時,CANoe向MATLAB發(fā)出指令,MATLAB接收指令,控制機械手執(zhí)行指定位置的操作。機械手執(zhí)行相關動作后,返回到初始位置,同時工業(yè)相機對操作結果進行圖像識別驗證。
VTsystem通過以太網(wǎng)與主機相連,直接受控于 CANoe。CANoe根據(jù)測試腳本控制VTsystem的板卡,并實時監(jiān)控相關的反饋。測試過程中,CANoe調用XSLT stylesheet生成測試報告。
本文從以下四個方面來逐步闡述整個自動化系統(tǒng)中各個環(huán)節(jié)內容的開發(fā)內容:腳本應用程序的生成、圖像處理、VTsystem配置、系統(tǒng)集成。
腳本應用程序通過識別測試用例中的關鍵字識別出測試用例設計者的意圖從而自動生成測試腳本。其中幾個重要環(huán)節(jié)包括:測試用例中關鍵字的定義、環(huán)境變量識別、測試函數(shù)生成。當然,腳本應用程序首先需要掃描測試用例的內容,檢查測試用例是否完整,是否含有非法字符,否則,將提示編譯失敗信息。
測試腳本自動生成的關鍵是關鍵字的應用。通過提取測試用例中的關鍵字,腳本應用程序完成對測試用例特征和測試意圖的提煉。關鍵字要精短簡潔并能覆蓋盡量多的測試場景。因此,測試用例中的關鍵字包括以下幾個內容:功能描述、操作命令、測試執(zhí)行、期望行為、期望信號、測試用例句柄符、測試步驟句柄符。每個測試用例必須以測試用例句柄符Test Case為起始行,以測試步驟句柄符Test Step或者Precondition為結束。關鍵字的應用如圖2測試用例模板中所示。
圖2 測試用例模板
腳本應用程序掃描所有操作命令行信息、所有CAN/LIN信號、所有時鐘信息、所有預處理操作,將這些信息中轉換成環(huán)境變量信息,并按CAPL(Communication Application Programming Language)語法格式完成變量的定義,同時生成一個專門的環(huán)境變量數(shù)據(jù)庫文件。
通過提取句柄符(Test Case/Precondition/Test Step)來生成每個測試用例及步驟代碼。Test Case對應的功能描述用于生成測試子函數(shù)名;Precondition用于生成測試的準備條件,通過其后面的操作命令關鍵字來協(xié)同生成代碼,可以用來產(chǎn)生對話框以提示操作者,或者直接驅動VTsystem板卡進行相應輸出,或者通過工業(yè)相機識別一下當前狀態(tài)并反饋結果;Test Step通過其后面的操作命令關鍵字來協(xié)同生成實際的相關測試操作,Input和Output可以是CAN/LIN信號,也可以是VTsystem板卡仿真的信號。通過對測量結果是否與期望結果一致的判斷邏輯形成測試腳本邏輯。腳本應用程序通過對整個測試用例的掃描完成對測試序列的排列,從而生成對應的測試腳本。
圖像處理是對車載信息系統(tǒng)中顯示部分的信息提取。其中待檢測的部件主要包括兩個部分:汽車儀表盤、導航顯示屏。
整個系統(tǒng)的圖像識別中,只要有五類識別對象:表盤類、數(shù)字類、圖標類、文字類,指示燈閃爍頻率。采用模板法圖像識別對數(shù)字類、圖標類、文字類圖像進行識別。模板法中主要用圖像的相似度,也就是將被測圖像與待測圖像的二值化后的矩陣的協(xié)方差比標準方差,公式如下:
(1)表盤類圖像識別[3]通過抓取指針當前位置與初始位置的角度折算成表盤刻度。由于相機與指針間存在一個視覺角度差,因此,在指針通過不同位置進行必要的補償可以滿足要求。
(2)數(shù)字類圖像識別通過模板匹配[4-5]的方式把可能要顯示的數(shù)字通過圖像采集下來,進行局部截取完成圖庫模板的制作。然后把測試采集的圖像與圖庫中模板逐一對比,當接近率達到70%,即可認為相同。
(3)圖標類圖像識別:由于導航及儀表的圖標有限,將采用模板匹配法進行處理。
(4)文字類圖像識別[6-7]:通過對文字區(qū)域圖進行文字切割,然后再將每個文字在字體圖庫中比對查詢。
(5)指示燈閃爍頻率:閃爍頻率可以通過采用高頻相機對連續(xù)多幀圖像進行識別對比即可得出相關頻率參數(shù)。
圖像處理是指CANoe與MATLAB對圖像識別的請求以及MATLAB的測試結果如何反饋給CANoe。CANoe與MATLAB的通訊通過共享內存的方式,CANoe將指令寫入共享內存,MATLAB周期性讀取共享內存中的指令并把識別結果寫入文本剪切板,供CANoe讀取。具體步驟如下:
(1)CANoe向文本剪切板寫入指令,如 CAMERA1BRAKELAMPON;
指令解析:CANoe命令MATLAB用CAMERA1被測對象上的BRAKELAMP區(qū)域(該區(qū)域是圖像標定時確定的圖像興趣點坐標)進行識別,將采集的圖像與路徑CAMERA1BRAKELAMP下的ON.jpg進行對比。
(2)MATLAB讀取CANoe指令,采集對應的圖像,截取對應的興趣點圖像并根據(jù)其類型進行相關處理,并反饋結果。如,CAMERA1BRAKELAMPON:x;
指令解析:x代表MATLAB的狀態(tài)及結果。0,表示結果不匹配;1,表示結果匹配;2,表示正在處理;3,表示指令無效或無法執(zhí)行;
(3)CANoe讀取反饋結果,并刪除該剪切板指令。
VTsystem的主要用途是仿真控制器外部工作環(huán)境,同時對控制器的輸出進行監(jiān)控。
(1)仿真測試所需的激勵信號:實現(xiàn)相關ECU端輸入信號的仿真,主要有數(shù)字輸入,模擬輸入。其中板卡為 VT2816,VT2848。
(2)監(jiān)控控制器輸出:實現(xiàn)相關ECU端輸出信號的監(jiān)控,主要有數(shù)字/模擬信號采集,其中板卡為VT2816,VT2848。
(3)電源控制模塊:實現(xiàn)KL30/KL15/KL50的電源輸出控制,同時提供電流檢測功能。其板卡為VT7001。
(4)故障注入模塊:實現(xiàn)對ECU的外部信號進行故障注入,主要是信號的短路、斷路、對電源/地的短接等。其板卡為VT2820。
(5)總線模塊:實現(xiàn)對CAN/LIN信號的仿真和監(jiān)控,采用USB接口的VN1640模塊。
所有模塊與VTsystem的連接都通過BOB[8]。系統(tǒng)使用外置電腦作為主機,VTsystem板卡資源需求,如圖3。
圖3 VTsystem配置
系統(tǒng)集成的主要任務有四個:(1)將生成的代碼與VTsystem的硬件資源關聯(lián)起來;(2)圖像識別及機械手的標定;(3)CANoe與MATLAB程序關聯(lián);(4)測試報告的生成。
該任務通過CANoe對環(huán)境變量數(shù)據(jù)庫與VTsystem硬件資源的關聯(lián)。首先是加載VTsystem,然后配置各通道的參數(shù),最后通過關聯(lián)屬性將VTsystem與通過腳本應用程序生成的環(huán)境變量等相關數(shù)據(jù)庫關聯(lián)起來。
圖像標定及測試時必須保證相機與待測對象的相對位置固定,首先選取對應相機、定義感興趣的圖像識別區(qū)域并命名,同時將采集到的圖像存儲到對應的目錄中并且將興趣區(qū)域坐標存儲到后臺數(shù)據(jù)庫中。如,選擇的工業(yè)相機為Camera1,感興趣區(qū)域為
BRAKELAMP,圖像命名為ON,則圖像會被存儲為..CAMERA1
BRAKELAMPON.jpg.
機械手的標定相對比較簡單,選取觸摸屏幕上4個角分別標定一下并將結果存入機械手數(shù)據(jù)庫,其余位置的坐標通過HMI上定義的位置,通過MATLAB自動計算出來導入到機械手數(shù)據(jù)庫,然后再選取幾個點進行驗證即可。
該任務是使CANoe發(fā)出的指令能被MATLAB正確識別。因此,系統(tǒng)需要對每個待識別的圖像以及機械手的位置進行關聯(lián)。同時,需要調整圖像識別以及機械手的響應時間參數(shù),以便CANoe讀取識別結果。MATLAB執(zhí)行機械手操作時與CANoe的通訊指令同圖像處理的操作指令相似,CANoe只提供感興趣區(qū)域,MATLAB反饋狀態(tài),CANoe刪除指令。
測試報告的模板可以通過設置XSLT processor來實現(xiàn)或者自行定義。為了簡便起見,本案中采用默認的報告模板。
4.5.1 測試腳本
腳本應用程序根據(jù)測試用例生成的CAPL代碼,如下:
/*@@caplFunc:Chcek_signal_timing():*///function
Chcek_signal_timing()
{
write("Buck/vehicle set to Ign_ON status.");
write("Adjust vehicle speed to 30km/H");
if((STATUS_C_ECM.EngineSpeed==1)
||(STATUS_C_ECM.EngineSpeedValidData==2))
{
settimer(timer1,100);
write("Condition is satisfied");
while(!((Timer1out=1)||((STATUS_C_ECM.D_Signal==3)
&&(STATUS_B_CAN.RechargeSts==4))))
}
}
4.5.2 圖像識別結果
(1)文字類識別:
① 采集圖像,如圖4;② 感興趣點切割,如圖5,并二值化;③ 字體切割,提取輪廓,如圖 6;④ 字庫結果比較得出:空調關閉。
圖4 原始圖像
圖5 感興趣點
(2)數(shù)字類識別同文字類,在此不再詳述。
(3)圖標類識別:
① 采集圖像,如圖7;② 感興趣點切割,如圖8,并灰度化,如圖9;③ 圖庫比較結果:ON。
(4)轉速表圖像識別:
圖6 二值化切割圖
圖7 指示燈圖
① 采集圖像,如圖 10;② 感興趣點切割,如圖11,并二值化,如圖12;③ 應用霍夫變換檢測圖中的直線作為表盤指針,并計算出偏移角度;④ 根據(jù)夾角計算出實際指示轉速:838.235;⑤ 偏差彌補后,整十處理,結果:840。
圖8 安全帶指示燈
圖9 灰度化圖
圖10 轉速表圖
圖11 興趣區(qū)域
圖12 二值化圖
4.5.3 測試執(zhí)行及報告
測試執(zhí)行結果,如圖13所示。
圖13 測試報告
4.5.4 運行時間
識別儀表圖標的處理時間為106 ms左右;
識別車速表和轉速表的處理時間為380 ms;
機械手從初始位置到達觸摸屏最遠點再返回初始位置的時間為1 857 ms
CANoe與MATLAB通訊的運行時間大概為30 ms;因此,一個復雜的測試用例自動執(zhí)行的結果大概為:2 373 ms,而人工執(zhí)行該操作大概20 s左右。
本測試系統(tǒng)的應用,可以大大減輕測試的時間,提高測試效率,保證測試執(zhí)行的一致性,很好的整合現(xiàn)有測試平臺。但本測試系統(tǒng)還有很多需要完善的地方:(1)測試腳本生成方面:VBA生成的測試用例只生成CAPL語言,下一步將開發(fā)生成XML類測試腳本,這將更好的發(fā)揮CANoe中的潛在優(yōu)勢;(2)圖像識別算法方面:模板式的識別算法操作簡單,下一步將開發(fā)更加智能的識別算法,以便更好的挖掘圖像識別的潛能;(3)MATLAB與CANoe指令交互方面:由于文本剪切板技術的讀寫操作的限制,造成指令傳輸?shù)男式档?,下一步采用ActiveX技術實現(xiàn)更高效的指令和數(shù)據(jù)傳輸。
[1]鄧正良,許偉彪.用Excel及VBA編程自動生成電碼和文本[J].氣象研究與應用,2010,55(S2):241-242.
[2]王闖,張鳳登.基于CAPL的車載CAN網(wǎng)絡設計與仿真[J].自動化與儀器儀表,2010,30(4):48-49,51.
[3]黃穎怡,汪仁煌,范江濤,等.基于同態(tài)濾波的儀表圖像識別方法[J].計量技術,2009,53(3):3-5.
[4]姜志高.基于二值化處理與模板匹配的圖像識別[J].才智,2011,11(26):72-74.
[5]田娟,鄭郁正.模板匹配技術在圖像識別中的應用[J].傳感器與微系統(tǒng),2008,27(1):112-114.
[6]宋建才.字符結構知識在車牌識別中的應用[J].電子技術應用,2004,30(4):18-19.
[7]朱昊,劉文耀,王金濤,等.汽車牌照的字符分割與識別[J].計算機測量與控制,2003,11(8):574-576
[8]明星.基于VTSYSTEM的汽車電氣自動測試系統(tǒng)研制及應用[J].汽車電器,2012,53(8):62-64.