基于NI_TestStand的智能驾驶自动化测试

2023-11-13

汽车产业不断发展的今天,智能驾驶已经成为了汽车中必不可少的一部分。虽然目前真正的无人驾驶技术还未广泛应用于我们的日常生活中,但各式各样的驾驶辅助系统,如碰撞预警、自动刹车、自适应巡航等功能已经在为我们的驾驶员保驾护航。

今天小编就带大家一起来探讨一下基于NI_TestStand的智能驾驶自动化测试问题。

老规矩,先来看看NI-TestStand是个什么神器~

NI-TestStand是什么?

NI TestStand是一款可立即执行的测试管理软件,它可以帮助用户更快地开发自动测试和验证系统,用于组织、控制和执行自动化原型设计、验证或制造测试系统。加入在LabVIEW、LabVIEWs/CVI、Visual C/C++、Visual Basic、.NET和C#中编写的测试程序,使用NI TestStand快速创建测试序列。NI TestStand应用的极为广泛,在我们的汽车测试行业中也是家喻户晓的存在。

NI-TestStand的软件使用

NI TestStand软件架构的中心组件是一个执行引擎,它提供一个开放API接口以方便与其他应用的通信。序列编辑器和操作者界面利用API访问NI TestStand引擎。此外,共有三种用于定义开发环境、运行时环境和执行环境的特性的重要文件类型。

▲ 图一:NI TestStand架构示意图

NI TestStand的功能完全由用户定义。为满足特定需求,我们可自行对其进行功能修正和改进,例如定制操作界面、生成自定义报告或修改序列执行要求等。借助NI TestStand,我们可将精力集中于特殊的测试要求,NI TestStand则管理普通的序列、执行和汇报任务。

▲ 图二:NI TestStand软件界面

我们在TestStand中可以调用不同的模块来进行测试用例的编写,这种调用方式可以使我们编写的测试用例更加灵活,从而实现更多完善细致的功能。如下图所示,可以调用的模块类型包括LabVIEW、LabVIEW/CVI、C++、.NET、Acitive/COM、LabVIEWNXG以及Phython等,除此之外我们还可以使用TestStand自带的语句,多样化的模块和语句的结合可以使我们的测试用例更加全面。

▲ 图三:可添加模块示意图

我们知道,在测试用例的编写中,变量参数是极其重要的。下图就是序列浏览和参数变量浏览窗口。在序列浏览窗口中,我们可以看到编写好的主序列或者一些子序列,其中子序列是可以被调用在主序列中的,这样可以使我们的测试用例更加有层次感和逻辑性。

▲ 图四:图为序列窗口和变量窗口

由于任何自动化系统的开发都不是一步到位的,所以当我们编写好一个测试用例后,势必要对其进行调试和改进。因此TestStand中的调试工具对于加速系统开发也是极其重要的。开发人员可以充分利用各窗口所提供的信息,并结合各种调试工具和不同的调试策略,快速诊断问题所在。在下图中我们可以看到在通过语句与模块的共同使用下编写了一个简单的序列文件,此时该窗口就可以作为执行窗口去对序列文件进行一些执行操作,比如:添加断点,单步执行,交互式执行步骤或改变步骤运行模式等。

▲ 图五:添加了LabVIEW模块的测试用例

对于TestStand的自动化测试来说,最重要的还是与其他软件的结合使用。在我们今天的介绍中还有一个尤为重要的内容就是如何将TestStand与一款功能强大的 复杂交通环境视景建模仿真软件VTD联合使用,构成成熟的自动化测试体系。关于VTD的内容在我们往期的公众号中已经有较为详尽的介绍,所以,下面我们就直接介绍一些联合使用的方式。

NI TestStand与VTD的交互使用

在想要通过TestStand调用VTD之前,我们需要先弄清楚如何对VTD进行调用。我们发现可以用SCP命令对VTD发送指令,从而实现远程控制VTD工作。所以在这里我们还要简单介绍一下SCP命令。

▲ 图六:交互逻辑整体示意图

SCP命令

SCP命令全称是Simulation Control Protocol,即仿真控制协议。它是VTD中基于事件的,用于对VTD进行远程交互的特殊命令集,包括控制和动作命令,以及状态信息的查看。我们可以通将SCP与Python相结合,编写一些脚本程序来对VTD进行动作指令。SCP指令中的关键字与一般的XML指令相似。

▲ 图七:SCP部分指令

在根据相关文档进行好脚本的编译之后,我们便可以进行后续的软件交互内容。除了SCP指令之外,我们还需要认识两个新“朋友”,一位是同样属于NI公司的VeriStand,另一位就是同样负责通信的命令RDB。

VeriStand

VeriStand应用软件用于为NI实时硬件配置I/O通道、数据记录、激励生成和主机通信。 除此之外,我们还可以导入仿真模型和控制算法、配置警报来响应事件。 用户界面在运行时是可编辑的,以便我们监测和控制应用程序数据、警报状态和系统执行指标。虽然使用VeriStand不需要掌握编程知识,但我们也可以使用各种编程软件环境(如LabVIEW、ANSI C/C ++、Python和ASAM XIL)来为VeriStand添加自定义功能。

▲ 图八:VeriStand的软件界面

RDB

RDB全称是Runtime Data Bus,即数据运行总线,它是通过周期性的I/O数据帧,也就是仿真信息,去反馈当前VTD的信息,包括目标信息、环境信息、传感器信息、图像数据等。

▲ 图九:VTD中RDB的使用示例

综上所述,我们可以很清楚的了解VTD与TestStand的交互模型。当我们了解完了基本软件的内容之后我们便可以对其进行连通。首先我们要通过Python编写期望的SCP指令,在编写好脚本文件并确保我们的文件可以指示VTD产生动作后,接下来我们就可以从TestStand里面对Python脚本进行调用。

▲ 图十:调用Python模块示意图

这样我们便初步实现了TestStand对VTD的动作指示。但正如我们所知,如果只是像这样简单的联通是并不能完成我们所期望的自动化测试需求的,所以除了要对VTD发送命令,我们势必还要接收VTD一端返回的命令,从而在TestStand里面对参数变量以及条件进行编写,才能获得一条完整的测试用例。那么如何才能接收到VTD的反馈呢?这就需要用到我们刚才介绍的VeriStand与RDB命令了。

TestStand对VTD的控制

在RDB数据到达VeriStand后,我们可以通过VeriStand对数据进行解析,从而再将解析后的数据传达给我们的TestStand,这样便实现了由VTD到TestStand的交互。

当我们成功实现了由VeriStand接收VTD返回的指令之后我们接下来就要实现VeriStand与TestStand的互联。关于TestStand的灵活性我们已经深有体会了,所以想要实现TestStand与自己的“兄弟”软件——VeriStand的交互对于我们来说也是易如反掌。

我们只需要在TestStand中右键点击Template列表中的任何地方,然后选择“Import”,定位到VeriStand的Template路径,最后点击OK。(注:默认路径一般在C:\Documents and Settings\All Users\Documents\National Instruments\VeriStand\TestStand\NIVeriStand TestStand 4.2 Steps Template.ini)

▲ 图十一:添加了NI VeriStand的模板窗口

这样我们便成功实现了VeriStand的工程的添加,也就基本实现了TestStand与VTD的连通。之后,我们再根据自己的期望去编写不同的测试用例,再通过不断地调试、测验去改善测试用例,保证测试用例的完整性,我们便完成了基本的自动化测试流程。

以上便是如何将TestStand与我们的自动驾驶相关软件进行自动化测试串联的过程,该交互理念与逻辑也适用于其他的软件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于NI_TestStand的智能驾驶自动化测试 的相关文章

  • Jenkins集成部署java项目

    文章目录 Jenkins简介 安装 Jenkins简介 Jenkins能实时监控集成中存在的错误 提供详细的日志文件和提醒功能 还能用图表的形式形象的展示项目构建的趋势和稳定性 官网 安装 在官网下载windows版本的Jenkins 但是
  • linux 定时任务crontab编写

    使用命令 crontab e 0 0 sh opt maxwellToMysql create data log sh 编写完保存
  • 服务器经常出现自动重启怎么办

    服务器自动重启是一个复杂且常见的问题 可能由多种原因引起 从硬件故障到软件问题 从电源问题到散热问题 每一个环节都可能成为服务器的杀手 在处理此类问题时 需要我们有一套完整的策略和方案 以便快速准确地定位并解决问题 1 硬件检查 首先 我们
  • 全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——操作系统取证

    博主介绍 博主介绍 大家好 我是 hacker routing 很高兴认识大家 主攻领域 渗透领域 应急响应 python VulnHub靶场复现 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步 文末
  • 【linux】日志管理和分析

    一 概述 在Linux系统的管理和运维中 日志文件起到至关重要的作用 它们记录了系统运行过程中的各种事件 包括系统故障 性能数据和安全事件 二 日志的作用和分类 日志的作用 日志文件记载了系统的生命线 利用它们可以 1 诊断系统故障 2 监
  • 8年经验之谈!一文看懂性能测试的流程!

    每天做着点点点测试有没有危机感 突然有一天 领导说 小王 今天把996福报系统压一下 下班前把压测报告发我邮箱 啥 压测 今天 报告 怎么压 怎么写 从来没做过啊 心里一万匹草泥马奔跑而过 别说996了 估计明天都下不了班了 好歹也像功能测
  • VPS计算深度解析:如何选择适合你需求的服务器配置

    在当今数字时代 无论是个人用户还是企业 都需要可靠的服务器来托管其网站 应用程序和数据 VPS已经成为一种受欢迎的托管解决方案 因为它提供了稳定性 安全性和性能的理想平衡 但是 在选择适合你需求的VPS服务器配置时 你需要考虑许多因素 本文
  • 制作本地yum仓库

    root 192 cd etc yum repos d root 192 yum repos d ls redhat repo root 192 yum repos d vim rpm repo base name baseos gpgch
  • AIDL通信过程中设置死亡代理

    概述 在进行进程间通信的过程中 如何服务端进程由于某种原因异常终止 我们的远程调用就会失败 影响我们的功能 那么怎么样能够知道服务端进程是否终止了呢 那就是给Binder设置死亡代理 下面看看如何设置 Override public voi
  • Linux ls命令

    目录 一 配置项 1 1 ls l 1 2 ls a 1 3 ls lrt 1 4 ls ld 二 案例 2 1 查看指定文件夹下文件的数量
  • 双系统安装win7出现grub怎么解决

    我们在重装系统时 特别苹果装双系统时 会出现安装过程或者安装后的问题 发现系统开机显示grub 导致不能正常进入系统 让人很是着急 其实出现这种情况是因为系统找不到主引记录所导致 只要重建主引记录mbr即可解决 下面小编就教教大家win7系
  • nohup - 后台执行

    nohup no hang up 语法 nohup Command Arg 使用示例 nohup python a py 日志将被保留在 当前文件夹下的 nohup out 将日志放到文件 不输出到终端 echo hello gt 1 tx
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • messages,CentOS 7不收集日志或不存在 /var/log/messages

    var log message var log secure等都不记录了 并且都是空文件 重启机器 reboot 无效 重启日志 systemctl start rsyslog 无效 怀疑空间不足 删除 var log messages 重
  • 这个很少人知道的零售技巧,却是我最想安利的!

    在当今数字化浪潮的推动下 零售业正在迎来一场革命性的变革 新零售模式的崛起正引领着消费者与商品之间的互动方式发生深刻的变化 在这个变革的前沿 自动售货机作为新零售的一种关键形式 通过智能技术和自动化系统 重新定义了购物体验的边界 客户案例
  • 什么是充放电振子理论?

    CHAT回复 充放电振子模型 Charging Reversal Oscillator Model 是一种解释ENSO现象的理论模型 这个模型把ENSO现象比喻成一个 热力学振荡系统 在这个模型中 ENSO现象由三个组成部分 充电 Char
  • Kubernetes (十一) 存储——Secret配置管理

    一 简介 从文件创建 echo n admin gt username txt echo n westos gt password txt kubectl create secret generic db user pass from fi
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 进口零部件三维模型扫描替换抄数建模逆向造型设计服务CASAIM

    三维扫描技术在现代制造业中发挥着越来越重要的作用 尤其在零部件建模领域 它能够快速 准确地获取物体的三维数据 为后续的逆向工程和快速原型制造提供了有力支持 CASAIM三维扫描仪设备通过对零部件进行三维扫描 我们可以获得其精确的三维几何数据
  • Airtest自动化测试工具

    一开始知道Airtest大概是在年初的时候 当时 看了一下官方的文档 大概是类似Sikuli的一个工具 主要用来做游戏自动化的 通过截图的方式用来解决游戏自动化测试的难题 最近 移动端测试的同事尝试用它的poco库来做自动化 看样子还不错

随机推荐

  • CORDIC算法FPGA的实现

    基于CORDIC算法FPGA的实现 CORDIC算法原理利用简单的移位就实现 主要用于三角函数 双曲线 指数 对数的计算 在以二进制操作为基础的FPGA硬件中就显得尤为重要 虽然现在的fpga有了集成IP核 但是对于其基本原理还是需要关注的
  • 基于VUE的电商系统的设计与实现

    随着移动互联网技术和计算机技术的不断发展 电子商务已经成为社会发展的潮流 通过电子商务系统商品信息交流变的更加方便 面对高速发展的电子商务 电商系统如雨后春笋不断的涌现 利用电商系统 企业销售可以足不出户实现销售信息的全面管理 从而指引企业
  • redhat常用基础命令代码

    redhat常用基础命令 1 登陆和关机 重启和切换用户 创建删除用户 远程登陆redhat ssh root 192 168 xx xx ssh为远程登陆选择的通道 root为用户名 192 168 xx xx为ip地址 关机 shutd
  • java程序的执行结构(顺序、分支、循环)

    目录 一 顺序流程 二 分支流程控制 1 分支结构的概念 2 流程控制 分支 if else 的使用 分支 switch case 的使用 三 循环流程结构 1 循环结构的概念 2 循环结构的三要素 3 循环控制 for循环 while循环
  • 【计算机网络】概述

    计算机网络 复习篇 含习题及答案 1 第一章 概述 1 1 计算机网络在信息时代中的作用 1 2 互联网概述 1 3 互联网的组成 1 4 计算机网络在我国的发展 1 5 计算机网络的定义 1 6 计算机网络的性能 1 7 计算机网络体系结
  • GB9706.1-2007名词解释:电气间隙、爬电距离,绝缘、接地等

    一 安全距离名词解释 安全距离包括电气间隙 空间距离 爬电距离 沿面距离 和绝缘穿透距离 1 电气间隙 两个导体部件之间的最短空气路径 2 爬电距离 沿两个导体部件之间绝缘材料表面的最短路经 二 绝缘部分名词解释 基本绝缘 用于带电部分上对
  • Linux0.12内核之内存管理(2)

    本文主要介绍Linux0 12内核memory c中的函数 1 void free page unsigned long addr 释放物理地址addr处的一页内存 用于free page tables 函数 void free page
  • 理清js中数组与对象的区别-数据类型和Json格式

    Json的规格非常简单 只用一个页面几百个字就能说清楚 而且Douglas Crockford声称这个规格永远不必升级 因为该规定的都规定了 1 并列的数据之间用逗号 分隔 2 映射用冒号 表示 3 并列数据的集合 数组 用方括号 表示 4
  • js分支语句

    一 if条件判断语句 多条件判断
  • 谷歌插件开发:manifest.json 配置文件详解

    在当今的互联网时代 浏览器插件扮演着重要的角色 为用户提供了各种定制化的功能和增强体验 Google Chrome作为最受欢迎的浏览器之一 也提供了丰富的插件生态系统 而在Chrome插件的开发中 manifest json配置文件起着至关
  • 使用管理员权限打开cmd(命令提示符)的方法 (Windows10)

    目录 通过打开运行 Step1 win R Step2 输入cmd Step3 Ctrl Shift Enter 通过资源管理器 Step1 Ctrl Shift Esc Step2 鼠标左键点击 文件 Step3 Ctrl 鼠标左键点击
  • C语言利用数组输出26个小写字母

    带注释 include
  • Windows安装pnpm后提示“无法加载文件”错误

    环境 Windows 10 过程 今天在PowerShell命令行界面安装完pnpm包管理器后 执行pnpm v命令看是否有安装成功 报如下错误 pnpm 无法加载文件 C Users root AppData Roaming npm pn
  • discard long time none received connection. , jdbcUrl.......

    在druid中 日志输出报错discard long time none received connection jdbcUrl 的信息 但是对我们使用不会有影响 只是会影响性能 但作为强迫症的我 怎么会忍心看着这个ERROR呢 解决办法
  • java入门之 重写与重载

    一 重写 overriding 1 定义 子类重写父类的方法 通俗而言即为重新改写 将一个已有事物进行改变以适应新要求 2 要求 父类若有static private 则该方法不能重写 子类重写后的方法不能加static 方法名 方法参数
  • MathType公式编辑文本复制粘贴选项

    1 基于Web的Markdown格式 2 Typora
  • 88. 合并两个有序数组

    文章目录 题目描述 思路 代码 c 结果 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2 另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目 请你 合并 nums2 到 nums1 中
  • rk3288 6222b 模组调试 (rtl8822cs)--蓝牙

    任务 在rk3288 android7 1 上移植配置 rtl8822cs 的蓝牙模块 思路 拿到厂商的蓝牙驱动 参考里面的 驱动移植步骤 注 需要注意的是 最新的驱动是否和 Bluetooth app 中 jni 的代码匹配 文档中提到的
  • 数据结构---AVL树

    AVL树 AVL树的概念 AVL树节点的定义 AVL树的插入 源代码 AVL树的概念 二叉搜索树虽然可以缩短查找的效率 但是 如果数据有序或接近有序二叉搜索树将退化为单支树 查找元素相当于在顺序表中搜索元素 效率就会变低 因此 两位俄罗斯的
  • 基于NI_TestStand的智能驾驶自动化测试

    在汽车产业不断发展的今天 智能驾驶已经成为了汽车中必不可少的一部分 虽然目前真正的无人驾驶技术还未广泛应用于我们的日常生活中 但各式各样的驾驶辅助系统 如碰撞预警 自动刹车 自适应巡航等功能已经在为我们的驾驶员保驾护航 今天小编就带大家一起