实验介绍
- 既然是做实验,肯定要有对比分析,手动一次次改参数后运行,要花费大量时间,而CarMaker为大家准备了贴心的自动测试功能,搭建好一次实验环境,准备好每次实验的不同参数,就可以自动进行实验,并记录实验数据。
- 写论文,尤其是理工科的论文,优美的图标必不可少,我们可以借助Simulink生成图表,但CarMaker自动生成的图表也不输Simulink
- 本实验会围绕汽车不同期望速度进行实际速度的测量,并进行比较。
- 环境:Windows 10、CarMaker 10.2
目录
- 实验介绍
- 实验效果
- 实验过程
- 新建一个直线跑道并规划路线
- 选择一辆测试车辆
- 创建一个行驶策略
- 保存当前项目
- 打开TestManager界面
- 新增一个TestRun,并设置测试场景
- 新增两个Variation,并对speed的值进行设置
- 新增一个Diagram,清晰的看到速度的变化
- 启动测试
- 查看测试报告
- 附录1:TestManager中四种变量类型介绍
- NValue
- KValue
- TS
- CM
- ScriptFile
- ResultFName
- Popup Timeout
- 附录2:TestManager中常用的其他测试功能
- 测试组(Group)
- 车辆(Vehicle)
- 特征值(Characteristic)
- 实时计算(Online calculation)
- 离线计算(Offline calculation)
- 判定标准(Criterion)
- 测试配置项(Test Configuration)
- 设置(Settings)
- 结束
- 补充
实验效果
实验过程
新建一个直线跑道并规划路线
选择一辆测试车辆
创建一个行驶策略
采用IPGDrive模型行驶30秒,速度为$speed=10,表示定义一个NValue变量,变量值为10
将速度定义为变量是为了后面的对这个变量进行修改,关于NValue变量的性质可以在最后的附录1中查看。
保存当前项目
项目名为:testManagerExperience
打开TestManager界面
新增一个TestRun,并设置测试场景
新增两个Variation,并对speed的值进行设置
如果之前在配置IPGDriver的Speed的时候正确,则此处的Name下的speed的值是可以通过下拉获取的
新增一个Diagram,清晰的看到速度的变化
- 将数据在一张表上显示,方便对比
- 对x轴和y轴进行命名
CarMake目前r不支持中文,不要写中文
- x轴取值默认为Time,y轴取值我们手动输入为Car.v表示车速
启动测试
- 我们可以看到IPGMoive界面的车辆在不同的参数下运行
查看测试报告
- 第一页记录了测试的时间等信息
- 第二页记录了测试结果的基本情况
- 第三页为数据图标
- 后面两页记录了测试的参数
附录1:TestManager中四种变量类型介绍
NValue
- 全称:Named Value
- 作用:NValue是一种命名变量,可以放到CarMaker的任何可编辑参数字段中。要引入命名值,可以直接在选择的参数字段或输入文件中输入美元符号$,该符号后面需要跟上希望该变量具有的名称。同时,可以给这个变量提供一个默认值。
- 范例:设置IPGDriver的速度为变量speed的值,初始为10
- 在IPGDriver界面的Speed框内,输入$speed=10,表示定义一个命名变量speed,初始值为10
- 图示:
- 定义成功的NValue可以在TestManager的参数名称栏找到
KValue
- 全称:Key Value
- 作用:KValue是关键字变量,属于infofile关键字,主要适用于CarMakerGUI中没有可编辑参数字段的设置。例如,使用不同的轮胎执行相同的测试运行,或者如果交换车辆数据集。
- 部分参数样例:
TS
- 全称:TestSpace variables
- 作用:TestSpace variables称为全局测试变量,是仅在测试体系中的辅助变量。其功能可与黑板类似。测试空间变量可以存储和计算值。
- 创建方法:
- 打开ScriptControl界面
- 输入命令set TS::oneValue 100,按回车,表示创建一个叫oneValue的TS变量,赋值为100
- 可以从测试管理器中的“View->TestSpace”菜单中检索所有现有TS变量的概述:
- 使用方法:$TS::oneValue
CM
ScriptFile
- 作用:脚本文件类变量只存在于测试管理器中。它们允许访问测试管理器中的脚本控件扩展。因此,可以将用Tcl/Tk编程语言编写的脚本文件加载到测试空间中,以便在执行测试系列时可以调用用户定义的函数和过程。
- 样例:可参考Examples > BasicFunctions > TestAutomation > TestManager > VariationsAndSkipping.ts样例
ResultFName
- 作用:这是一个特殊的命令,它会影响在此测试系列中创建的结果文件的存储路径和名称。在类型为CM的变量的字段中,只需输入新的存储路径作为绝对路径或相对于CarMaker项目文件夹。
- 样例:Examples > BasicFunctions > TestAutomation > ScriptControl > Straight_TrailerSwingingDVA
Popup Timeout
作用:避免插入运行的弹出消息是弹出超时。在以秒为单位定义的超时后,弹出式消息将自动关闭。如果弹出窗口有选择,则给出默认答案。
附录2:TestManager中常用的其他测试功能
测试组(Group)
- 我们可以通过Group进行多个不相关的测试,每一个Group内的测试都是互不影响的。
车辆(Vehicle)
- 可以为不同的测试组指定不同的车辆
特征值(Characteristic)
- 在进行测试时,计算一些特征值通常是很有用的,这有助于评估最后的模拟结果。特征值项内需要定义这些特征值,并指定它们的计算规则。对于每个特征值,您、必须定义一个唯一的标识符,该标识符以后可以在标准或图中作为参考名称使用。在CarMaker中,计算特征值基本上有两种不同的方法,即实时计算和离线计算。
实时计算(Online calculation)
- 通过应用用户定义的实时表达式。这适用于那些计算仅取决于以前的时间步长的特征值。
- 要实时计算特征值,选择RTExpr作为计算类型,并在指定的输入字段中指定的实时表达式(。实时表达式必须定义一个新的数量,其名称与前面指定的特征值的标识符相同。
- 样例:计算刹车距离
- 标示符(Identifier):BrakeDist
- 类型(Type):RTExpr
- 值(Value):(first() ? Qu::BrakeDist=0); DM.ManNo>0 ? BrakeDist=Delta2Ev(Car.Road.sRoad, change(DM.Brake), Car.v <=0.01)
- 设置图表Mode为Characteristic vs Variation
- 设置Y轴为BrakeDist
- 设置车辆运行策略
- Description:Accelerating
- End Condition:Car.Road.sRoad>=50
- Duration (time/dist):10.0
- Longitudinal Dynamics:IPGDriver
- Description:Braking to standstill
- End Condition:Car.v<=0.001
- Duration (time/dist):30.0
- Longitudinal Dynamics:Manual(Pedals,Gear)
- Cluth的Value:1
- Brake的Value:$Brake=0.6
- 记住,保存
- TestRun的测试环境设置为刚才保存的场景
- 运行测试,查看Rport中的图表,发现成功计算出刹车距离约23.36
离线计算(Offline calculation)
- 通过分析存储的结果数据,在模拟完成后计算该值。这基本适用于所有的特征值。为了脱离线计算特征值,用户必须指定一个tcl脚本,它提供了计算所需值的函数。此脚本文件的路径必须在定义特征值之前,在“Settings”测试项中定义。此外,用户必须指定执行实际计算的函数的名称。
判定标准(Criterion)
- 对于评估一个已完成的模拟,通常需要定义一个或多个标准,将模拟结果与给定的参考值进行比较。这可以通过在测试系列中添加一个或多个标准项来实现。对这一标准的评价结果可以是好的、警告的或坏的。为了区分这些结果,可以在标准项的详细视图中指定不同的约束。
- 样例:接着Characteristic实时计算的样例,我们加上两几个条件:刹车距离小于20,合格,20到30之间警告,30及以上,危险。
- Criterion参数设置
- good:[get BrakeDist] < 20.0
- warn:[get BrakeDist] >= 20.0 && [get BrakeDist] < 30.0
- bad:[get BrakeDist] >= 30.0
- 创建三个变量,修改Brake分别为0.3、0.6、0.9
- 运行测试,查看结果,不同的Brake会产生不同的BrakeDistance
测试配置项(Test Configuration)
- Test Configuration被设计为解决测试配置器向导的方法,该向导可用于基于预定义的测试目录,即所谓的测试软件软件包,创建大型测试系列。
设置(Settings)
- Settings使用户可以进行一些配置,不仅适用于一个测试,而且适用于更大规模的测试。例如参数变量可以设置,这些变量对不止一个变量有效,但是一组测试运行。因此,将设置放置在测试系列中的位置非常重要,因为它们适用于相同或更低级别的所有设置。
结束
- TestManager并不难,有难度的可能还是变量的使用,需要花一些时间去研究,我也主要学习了NValue、KValue和TS的使用,对于其他的变量没有花太多时间了解。
- 本次实验可以在CSDN的资源中下载(只包含前面的实验,不包含附录的实验):
注意:用CarMaker打开testManagerExperience,在TestManager界面打开testManagerExperience.ts,即可进行不同速度的车辆自动测试。
补充
- 默认情况下,测试方式Execution mode为顺序测试Sequential,我们可以改为并行测试Parallel,这样会有更快的测试速度。