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

相关文章

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Nginx中配置使用非默认80端口进行服务的完整指南

《Nginx中配置使用非默认80端口进行服务的完整指南》在实际生产环境中,我们经常需要将Nginx配置在其他端口上运行,本文将详细介绍如何在Nginx中配置使用非默认端口进行服务,希望对大家有所帮助... 目录一、为什么需要使用非默认端口二、配置Nginx使用非默认端口的基本方法2.1 修改listen指令

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

使用Python实现无损放大图片功能

《使用Python实现无损放大图片功能》本文介绍了如何使用Python的Pillow库进行无损图片放大,区分了JPEG和PNG格式在放大过程中的特点,并给出了示例代码,JPEG格式可能受压缩影响,需先... 目录一、什么是无损放大?二、实现方法步骤1:读取图片步骤2:无损放大图片步骤3:保存图片三、示php

使用Python实现一个简易计算器的新手指南

《使用Python实现一个简易计算器的新手指南》计算器是编程入门的经典项目,它涵盖了变量、输入输出、条件判断等核心编程概念,通过这个小项目,可以快速掌握Python的基础语法,并为后续更复杂的项目打下... 目录准备工作基础概念解析分步实现计算器第一步:获取用户输入第二步:实现基本运算第三步:显示计算结果进