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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;