3D孪生场景搭建:模拟仿真

前面几期文章介绍如何使用NSDT 编辑器 搭建3D应用场景,本期介绍下孪生场景中一个一个非常重要的功能:模拟仿真。

1、什么是模拟仿真

模拟仿真是一种用于描述、分析和模拟现实世界中系统、过程或事件的计算机模型和程序。仿真通过输入各种参数和条件,生成一系列模拟结果,以帮助用户理解系统的行为、评估方案的效果,并进行预测和决策。仿真可以应用在多个领域,例如工程、医学、交通等。与数字孪生不同的是,仿真更注重对系统行为的描述、分析和预测,而较少强调实时监测和优化决策支持。

2、模拟仿真的用途

模拟仿真被用于预测新产品的性能、验证设计方案、优化生产流程、培训人员等。它还可以用于医学仿真,模拟手术操作以及疾病传播过程,以提供更好的医疗决策支持。在交通领域,仿真可以模拟城市交通流量,优化交通信号灯系统,减少堵车和排放。在航空航天领域,仿真可以用来测试航空器的飞行性能和安全,优化飞行路线和资源分配。此外,仿真技术还被广泛应用于社会经济领域,例如模拟市场竞争、货币政策的影响以及公共政策的效果评估等。总而言之,虽然数字孪生更侧重于物理实体的建模和监控,而仿真技术则更广泛地应用于模拟各种系统和环境,并为决策提供支持。

3、如何在NSDT 编辑器 中实现模拟仿真

NSDT 编辑器 作为一款实用的3D场景编辑工具,当然也集成了模拟仿真的功能,模拟仿真支持接入物联设备数据方式的方式有两种:一种是在孪生服务平台手动设置模拟数据;一种是直接调用http相关api接口发送物联设备数据。下面我们具体下两种数据接入方式。

3.1 新增孪生体

注册用户账号

访问 NSDT.TWIN 孪生体管理平台,注册用户账号,操作如下图所示:

注册账号

新建孪生体

假如已注册账号:test,密码:test,登录 NSDT.TWIN 孪生体管理平台 ,新建孪生体 ,操作如下图所示:

新建孪生体

特别说明

项目名称: 指定一个有含义的命名空间字符串,比如某个公司的网址,com.ww.cn;或者任何您想给的有意义的字符串

设备名称: 物联设备的唯一标志字符串,很重要,后续可以基于此字段推送物联设备的数据

版本: 不用填写

属性(静态):描述物联设备的一些静态属性,key-value格式字符串,可以自定义,比如name:lmd001,place:三工区,等等

特征属性(动态)-特征key:描述物联设备上一些组件,比如龙门吊有天车、吊臂绳,分别命名 topcar、rope,等等

特征属性(动态)-特征参数集合:描述物联设备上一个组件的一些物理量参数,比如龙门吊有天车的水平距离、吊臂绳升降高度,分别命名 horizontal_distance、rise_height,默认值类型为数字或小数,默认给0即可。

新建后查看列表【定义】列,就是孪生体的thingId,为com.ww.cn:lmd008

孪生体列表

3.2 场景中绑定孪生体

使用已注册用户账号登录 NSDT编辑器 ,切换到具体场景,选中要接入数据驱动的模型,切换到右下角【模型信息】tab,绑定新增孪生体的参数到模型属性上,如下图所示

配置孪生参数映射

特别说明:

选择刚刚创建的孪生体,比如“第008号龙门吊”,将其一个特征的一个参数绑定到选定模型的一个属性上,即完成绑定。需要说明的是,可将任意孪生体的任意特征参数,绑定到任意模型属性上。

3.3 接入物联设备数据方式

模拟仿真(测试使用)

选择【模拟仿真】,进入仿真页面,如下图所示

模拟仿真-入口

切换到【仿真配置】tab,配置仿真相关参数,如下图所示:

特别说明

频率:设置发送数据间隔,单位秒

仿真模式:

--全量仿真:模拟孪生体所有特征的所有参数

--单feature:模拟孪生体一个特征的所有参数

--单物理量:模拟孪生体一个特征的一个参数

配置:

--固定值:生成参数值为固定值。

--区间随机值:需设置最大和最小值,在此范围之间,随机生成参数值。

--循环递增:需设置最大和最小值以及递增最小单位量,在此范围之间,按递增步长,递增生成参数值,然后循环往复。

模拟仿真-配置

配置完仿真策略后,点击启动仿真,切换到【消息日志】可查看孪生体接收到的数据

仿真日志和按钮

直接调用http相关api接口发送物联设备数据

此种方式需要做一定的编码开发。

第一步:调用【1.2.1.1、获取用户访问token令牌】接口获取token令牌,有access_token和refresh_token两个令牌,access_token用于调用发送设备数据相关API,需要说明的是,access_token令牌会过期,有效期一年,refresh_token是离线刷新token,不会过期。所以,建议在access_token令牌到期前,或者调用发送物联设备数据API且请求返回401状态码时,可使用【1.2.1.1、获取用户访问token令牌】接口传入refresh_token,重新换取新access_token令牌。

第二步:调用【1.2.2、发送设备数据】相关api,我们提供三种发送设备数据的接口,请根据您获取到物联设备的数据格式,选择一种合适的接口,传入access_token到请求头,调用接口发送数据。

以上详见参考文档【孪生体管理API接口说明】。

调用SDK发送物联设备数据

此种方式需要做一定的编码开发。

第一步:配置maven依赖

<dependency>     <groupId>org.eclipse.ditto</groupId>     <artifactId>ditto-client</artifactId>     <version>3.1.1</version> </dependency>

第二步:实例化和配置一个新的孪生体client

目录下增加配置文件src/main/resources/config.properties,内容如下:

### Required configuration properties
namespace=com.ww.cn
endpoint=wss://twin.nsdt.cloud:8081/ws/2
### password credentials
clientId=TED
scopes=offline_access
tokenEndpoint=https://nsdt.cloud/auth/realms/nsdt/protocol/openid-connect/token
pwUsername=test ### 换成您的NSDT账号和密码
pwPassword=123  ### 换成您的NSDT账号和密码

要配置孪生体client实例:

  • 需要创建AuthenticationProvider和MessagingProvider的实例
  • 创建DisconnectedDittoClient实例
  • 通过调用client.connect()异步获取DittoClient实例
// 创建AuthenticationProvider实例final AuthenticationProvider<WebSocket> authenticationProvider =  AuthenticationProviders.accessToken(AccessTokenAuthenticationConfiguration.newBuilder()// getJsonWebToken()为获取jwt令牌的方法,详见demo代码.accessTokenSupplier(() -> getJsonWebToken()).identifier("ditto").expiryGracePeriod(DEFAULT_EXPIRY_GRACE_PERIOD););// 创建MessagingProvider的实例final MessagingConfiguration.Builder messagingConfigurationBuilder =WebSocketMessagingConfiguration.newBuilder().jsonSchemaVersion(JsonSchemaVersion.V_2).reconnectEnabled(false)// config.properties中的tokenEndpoint.endpoint(CONFIG_PROPERTIES.getEndpointOrThrow());final MessagingProvider messagingProvider =MessagingProviders.webSocket(messagingConfigurationBuilder.build(), authenticationProvider);// 创建DisconnectedDittoClient实例DisconnectedDittoClient disconnectedDittoClient = DittoClients.newInstance(messagingProvider);//创建孪生体clientDittoClient client = disconnectedDittoClient.connect().toCompletableFuture().get(10, TimeUnit.SECONDS);

第三步:使用client向孪生体平台发送物联设备数据,参考示例SendTwinDataDemo.java文件中main函数,有三种发送数据方式:

// 演示给指定孪生体发送所有特征数据updateFeatures();// 演示给指定孪生体发送一个特征的所有参数的数据updateFeature();// 演示给指定孪生体发送一个特征中的一个参数的数据updateFeatureProperty();

以上详见参考文档【孪生体管理API接口说明】,java-sdk使用demo下载链接 java-sdk-demo

3.4 浏览模型驱动效果

浏览效果1

浏览效果1-2

浏览效果2

可以看见龙门吊模型在不停移动,并且模型属性【位置-X】数据有明显变化

原文链接:3D孪生场景搭建:模拟仿真 (mvrlink.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/150238.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

王道考研计算机网络——传输层

一、传输层概述 复用&#xff1a;发送方不同的应用进程都可以使用同一个传输层的协议来传送数据 分用&#xff1a;接收方的传输层在去除报文段的首部之后能把数据交给正确的应用进程 熟知端口号就是知名端口号0-1023 客户端使用的端口号是动态变化的&#xff0c;不是唯一确定…

【CMU15-445 Part-15】Query Planning Optimization II

Part15-Query Planning & Optimization II Selection Statistics 维护每张表中的基本主要信息也就是tuple数量 N R N_R NR​以及每个属性中不同值的数量 V ( A , R ) V(A,R) V(A,R)&#xff0c; N R N_R NR​关系R中的元组数量&#xff0c;单独维护&#xff0c;不能用pag…

几种开源协议的区别(Apache、MIT、BSD、MPL、GPL、LGPL)

作为一名软件开发人员&#xff0c;你一定也是经常接触到开源软件&#xff0c;但你真的就了解这些开源软件使用的开源许可协议吗&#xff1f; 你不会真的认为&#xff0c;开源就是完全免费吧&#xff1f;那么让我们通过本文来寻找答案。 一、开源许可协议简述 开源许可协议是指开…

26358-2022 旅游度假区等级划分 思维导图

声明 本文是学习GB-T 26358-2022 旅游度假区等级划分. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了旅游度假区的等级划分和依据、总则、基本条件、省级和国家级旅游度假区条件。 本文件适用于旅游度假区的等级认定与复核依据…

Labview 实战 99乘法表

基于新手小白&#xff0c;使用Labview实现99乘法表&#xff0c;敢于发表自己的一点方法&#xff0c;还请各位大侠放过&#xff01; 如下&#xff1a; 运行效果如下&#xff1a; 思路为&#xff1a;将要显示出来的数据&#xff0c;全部转换为字符串形式&#xff0c;再塞入到数组…

【成像光敏描记图提取和处理】成像-光电容积描记-提取-脉搏率-估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

MySQL存储结构

MySQL存储结构 1、存储结构1.1存储结构概述1.2优点1.3存储过程应用1.4触发器 2、实际操作2.1创建存储过程2.1调用2.3查看存储过程2.4查看存储过程状态2.5查看指定存储过程信息 3、存储过程的参数3.1参数3.2实际操作3.3修改存储过程3.4删除存储过程 4、总结 1、存储结构 1.1存储…

黑马点评-01基于Redis实现短信登陆的功能

环境准备 当前模型 nginx服务器的作用 手机或者app端向nginx服务器发起请求,nginx基于七层模型走的是HTTP协议,可以实现基于Lua直接绕开tomcat访问Redis nginx也可以作为静态资源服务器,轻松扛下上万并发并负载均衡到下游的tomcat服务器,利用集群支撑起整个项目 使用nginx部…

spark on hive

需要提前搭建好hive&#xff0c;并对hive进行配置。 1、将hive的配置文件添加到spark的目录下 cp $HIVE_HOME/conf/hive-site.xml $SPARK_HOME/conf2、开启hive的hivemetastore服务 提前创建好启动日志存放路径 mkdir $HIVE_HOME/logStart nohup /usr/local/lib/apache-hi…

Vue中如何进行拖拽与排序功能实现

在Vue中实现拖拽与排序功能 在Web应用程序中&#xff0c;实现拖拽和排序功能是非常常见的需求&#xff0c;特别是在管理界面、任务列表和图形用户界面等方面。Vue.js作为一个流行的JavaScript框架&#xff0c;提供了许多工具和库来简化拖拽和排序功能的实现。本文将介绍如何使…

蓝桥杯每日一题2023.10.6

题目描述 门牌制作 - 蓝桥云课 (lanqiao.cn) 题目分析 #include<bits/stdc.h> using namespace std; int ans; int main() {for(int i 1; i < 2020; i ){int x i;while(x){int a x % 10;if(a 2)ans ;x / 10;}}cout << ans;return 0; } 题目描述 既约分数…

pytorch函数reshape()和view()的区别及张量连续性

目录 1.view() 2.reshape() 3.引用和副本&#xff1a; 4.区别 5.总结 在PyTorch中&#xff0c;tensor可以使用两种方法来改变其形状&#xff1a;view()和reshape()。这两种方法的作用是相当类似的&#xff0c;但是它们在实现上有一些细微的区别。 1.view() view()方法是…

MD5 绕过第三式:ffifdyop

文章目录 参考环境推荐阅读雾现两个 PHP 文件表结构分析 雾散ASCII 编码二进制数据到 ASCII 文本的转化绕过原理ffifdyop绕过 ffifdyop 的批量化生产批量化生产注意事项细节一字之差运算符优先级 实际需要遵守的规则 生产机器 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心…

Redis缓存设计与性能优化

文章目录 一、缓存穿透二、缓存失效(击穿)三、缓存雪崩四、热点缓存key重建优化五、缓存与数据库双写不一致六、开发规范与性能优化键值设计key名设计value设计 命令使用客户端使用系统内核参数优化vm.swapinessvm.overcommit_memory(默认0)合理设置文件句柄数慢查询日志&#…

PbootCMS SQL注入漏洞

漏洞复现 访问漏洞url 数据库是mysql 构造payload&#xff0c;条件为假时&#xff0c;未查到任何数据 http://x.x.x/index.php?search 1select 0页面回显 构造payload&#xff0c;条件为真时&#xff0c;查询到数据 1select1文笔生疏&#xff0c;措辞浅薄&#xff0c;望各…

基于微信小程序的付费自习室

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…

Promise击鼓传花

Promise击鼓传花 Promise系列导航前言一、Promise.prototype.then()1.语法2.代码及说明&#xff08;1&#xff09;代码段&#xff1a;&#xff08;2&#xff09;代码段&#xff1a;&#xff08;3&#xff09;代码段&#xff1a;&#xff08;4&#xff09;代码段&#xff1a;&am…

mysql5.7停止维护时间

mysql5.7将于2023年10月停止官网支持和更新&#xff1b;老项目要准备升级&#xff0c;新项目的mysql必须是mysql8.0&#xff08;2023-10&#xff09; 官方升级咨询地址 oracle官方升级咨询地址https://go.oracle.com/LP116153?elq_mid247718&sh1518132002061316121320310…

【小沐学Python】Python实现Web图表功能(Dash)

文章目录 1、简介2、安装3、功能示例3.1 Hello World3.2 连接到数据3.3 可视化数据3.4 控件和回调3.5 设置应用的样式3.5.1 HTML and CSS3.5.2 Dash Design Kit (DDK)3.5.3 Dash Bootstrap Components3.5.4 Dash Mantine Components 4、更多示例4.1 Basic Dashboard4.2 Using C…

网页版”高德地图“如何设置默认城市?

问题&#xff1a; 每次打开网页版高德地图时默认定位的都是“北京”&#xff0c;想设置起始点为目前本人所在城市&#xff0c;烦恼的是高德地图默认的初始位置是北京。 解决&#xff1a; 目前网页版高德地图暂不支持设置起始点&#xff0c;打开默认都是北京&#xff0c;只能将…