当前位置: 首页 > news >正文

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)

相关文章:

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

前面几期文章介绍如何使用NSDT 编辑器 搭建3D应用场景&#xff0c;本期介绍下孪生场景中一个一个非常重要的功能&#xff1a;模拟仿真。 1、什么是模拟仿真 模拟仿真是一种用于描述、分析和模拟现实世界中系统、过程或事件的计算机模型和程序。仿真通过输入各种参数和条件&am…...

美国各流域边界下载,并利用arcgis提取与处理

一、边界数据的下载 一般使用最普遍的流域边界数据是从HydroSHEDS官网下载: HydroBASINS代表一系列矢量多边形图层&#xff0c;以全球尺度呈现次级流域边界。该产品的目标是提供一种无缝的全球覆盖&#xff0c;其中包含了不同尺度&#xff08;从数十到数百万平方千米&#xf…...

A Survey and Framework of Cooperative Perception 论文阅读

论文链接 A Survey and Framework of Cooperative Perception: From Heterogeneous Singleton to Hierarchical Cooperation 0. Abstract 首次提出统一的 CP&#xff08;Cooperative Percepetion&#xff09; 框架回顾了基于不同类型传感器的 CP 系统与分类对节点结构&#x…...

【SkyWalking】SkyWalking是如何实现跨进程传播链路数据?

文章目录 一、简介1 为什么写这篇文章2 跨进程传播协议-简介 二、协议1 Standard Header项2 Extension Header项3 Correlation Header项 三、跨进程传播协议的源码分析1 OpenTracing规范2 通过dubbo插件分析跨进程数据传播3 分析跨进程传播协议的核心源码 四、小结参考 一、简介…...

px4仿真实现无人机自主飞行

一,确定消息类型 无人机通过即在电脑是现自主飞行:思路如下。 通过Mavros功能包,将ROS消息转换为Mavlink消息。实现对无人机的控制。 几种消息之间的关系如下: 对于ROS数据,就是我们机载电脑执行ROS系统的数据。 对于Mavros消息,就是Mavros功能包内部的消息。查询网站…...

详解Linux的系统调用fork()函数

在Linux系统中&#xff0c;fork()是一个非常重要的系统调用&#xff0c;它的作用是创建一个新的进程。具体来说&#xff0c;fork()函数会在当前进程的地址空间中复制一份子进程&#xff0c;并且这个子进程几乎完全与父进程相同&#xff0c;包括进程代码、数据、堆栈以及打开的文…...

构建捡垃圾机器人的 ROS 2 项目

一、说明 本系列是关于学习如何使用 ROS2、Docker 和 Github 设计、设置和维护机器人项目。 先决条件 — ROS2 软件包的基本知识、实现发布者、订阅者、操作并连接它们。 我们之前在 ROS2 中了解了不同的部分。但是&#xff0c;在我们转向实际的基于硬件的项目之前&#xff0c;…...

Spring常用注解(2)

6、切面&#xff08;AOP&#xff09;相关注解 Spring AOP详细介绍 Spring支持AspectJ的注解式切面编程。 Aspect 声明一个切面 After 在方法执行之后执行&#xff08;方法上&#xff09; Before 在方法执行之前执行&#xff08;方法上&#xff09; Around 在方法执行之前与之后…...

upload-labs靶场通关

文章目录 Pass-01 前端检测&#xff08;JS检测&#xff09;1.1 原理分析1.2 实验 Pass-02 后端检测&#xff08;MIME检测&#xff09;2.1 原理分析2.2 实验 Pass-03 后端检测&#xff08;黑名单绕过&#xff0c;特殊后缀名&#xff09;3.1 原理分析3.2 实验 Pass-04 后端检测&a…...

git拉取代码过程

第一步&#xff1a;先在本地创建文件夹 &#xff0c;比如我这里的文件夹名称是 fengkgong_zntjfx 第二步&#xff1a;执行命令&#xff1a;git init 第三步&#xff1a;git clone 第四步&#xff1a;git fetch 第五步&#xff1a;git branch -a 第六步&#xff1a;cd 项目 【…...

Swift | 属性包装器

Swift | 属性包装器 1. 什么是 Swift Property Wrapper&#xff1f; Swift Property Wrapper 是一种特性&#xff0c;它允许我们在声明属性时添加自定义的包装逻辑。通过使用属性包装器&#xff0c;我们可以在不修改类或结构体定义的情况下&#xff0c;定制属性的访问和存储方…...

Android改造CardView为圆形View,Kotlin

Android改造CardView为圆形View&#xff0c;Kotlin 可以利用androidx.cardview.widget.CardView的cardCornerRadius特性&#xff0c;将CardView改造成一个圆形的View&#xff0c;技术实现的关键首先设定CardView为一个宽高相等的View&#xff08;正方形&#xff09;&#xff0c…...

Idea下面git的使用:变基、合并、优选、还原提交、重置、回滚、补丁

多分支和分支切换 变基和合并 变基是把本项目的所有提交都列出来按顺序一个个提交到目标分支上去 而合并是把两个分支合并起来&#xff0c;但是旧的分支还是可以启动其他分支&#xff0c;在旧的分支上继续开发 master: A -- B -- C -- M/ feature: D -- Emaster: A -…...

【数据结构】什么是算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.算法的定义 1.算法的概念 2.数据结构与算法的关系 二.算法的特性 输入 输出 有穷性 确定性 可行性 三.算法的设计要求 1.正确性 2.可读性 3.健壮性 4.效…...

复旦大学EMBA:揭秘科创企业,领略未来战略!

智能制造&#xff0c;国之重器。作为制造强国建设的主攻方向&#xff0c;智能制造的发展水平关系到我国未来制造业在全球的地位与影响力。发展智能制造&#xff0c;是加快建设现代化产业体系的重要手段&#xff0c;提升供给体系适配性的有力抓手&#xff0c;也是建设数字中国的…...

根据您的数据量定制的ChatGPT,改变客户服务的方式

在当今竞争激烈的商业环境中&#xff0c;提供优质的客户服务对于保持忠诚的客户群和推动业务增长至关重要。客户满意度已成为各行各企业的首要任务&#xff0c;因为它直接影响客户留存和品牌声誉。随着技术的进步&#xff0c;公司不断探索创新解决方案&#xff0c;以增强客户服…...

《Unity Shader 入门精要》笔记03

UnityShader的内置变量&#xff08;数学篇&#xff09; Unity内置的变换矩阵摄像机和屏幕参数float3 _WorldSpaceCameraPosfloat4 _ProjectionParamsfloat4 _ZBufferParamsfloat4 unity_OrthoParamsfloat4x4 unity_CameraProjectionfloat4x4 unity_CameraInvProjectionfloat4 u…...

LINUX系统使用软件异地同步数据(灾备)

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步&#xff0c;支持本地复制&#xff0c;或者与其他SSH、rsync主机同步 一、宝塔环境: 有宝塔软件商城支持&#xff0c;参考&#xff1a;https://www.bt.cn/bbs/thread-98022-1-1.html 二、…...

IDEA Rogstry中找不到compiler.automake.allow.when.app.running问题解决

网上大部分人教我们 先 File > Settings 然后 勾选 Build 下的 Compiler中的 Build project automatically 这些步骤都不会有问题 然后就会让我们 ctrl shift alt / 点 Rogstry 打开后 我人就麻了 根本没有什么 compiler.automake.allow.when.app.running 也不用慌 我们…...

c#设计模式-行为型模式 之 状态模式

&#x1f680;简介 状态模式是一种行为设计模式&#xff0c;它允许对象在其内部状态改变时改变其行为&#xff0c;我们可以通过创建一个状态接口和一些实现了该接口的状态类来实现状态模式。然后&#xff0c;我们可以创建一个上下文类&#xff0c;它会根据其当前的状态对象来改…...

使用Docker安装JupyterHub

安装JupyterHub 拉取Jupyter镜像并运行容器 docker run -d -p 8000:8000 --name jupyterhub jupyterhub/jupyterhub jupyterhub # -d&#xff1a;后台运行 # -p 8000:8000&#xff1a;宿主机的8000端口映射容器中的8000端口 # --name jupyterhub&#xff1a;给运行的容器起名…...

SpringCloudGateway网关整合swagger3+Knife4j3,basePath丢失请求404问题

在集成 Spring Cloud Gateway 网关的时候&#xff0c;会出现没有 basePath 的情况&#xff0c;例如定义的 /jeeplus-auth、/jeeplus-system 等微服务前缀导致访问接口404&#xff1a; maven依赖&#xff1a; swagger2于17年停止维护&#xff0c;现在最新的版本为 Swagger3&am…...

html通过使用图像源的协议(protocol)相对 URL 来防止安全/不安全错误

有人知道使用 protocol relative URLs 是否有问题吗&#xff1f;用于图像源以防止混合内容安全警告。 例如链接一张图片: <img src"//domain.com/img.jpg" /> 代替: <img src"http://domain.com/img.jpg" /> or <img src"https…...

【SpringBoot】| Thymeleaf 模板引擎

目录 Thymeleaf 模板引擎 1. 第一个例子 2. 表达式 ①标准变量表达式 ②选择变量表达式&#xff08;星号变量表达式&#xff09; ③链接表达式&#xff08;URL表达式&#xff09; 3. Thymeleaf的属性 ①th:action ②th:method ③th:href ④th:src ⑤th:text ⑥th:…...

Vue Router的进阶

进阶 导航守卫 官方文档上面描述的会比较深奥&#xff0c;而守卫类型也比较多&#xff0c;其中包含了全局前置守卫、全局解析守卫、全局后置钩子、路由独享守卫、组件内守卫。每一种守卫的作用和用法都不相同。这会使得大家去学习的时候觉得比较困难&#xff0c;这边主要介绍…...

方案:快递站智能视频监控3大亮点汇总

快递站智能视频监控方案是一种利用先进的技术和设备&#xff0c;来提升快递站安全管理和快递流程监控的解决方案。具体包括哪些方面呢&#xff1f;今天小编就带大家来看看&#xff01; 1、视频监控系统 在快递站的关键区域安装旭帆科技高清摄像头&#xff0c;如快递仓库、操作…...

Direct3D网格

创建网格 我们可以用D3DXCreateMeshFVF函数创建一个"空"网格对象 &#xff0c;空网格对象是指我们指定了网格的面片总数和顶点总数&#xff0c;然后由该函数为顶点缓存、索引缓存和属性缓存分配大小合适的内存&#xff0c;之后即可手工填入网格数据。 HRESULT WINA…...

docker安装wiki

1.docker pull mediawiki 2.docker run -d --name mywiki -p 8666:80 mediawiki 访问ip:8666,就可以看到配置页面了 3.docker pull mysql docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3307:3306 mysql 4.在配置页面链接ip:3307,连接数据库&#xff0c;接下…...

bigemap在林业勘测规划设计行业的一些应用

选择Bigemap的原因&#xff1a; 主要注重影像的时效性&#xff0c;软件的影像时效性比其他的更新快&#xff0c;更清晰。 使用场景&#xff1a; 1.林业督查&#xff0c;主要是根据国家下发的图斑&#xff0c;结合测绘局的影像以及bigemap的较新影像对比去年和今年的林地变化。…...

设计模式学习

文章目录 前言设计模式的七大原则单一职责原则开放封闭原则里氏替换原则依赖倒转原则接口隔离原则合成复用原则迪米特原则总结 GoF二十三种设计模式创建型模式&#xff08;五种&#xff09;结构型模式&#xff08;七种&#xff09;行为型模式&#xff08;十一种&#xff09; 游…...

网络营销管理方案/搜索引擎优化百度百科

概要P/Invoke的机制让我们能在托管环境下使用原先已实现的Native Code。本文主要讨论的是P/Invoke中的参数传递和.NET CF的一些不同于完整版本的 .NET Fx之处&#xff0c;最后介绍了如何提高P/invoke的效率 Keywords.NET Compact Framework, Windows Mobile, P/Invoke ,data ma…...

郑州小程序开发多少钱/宁波seo营销

C中的::的作用 2018-06-08 13:47:46 一米阳光-ing 阅读数 8036更多 分类专栏&#xff1a; C/C (1)作用域限定符&#xff0c;当在类体中直接定义函数时&#xff0c;不需要在函数名字的前面加上类名&#xff0c;但是在类体外实现函数定义的时候&#xff0c;必须加上类名并且加…...

产品毕业设计网站建设/网站开发北京公司

linux 下编译捍You must specify a valid --with-apxs path原因是&#xff1a;在没有安装prel就先安装apache造成的解决方法&#xff1a;[rootapache bin]# vi /usr/local/apache/bin/apxs修改下面的第一行#!/usr/bin/perl -w## Licensed to the Apache Software Foundation (A…...

吉林有做网站的吗/能打开各种网站的搜索引擎

SSM工作原理 SSM&#xff08;SpringSpringMVCMyBatis&#xff09;框架集由Spring、MyBatis两个开源框架整合而成&#xff08;SpringMVC是Spring中的部分内容&#xff09;。常作为数据源较简单的web项目的框架。 Spring Spring就像是整个项目中装配bean的大工厂&#xff0c;在…...

做图片视频的网站有哪些问题/海外社交媒体营销

css定义第二个div. float:right或者left。 margin-top:0px 确保第二个DIV的宽度。如果宽度宽的话&#xff0c;会自动到下方的。 转载于:https://www.cnblogs.com/mr-wuxiansheng/p/10334226.html...

网站整体结构/深圳英文网站推广

AspAccess的程序在NTFS分区上常常出现这样那样的问题&#xff0c;这切都是安全权限惹的祸&#xff0c;所以要想正常调试一个网站还需要更详细的设置。1.安装IIS7右单击的桌面上的[计算机]》选择[管理]扩展[角色]展卷栏》单击[添加角色]》在[添加角色向导]对话框中选择[Web服务器…...