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

相关文章

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Spring Cloud之注册中心Nacos的使用详解

《SpringCloud之注册中心Nacos的使用详解》本文介绍SpringCloudAlibaba中的Nacos组件,对比了Nacos与Eureka的区别,展示了如何在项目中引入SpringClo... 目录Naacos服务注册/服务发现引⼊Spring Cloud Alibaba依赖引入Naco编程s依

Java springBoot初步使用websocket的代码示例

《JavaspringBoot初步使用websocket的代码示例》:本文主要介绍JavaspringBoot初步使用websocket的相关资料,WebSocket是一种实现实时双向通信的协... 目录一、什么是websocket二、依赖坐标地址1.springBoot父级依赖2.springBoot依赖

Java使用Mail构建邮件功能的完整指南

《Java使用Mail构建邮件功能的完整指南》JavaMailAPI是一个功能强大的工具,它可以帮助开发者轻松实现邮件的发送与接收功能,本文将介绍如何使用JavaMail发送和接收邮件,希望对大家有所... 目录1、简述2、主要特点3、发送样例3.1 发送纯文本邮件3.2 发送 html 邮件3.3 发送带

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring-AOP-ProceedingJoinPoint的使用详解

《Spring-AOP-ProceedingJoinPoint的使用详解》:本文主要介绍Spring-AOP-ProceedingJoinPoint的使用方式,具有很好的参考价值,希望对大家有所帮... 目录ProceedingJoinPoijsnt简介获取环绕通知方法的相关信息1.proceed()2.g

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML