基于CANoe/MATLAB的车载信息系统自动化测试研究

2015-12-15 10:47鲍海宝
电气自动化 2015年4期
关键词:测试用例脚本图像识别

鲍海宝

(同济大学 控制工程,上海 200092)

0 引言

车载信息系统是给车辆驾驶者提供车辆状态、操作提示、故障报警以及信息反馈的系统平台,主要包括:收音机/导航/CD机模块、仪表、空调面板模块、方向盘开关模块、后摄像头模块。是人车交互最多的系统,也是最易被客户察觉故障的系统。其系统测试环节繁琐冗长,而且很大程度上受到测试人员经验及仔细度耐心度的制约。因此,研发高自动化的车载信息系统对提高车载信息系统的产品性能,并为更好的挖掘其隐藏的问题奠定了良好的基础。

系统原理图如图1所示。工业相机用于采集和处理车载信息系统的屏幕图像;4轴机械手用于操控车载信息系统的触摸屏;VTsystem用于仿真试验相关环境。其中 CANoe是Vector公司开发的一款用于网络和ECU开发、测试和分析的专业工具,支持从需求分析到系统实现的整个系统的开发过程。CANoe可用于DBC文件的生成,网络设计评估,通过其内部嵌套的CAPL语言实现ECU功能建模仿真。同时,CANoe还集成了大量的函数库以及支持VTsystem等相关硬件,便于简化测试开发。通过使用test setup模块,CANoe可以进行连续自动化测试,并自动生成测试报告。另外,CANoe具有诊断功能集,用以与ECU进行诊断通信。

图1 系统原理图

以Execel为模板的测试用例通过脚本应用程序,也就是VBA[1](Visual Basic for Applications),编译后生成 CAPL 测试脚本[2],该测试脚本可以直接集成到CANoe中运行。工业相机通过以太网与主机相连,通过MATLAB的应用接口受控于CANoe。当需要图像处理时,CANoe向MATLAB发送命令,MATLAB接收指令,并将识别结果反馈给CANoe。四轴机械手通过以太网与主机相连,通过MATLAB的应用接口受控于CANoe。当需要对触摸屏操作时,CANoe向MATLAB发出指令,MATLAB接收指令,控制机械手执行指定位置的操作。机械手执行相关动作后,返回到初始位置,同时工业相机对操作结果进行图像识别验证。

VTsystem通过以太网与主机相连,直接受控于 CANoe。CANoe根据测试脚本控制VTsystem的板卡,并实时监控相关的反馈。测试过程中,CANoe调用XSLT stylesheet生成测试报告。

本文从以下四个方面来逐步阐述整个自动化系统中各个环节内容的开发内容:脚本应用程序的生成、图像处理、VTsystem配置、系统集成。

1 脚本应用程序的生成

脚本应用程序通过识别测试用例中的关键字识别出测试用例设计者的意图从而自动生成测试脚本。其中几个重要环节包括:测试用例中关键字的定义、环境变量识别、测试函数生成。当然,脚本应用程序首先需要扫描测试用例的内容,检查测试用例是否完整,是否含有非法字符,否则,将提示编译失败信息。

1.1 关键字定义

测试脚本自动生成的关键是关键字的应用。通过提取测试用例中的关键字,脚本应用程序完成对测试用例特征和测试意图的提炼。关键字要精短简洁并能覆盖尽量多的测试场景。因此,测试用例中的关键字包括以下几个内容:功能描述、操作命令、测试执行、期望行为、期望信号、测试用例句柄符、测试步骤句柄符。每个测试用例必须以测试用例句柄符Test Case为起始行,以测试步骤句柄符Test Step或者Precondition为结束。关键字的应用如图2测试用例模板中所示。

图2 测试用例模板

1.2 环境变量识别

脚本应用程序扫描所有操作命令行信息、所有CAN/LIN信号、所有时钟信息、所有预处理操作,将这些信息中转换成环境变量信息,并按CAPL(Communication Application Programming Language)语法格式完成变量的定义,同时生成一个专门的环境变量数据库文件。

1.3 测试函数生成

通过提取句柄符(Test Case/Precondition/Test Step)来生成每个测试用例及步骤代码。Test Case对应的功能描述用于生成测试子函数名;Precondition用于生成测试的准备条件,通过其后面的操作命令关键字来协同生成代码,可以用来产生对话框以提示操作者,或者直接驱动VTsystem板卡进行相应输出,或者通过工业相机识别一下当前状态并反馈结果;Test Step通过其后面的操作命令关键字来协同生成实际的相关测试操作,Input和Output可以是CAN/LIN信号,也可以是VTsystem板卡仿真的信号。通过对测量结果是否与期望结果一致的判断逻辑形成测试脚本逻辑。脚本应用程序通过对整个测试用例的扫描完成对测试序列的排列,从而生成对应的测试脚本。

2 图像处理

图像处理是对车载信息系统中显示部分的信息提取。其中待检测的部件主要包括两个部分:汽车仪表盘、导航显示屏。

2.1 图像处理算法

整个系统的图像识别中,只要有五类识别对象:表盘类、数字类、图标类、文字类,指示灯闪烁频率。采用模板法图像识别对数字类、图标类、文字类图像进行识别。模板法中主要用图像的相似度,也就是将被测图像与待测图像的二值化后的矩阵的协方差比标准方差,公式如下:

(1)表盘类图像识别[3]通过抓取指针当前位置与初始位置的角度折算成表盘刻度。由于相机与指针间存在一个视觉角度差,因此,在指针通过不同位置进行必要的补偿可以满足要求。

(2)数字类图像识别通过模板匹配[4-5]的方式把可能要显示的数字通过图像采集下来,进行局部截取完成图库模板的制作。然后把测试采集的图像与图库中模板逐一对比,当接近率达到70%,即可认为相同。

(3)图标类图像识别:由于导航及仪表的图标有限,将采用模板匹配法进行处理。

(4)文字类图像识别[6-7]:通过对文字区域图进行文字切割,然后再将每个文字在字体图库中比对查询。

(5)指示灯闪烁频率:闪烁频率可以通过采用高频相机对连续多帧图像进行识别对比即可得出相关频率参数。

2.2 图像处理

图像处理是指CANoe与MATLAB对图像识别的请求以及MATLAB的测试结果如何反馈给CANoe。CANoe与MATLAB的通讯通过共享内存的方式,CANoe将指令写入共享内存,MATLAB周期性读取共享内存中的指令并把识别结果写入文本剪切板,供CANoe读取。具体步骤如下:

(1)CANoe向文本剪切板写入指令,如 CAMERA1BRAKELAMPON;

指令解析:CANoe命令MATLAB用CAMERA1被测对象上的BRAKELAMP区域(该区域是图像标定时确定的图像兴趣点坐标)进行识别,将采集的图像与路径CAMERA1BRAKELAMP下的ON.jpg进行对比。

(2)MATLAB读取CANoe指令,采集对应的图像,截取对应的兴趣点图像并根据其类型进行相关处理,并反馈结果。如,CAMERA1BRAKELAMPON:x;

指令解析:x代表MATLAB的状态及结果。0,表示结果不匹配;1,表示结果匹配;2,表示正在处理;3,表示指令无效或无法执行;

(3)CANoe读取反馈结果,并删除该剪切板指令。

3 VTsystem配置

VTsystem的主要用途是仿真控制器外部工作环境,同时对控制器的输出进行监控。

(1)仿真测试所需的激励信号:实现相关ECU端输入信号的仿真,主要有数字输入,模拟输入。其中板卡为 VT2816,VT2848。

(2)监控控制器输出:实现相关ECU端输出信号的监控,主要有数字/模拟信号采集,其中板卡为VT2816,VT2848。

(3)电源控制模块:实现KL30/KL15/KL50的电源输出控制,同时提供电流检测功能。其板卡为VT7001。

(4)故障注入模块:实现对ECU的外部信号进行故障注入,主要是信号的短路、断路、对电源/地的短接等。其板卡为VT2820。

(5)总线模块:实现对CAN/LIN信号的仿真和监控,采用USB接口的VN1640模块。

所有模块与VTsystem的连接都通过BOB[8]。系统使用外置电脑作为主机,VTsystem板卡资源需求,如图3。

图3 VTsystem配置

4 系统集成

系统集成的主要任务有四个:(1)将生成的代码与VTsystem的硬件资源关联起来;(2)图像识别及机械手的标定;(3)CANoe与MATLAB程序关联;(4)测试报告的生成。

4.1 代码与VTsystem关联

该任务通过CANoe对环境变量数据库与VTsystem硬件资源的关联。首先是加载VTsystem,然后配置各通道的参数,最后通过关联属性将VTsystem与通过脚本应用程序生成的环境变量等相关数据库关联起来。

4.2 图像识别及机械手的标定

图像标定及测试时必须保证相机与待测对象的相对位置固定,首先选取对应相机、定义感兴趣的图像识别区域并命名,同时将采集到的图像存储到对应的目录中并且将兴趣区域坐标存储到后台数据库中。如,选择的工业相机为Camera1,感兴趣区域为

BRAKELAMP,图像命名为ON,则图像会被存储为..CAMERA1

BRAKELAMPON.jpg.

机械手的标定相对比较简单,选取触摸屏幕上4个角分别标定一下并将结果存入机械手数据库,其余位置的坐标通过HMI上定义的位置,通过MATLAB自动计算出来导入到机械手数据库,然后再选取几个点进行验证即可。

4.3CANoe与MATLAB程序关联

该任务是使CANoe发出的指令能被MATLAB正确识别。因此,系统需要对每个待识别的图像以及机械手的位置进行关联。同时,需要调整图像识别以及机械手的响应时间参数,以便CANoe读取识别结果。MATLAB执行机械手操作时与CANoe的通讯指令同图像处理的操作指令相似,CANoe只提供感兴趣区域,MATLAB反馈状态,CANoe删除指令。

4.4 测试报告

测试报告的模板可以通过设置XSLT processor来实现或者自行定义。为了简便起见,本案中采用默认的报告模板。

4.5 测试结果

4.5.1 测试脚本

脚本应用程序根据测试用例生成的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)数字类识别同文字类,在此不再详述。

(3)图标类识别:

① 采集图像,如图7;② 感兴趣点切割,如图8,并灰度化,如图9;③ 图库比较结果:ON。

(4)转速表图像识别:

图6 二值化切割图

图7 指示灯图

① 采集图像,如图 10;② 感兴趣点切割,如图11,并二值化,如图12;③ 应用霍夫变换检测图中的直线作为表盘指针,并计算出偏移角度;④ 根据夹角计算出实际指示转速:838.235;⑤ 偏差弥补后,整十处理,结果:840。

图8 安全带指示灯

图9 灰度化图

图10 转速表图

图11 兴趣区域

图12 二值化图

4.5.3 测试执行及报告

测试执行结果,如图13所示。

图13 测试报告

4.5.4 运行时间

识别仪表图标的处理时间为106 ms左右;

识别车速表和转速表的处理时间为380 ms;

机械手从初始位置到达触摸屏最远点再返回初始位置的时间为1 857 ms

CANoe与MATLAB通讯的运行时间大概为30 ms;因此,一个复杂的测试用例自动执行的结果大概为:2 373 ms,而人工执行该操作大概20 s左右。

5 结束语

本测试系统的应用,可以大大减轻测试的时间,提高测试效率,保证测试执行的一致性,很好的整合现有测试平台。但本测试系统还有很多需要完善的地方:(1)测试脚本生成方面:VBA生成的测试用例只生成CAPL语言,下一步将开发生成XML类测试脚本,这将更好的发挥CANoe中的潜在优势;(2)图像识别算法方面:模板式的识别算法操作简单,下一步将开发更加智能的识别算法,以便更好的挖掘图像识别的潜能;(3)MATLAB与CANoe指令交互方面:由于文本剪切板技术的读写操作的限制,造成指令传输的效率降低,下一步采用ActiveX技术实现更高效的指令和数据传输。

[1]邓正良,许伟彪.用Excel及VBA编程自动生成电码和文本[J].气象研究与应用,2010,55(S2):241-242.

[2]王闯,张凤登.基于CAPL的车载CAN网络设计与仿真[J].自动化与仪器仪表,2010,30(4):48-49,51.

[3]黄颖怡,汪仁煌,范江涛,等.基于同态滤波的仪表图像识别方法[J].计量技术,2009,53(3):3-5.

[4]姜志高.基于二值化处理与模板匹配的图像识别[J].才智,2011,11(26):72-74.

[5]田娟,郑郁正.模板匹配技术在图像识别中的应用[J].传感器与微系统,2008,27(1):112-114.

[6]宋建才.字符结构知识在车牌识别中的应用[J].电子技术应用,2004,30(4):18-19.

[7]朱昊,刘文耀,王金涛,等.汽车牌照的字符分割与识别[J].计算机测量与控制,2003,11(8):574-576

[8]明星.基于VTSYSTEM的汽车电气自动测试系统研制及应用[J].汽车电器,2012,53(8):62-64.

猜你喜欢
测试用例脚本图像识别
酒驾
安奇奇与小cool 龙(第二回)
基于SmartUnit的安全通信系统单元测试用例自动生成
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
图像识别在水质检测中的应用
快乐假期
小编的新年愿望
基于需求模型的航天软件测试用例生成方法