随着汽车行业的蓬勃发展,与之相关的自动驾驶功能越来越受到人们的关注。自动驾驶给人们带来方便的同时,也带来了某些安全隐患。为了最大程度的确保安全,除了要进行功能逻辑测试外,也需要进行功能场景测试(比如鬼探头、多岔路上坡等场景)。
目前主流的场景测试工具有Carmaker、VTD、DYNA4、CarSim和PreScan。为了使场景测试的测试用例可读性更强,对复杂功能的评估更高效,北汇信息提出基于TPT的测试解决方案。接下来,以TPT+Carmaker为例,介绍如何实现自动化的场景测试。
TPT和场景仿真软件集成
TPT提供以上场景测试工具的集成平台和接口。TPT中的FUSION平台存在CarMaker FMU Node、VTD Client Node、FMI Fusion Node和Custom Node Dll,能够实现与场景测试软件的集成,感兴趣的小伙伴可以查看北汇公众号前期文章《震惊!虚拟场景仿真测试还能这么玩》。
下面,我们以Carmaker FMU Node为例,介绍配置过程。
在TPT中新建Carmaker platform,配置如下:加载Carmaker工程和Test run,导入信号即可完成配置,非常简单。
场景测试用例编写
TPT中支持测试步骤列表和状态机测试用例,测试步骤列表简单快捷,状态机图形化便于理解。
例如AEB(自动紧急刹车)功能,测试场景为主车逐渐靠近目标,当距离小于阈值时,刹车确保安全。
根据如上场景,搭建状态机测试用例。根据状态机及转移线显示的内容,能够很快了解到测试场景内容,例如:整车上电,开启AEB功能,油门为30,整车加速至50km/h,持续15s。
另外,通过改变状态机变种或跳转条件,可以很方便的实现其他测试场景。
测试评估多样化编写
TPT支持在测试用例中编写评估,也有独立于测试用例的GUI和脚本评估。
自动驾驶逻辑往往非常复杂,评估需要多个条件,TPT评估语法为Python语法,方便快捷,另外,TPT内置了很多函数,例如:上升沿、下降沿、积分、微分等等,编写评估时直接使用即可。
例如当前测试场景,当主车与目标距离小于10m时,刹车应>=0.7,降低车速,避免与目标碰撞。GUI和脚本评估会自动寻找满足condition的区间开启评估,并判断是否满足期望结果。
如下为Trigger Rule评估的Trigger Condition形式,当满足Start Condition条件时,开启评估并检查是否符合期望,满足Stop Condition条件时,关闭评估。
Tips:TPT.risingEdge()用法为,当()里的条件由不满足到满足时触发,由于主车与目标距离逐渐降低,则应为:TPT.risingEdge(Sensor::Object::Camera::relvTgt::NearPnt::ds_p<10)。同理,如果为TPT.fallingEdge(),则条件为Sensor::Object::Camera::relvTgt::NearPnt::ds_p>10。
上述评估也可以基于Script评估实现,示例如下:
我们也可以将脚本评估作为库,方便其他同事使用。
测试运行
可以在TPT当中新建TestSet,对测试用例进行分组,运行指定的测试集。当然了,最方便的方法是直接选中想要执行的测试用例,直接运行。
测试用例执行完成后可以在Build Progress中查看结果,在Signals中查看测试数据,在Overview Report中查看测试报告。
说了那么多,来看一下TPT是如何执行场景测试的吧。
TPT的功能不仅限于上述内容,TPT可以通过集成不同平台实现所有的产品研发阶段测试(MiL、SiL、PiL、HiL、ViL),更多精彩等您来探索。