prescan学习之二:自动化测试--prescan.experiment的使用

2023-10-31 08:10

本文主要是介绍prescan学习之二:自动化测试--prescan.experiment的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看了prescan的自动化测试,将所得写下来。

    • 1.搭建模型
    • 2.Data Model Api
    • 3.各个函数使用举例
      • 3.1 getDefaultFilename
      • 3.2 getFieldValue
      • 3.3 readDataModels
      • 3.4 replaceWorldObjectByName
      • 3.5 run
      • 3.6 runWithDataModels
      • 3.7 setFieldValue
      • 3.8 worldObjectsDeleteByName
      • 3.9 worldObjectsDeleteByTypeId
      • 3.10 worldObjectsDeleteByUniqueId
    • 4.运用脚本修改参数
    • 5.结束

1.搭建模型

在这里插入图片描述

2.Data Model Api

prescan
prescan.api
prescan.experiment
prescan.worlmodel
prescan.sensors
experiment
air
alms,camera,tis
log,opendrive
opendrive
tragectory
vieviewer

编写脚本文件之前,借助帮助文档看一下Data Model Api包含的函数。如下为prescan.experiment层次的函数。

name含义
getDefaultFilename获取试验的名称
getFieldValue返回相应的参数值
readDataModels读取模型数据
replaceWorldObjectByName使用一个数据结构中的对象代替另一个
run默认编译表运行模型
runWithDataModels运行更改后的模型
setFieldValue设置相关参数的值
worldObjectsDeleteByName通过提供的名字删除对象
worldObjectsDeleteByTypeId通过提供的typeid删除对象
worldObjectsDeleteByUniqueId通过uniqueid删除对象
worldObjectsDeleteIf使用matlab匿名函数删除对象
writeDataModels将数据写入文件

3.各个函数使用举例

3.1 getDefaultFilename

语法:
filename = prescan.experiment.getDefaultFilename()
在这里插入图片描述

3.2 getFieldValue

语法:
[value, result] = prescan.experiment.getFieldValue(inStruct, name)
描述:
返回与提供的名称对应的第一个字段的值(如果出现在输入结构指示中)。除了结构之外,还可以提供单元格数组,在这种情况下,函数将遍历数组并返回数组元素中第一个匹配的字段。该函数还检查所有嵌套结构和单元格数组以搜索字段。如果函数返回的结果(第二个返回参数)等于false(或0),则指定的字段未找到。
输入:
需要搜索字段的结构或单元格数组(所有嵌套结构和单元格数组也需要搜索,直到找到字段
输出:
value:字段搜索的结果
result:1 = true,如果字段被找到,0 = false
在这里插入图片描述

3.3 readDataModels

语法:
model= prescan.experiment.readDataModels(文件名)
描述:
从指定的.pb文件中读取数据模型,由文件名指定。如果没有提供文件名,此函数将使用prescan.experiment。getDefaultFilename来确定加载模型的文件名。如果实验文件夹包含多个.pb文件,请使用文件名参数。如果指定的文件不存在,函数将返回一个没有字段的结构。
输入:
filename:可选的字符数组,包含要加载的文件的名称
输出:
一个具有多个字段的结构(数量取决于Prescan中当前激活的插件/模块),这些字段表示属于实验的不同模型(如worldmodel, cameramodel等)。
在这里插入图片描述

3.4 replaceWorldObjectByName

语法:
model=prescan.experiment.replaceWorldObjectByName(inmodel, inName, outmodel, outName)
描述:
通过名称将outModels中的一个world对象替换为inModels中的另一个world对象。
在这里插入图片描述

3.5 run

语法:
simOut = prescan.experiment.run(varargin)
描述:
运行Prescan模拟。这个函数使用存储在实验文件夹中的数据模型。
在对数据模型API函数进行任何更改之前,可以使用这个函数来运行实验,以便进行比较。
输入:
varargin:可选的参数列表(名称/值对),用于控制实验的执行。可以使用以下参数:
·“regenerate”、“on”—强制重新生成编译表。这是默认行为,例如,如果没有指定参数,编译表将自动重新生成
·“regenerate”、“关闭”——禁用编译表的再生。在某些情况下,禁用再生可能导致执行错误。
·其他参数请参见Matlab文档https://www.mathworks.com/help/simulink/slref/sim.html输出:
包含日志模拟结果的模拟对象

3.6 runWithDataModels

语法:
simOut = prescan.experiment.runWithDataModels(model, varargin)
描述:
运行Prescan模拟。在执行模拟之前,此函数使用提供的数据模型生成新的编译表。
使用此函数在数据模型中使用修改过的参数运行多个实验。
请注意,更改数据模型中的某些参数,即摄像机传感器的FOV不需要重新生成编译表。函数内部将提供的数据模型中间存储到默认的.pb实验文件中(执行前创建备份,simulink完成后恢复原始文件)

3.7 setFieldValue

语法:
[instruct,result]= prescan.experiment.setFieldValue(inStruct, name, value)
描述:
设置结构指示中的某个字段的值。除了结构之外,您还可以提供一个单元格数组,在这种情况下,函数将遍历输入数组并设置数组元素的第一个找到的字段。该函数还检查所有嵌套结构和单元格数组以搜索字段。如果函数返回的结果(第二个返回参数)等于false(或0),则表示没有找到指定的字段。
输入:
instruct:需要搜索字段的结构或单元格数组(所有嵌套结构和单元格数组也要搜索,直到找到字段)
name:应该设置值的字段的名称
value:应该为字段设置的值
输出:
instruct:已修改的输入结构和已执行的修改(如果找到了所请求的字段)
result:字段搜索的结果:1 = true如果找到字段,0 = false如果没有找到字段
在这里插入图片描述
在这里插入图片描述

3.8 worldObjectsDeleteByName

语法:
models=prescan.experiment.worldObjectsDeleteByName(models, name)
描述:
根据世界对象的名称删除它们。这个函数还删除了所有与这些对象关联的传感器、关联的参与者以及models.worldmodel.userObjectType 数组。
输入:
models:包含prescan.experiment.readDataModels返回的所有数据模型的结构。
name:要删除的对象名称列表
输出:
模型:已修改的输入结构,它不包含已删除的对象及其关联元素
在这里插入图片描述

3.9 worldObjectsDeleteByTypeId

语法:
models=prescan.experiment.worldObjectsDeleteByTypeId(models、typeid)
在这里插入图片描述

3.10 worldObjectsDeleteByUniqueId

语法:
modes=prescan.experiment.worldObjectsDeleteByUniqueId(models, uniqueId)
在这里插入图片描述

4.运用脚本修改参数

models=prescan.experiment.readDataModels();
models= prescan.experiment.worldObjectsDeleteByName(models, 'Mazda_RX8');
indices_bwn = prescan.worldmodel.objectsFindByName(models.worldmodel, 'BMW_X5');
position=prescan.experiment.getFieldValue(models.worldmodel.object{indices_bwn,1},'position');
models.worldmodel.object{indices_bwn,1}.pose.position=prescan.experiment.setFieldValue(...
models.worldmodel.object{indices_bwn,1}.pose.position,'x',1300);
simOut = prescan.experiment.runWithDataModels(models, 'StopTime', '10');

5.结束

这篇关于prescan学习之二:自动化测试--prescan.experiment的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313982

相关文章

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

使用Python和Pyecharts创建交互式地图

《使用Python和Pyecharts创建交互式地图》在数据可视化领域,创建交互式地图是一种强大的方式,可以使受众能够以引人入胜且信息丰富的方式探索地理数据,下面我们看看如何使用Python和Pyec... 目录简介Pyecharts 简介创建上海地图代码说明运行结果总结简介在数据可视化领域,创建交互式地