基于TPT实现自动化场景测试

前言

 

 

随着汽车行业的蓬勃发展,与之相关的自动驾驶功能越来越受到人们的关注。自动驾驶给人们带来方便的同时,也带来了某些安全隐患。为了最大程度的确保安全,除了要进行功能逻辑测试外,也需要进行功能场景测试(比如鬼探头、多岔路上坡等场景)。

 

目前主流的场景测试工具有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,导入信号即可完成配置,非常简单。

 

 

图 1 TPT中Carmaker平台配置

 

 

场景测试用例编写

 

 

TPT中支持测试步骤列表和状态机测试用例,测试步骤列表简单快捷,状态机图形化便于理解。

 

例如AEB(自动紧急刹车)功能,测试场景为主车逐渐靠近目标,当距离小于阈值时,刹车确保安全。

 

 

图 2 AEB功能场景

 

根据如上场景,搭建状态机测试用例。根据状态机及转移线显示的内容,能够很快了解到测试场景内容,例如:整车上电,开启AEB功能,油门为30,整车加速至50km/h,持续15s。

 

 

 

图 3 TPT场景测试用例

 

另外,通过改变状态机变种或跳转条件,可以很方便的实现其他测试场景。

 

 

图 4 变换场景

 

 

测试评估多样化编写

 

 

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。

 

 

图 5 评估语法

 
上述评估也可以基于Script评估实现,示例如下:
 

 

图 6 脚本评估

 

我们也可以将脚本评估作为库,方便其他同事使用。

 

 

测试运行

 

 

可以在TPT当中新建TestSet,对测试用例进行分组,运行指定的测试集。当然了,最方便的方法是直接选中想要执行的测试用例,直接运行。

 

 

 

图 7 TestSet设置

 

测试用例执行完成后可以在Build Progress中查看结果,在Signals中查看测试数据,在Overview Report中查看测试报告。

 

 

图 8 测试用例执行

 

 

图 9 测试数据

 

 

图 10 部分测试报告

 

说了那么多,来看一下TPT是如何执行场景测试的吧。

 

TPT的功能不仅限于上述内容,TPT可以通过集成不同平台实现所有的产品研发阶段测试(MiL、SiL、PiL、HiL、ViL),更多精彩等您来探索。

 

翻译

搜索

复制

posted @ 2023-01-12 11:18  北汇信息  阅读(115)  评论(0编辑  收藏  举报