<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          博客專欄

          EEPW首頁(yè) > 博客 > 3D孿生場(chǎng)景搭建:模擬仿真

          3D孿生場(chǎng)景搭建:模擬仿真

          發(fā)布人:ygtu 時(shí)間:2023-10-07 來(lái)源:工程師 發(fā)布文章

          前面幾期文章介紹如何使用NSDT 編輯器 搭建3D應(yīng)用場(chǎng)景,本期介紹下孿生場(chǎng)景中一個(gè)一個(gè)非常重要的功能:模擬仿真。

          1、什么是模擬仿真

          模擬仿真是一種用于描述、分析和模擬現(xiàn)實(shí)世界中系統(tǒng)、過(guò)程或事件的計(jì)算機(jī)模型和程序。仿真通過(guò)輸入各種參數(shù)和條件,生成一系列模擬結(jié)果,以幫助用戶理解系統(tǒng)的行為、評(píng)估方案的效果,并進(jìn)行預(yù)測(cè)和決策。仿真可以應(yīng)用在多個(gè)領(lǐng)域,例如工程、醫(yī)學(xué)、交通等。與數(shù)字孿生不同的是,仿真更注重對(duì)系統(tǒng)行為的描述、分析和預(yù)測(cè),而較少?gòu)?qiáng)調(diào)實(shí)時(shí)監(jiān)測(cè)和優(yōu)化決策支持。

          2、模擬仿真的用途

          模擬仿真被用于預(yù)測(cè)新產(chǎn)品的性能、驗(yàn)證設(shè)計(jì)方案、優(yōu)化生產(chǎn)流程、培訓(xùn)人員等。它還可以用于醫(yī)學(xué)仿真,模擬手術(shù)操作以及疾病傳播過(guò)程,以提供更好的醫(yī)療決策支持。在交通領(lǐng)域,仿真可以模擬城市交通流量,優(yōu)化交通信號(hào)燈系統(tǒng),減少堵車(chē)和排放。在航空航天領(lǐng)域,仿真可以用來(lái)測(cè)試航空器的飛行性能和安全,優(yōu)化飛行路線和資源分配。此外,仿真技術(shù)還被廣泛應(yīng)用于社會(huì)經(jīng)濟(jì)領(lǐng)域,例如模擬市場(chǎng)競(jìng)爭(zhēng)、貨幣政策的影響以及公共政策的效果評(píng)估等??偠灾?,雖然數(shù)字孿生更側(cè)重于物理實(shí)體的建模和監(jiān)控,而仿真技術(shù)則更廣泛地應(yīng)用于模擬各種系統(tǒng)和環(huán)境,并為決策提供支持。

          3、如何在NSDT 編輯器 中實(shí)現(xiàn)模擬仿真

          NSDT 編輯器 作為一款實(shí)用的3D場(chǎng)景編輯工具,當(dāng)然也集成了模擬仿真的功能,模擬仿真支持接入物聯(lián)設(shè)備數(shù)據(jù)方式的方式有兩種:一種是在孿生服務(wù)平臺(tái)手動(dòng)設(shè)置模擬數(shù)據(jù);一種是直接調(diào)用http相關(guān)api接口發(fā)送物聯(lián)設(shè)備數(shù)據(jù)。下面我們具體下兩種數(shù)據(jù)接入方式。

          3.1 新增孿生體注冊(cè)用戶賬號(hào)

          訪問(wèn) NSDT.TWIN 孿生體管理平臺(tái),注冊(cè)用戶賬號(hào),操作如下圖所示:

          注冊(cè)賬號(hào)

          新建孿生體

          假如已注冊(cè)賬號(hào):test,密碼:test,登錄 NSDT.TWIN 孿生體管理平臺(tái) ,新建孿生體 ,操作如下圖所示:

          新建孿生體

          特別說(shuō)明

          項(xiàng)目名稱: 指定一個(gè)有含義的命名空間字符串,比如某個(gè)公司的****,com.ww.cn;或者任何您想給的有意義的字符串

          設(shè)備名稱: 物聯(lián)設(shè)備的唯一標(biāo)志字符串,很重要,后續(xù)可以基于此字段推送物聯(lián)設(shè)備的數(shù)據(jù)

          版本: 不用填寫(xiě)

          屬性(靜態(tài)):描述物聯(lián)設(shè)備的一些靜態(tài)屬性,key-value格式字符串,可以自定義,比如name:lmd001,place:三工區(qū),等等

          特征屬性(動(dòng)態(tài))-特征key:描述物聯(lián)設(shè)備上一些組件,比如龍門(mén)吊有天車(chē)、吊臂繩,分別命名 topcar、rope,等等

          特征屬性(動(dòng)態(tài))-特征參數(shù)集合:描述物聯(lián)設(shè)備上一個(gè)組件的一些物理量參數(shù),比如龍門(mén)吊有天車(chē)的水平距離、吊臂繩升降高度,分別命名 horizontal_distance、rise_height,默認(rèn)值類(lèi)型為數(shù)字或小數(shù),默認(rèn)給0即可。

          新建后查看列表【定義】列,就是孿生體的thingId,為com.ww.cn:lmd008

          孿生體列表

          3.2 場(chǎng)景中綁定孿生體

          使用已注冊(cè)用戶賬號(hào)登錄 NSDT編輯器 ,切換到具體場(chǎng)景,選中要接入數(shù)據(jù)驅(qū)動(dòng)的模型,切換到右下角【模型信息】tab,綁定新增孿生體的參數(shù)到模型屬性上,如下圖所示

          配置孿生參數(shù)映射

          特別說(shuō)明:

          選擇剛剛創(chuàng)建的孿生體,比如“第008號(hào)龍門(mén)吊”,將其一個(gè)特征的一個(gè)參數(shù)綁定到選定模型的一個(gè)屬性上,即完成綁定。需要說(shuō)明的是,可將任意孿生體的任意特征參數(shù),綁定到任意模型屬性上。
          3.3 接入物聯(lián)設(shè)備數(shù)據(jù)方式模擬仿真(測(cè)試使用)

          選擇【模擬仿真】,進(jìn)入仿真頁(yè)面,如下圖所示

          模擬仿真-入口

          切換到【仿真配置】tab,配置仿真相關(guān)參數(shù),如下圖所示:

          特別說(shuō)明

          頻率:設(shè)置發(fā)送數(shù)據(jù)間隔,單位秒

          仿真模式:

          --全量仿真:模擬孿生體所有特征的所有參數(shù)

          --單feature:模擬孿生體一個(gè)特征的所有參數(shù)

          --單物理量:模擬孿生體一個(gè)特征的一個(gè)參數(shù)

          配置:

          --固定值:生成參數(shù)值為固定值。

          --區(qū)間隨機(jī)值:需設(shè)置最大和最小值,在此范圍之間,隨機(jī)生成參數(shù)值。

          --循環(huán)遞增:需設(shè)置最大和最小值以及遞增最小單位量,在此范圍之間,按遞增步長(zhǎng),遞增生成參數(shù)值,然后循環(huán)往復(fù)。

          模擬仿真-配置

          配置完仿真策略后,點(diǎn)擊啟動(dòng)仿真,切換到【消息日志】可查看孿生體接收到的數(shù)據(jù)

          仿真日志和按鈕

          直接調(diào)用http相關(guān)api接口發(fā)送物聯(lián)設(shè)備數(shù)據(jù)

          此種方式需要做一定的編碼開(kāi)發(fā)。

          第一步:調(diào)用【1.2.1.1、獲取用戶訪問(wèn)token令牌】接口獲取token令牌,有access_token和refresh_token兩個(gè)令牌,access_token用于調(diào)用發(fā)送設(shè)備數(shù)據(jù)相關(guān)API,需要說(shuō)明的是,access_token令牌會(huì)過(guò)期,有效期一年,refresh_token是離線刷新token,不會(huì)過(guò)期。所以,建議在access_token令牌到期前,或者調(diào)用發(fā)送物聯(lián)設(shè)備數(shù)據(jù)API且請(qǐng)求返回401狀態(tài)碼時(shí),可使用【1.2.1.1、獲取用戶訪問(wèn)token令牌】接口傳入refresh_token,重新?lián)Q取新access_token令牌。

          第二步:調(diào)用【1.2.2、發(fā)送設(shè)備數(shù)據(jù)】相關(guān)api,我們提供三種發(fā)送設(shè)備數(shù)據(jù)的接口,請(qǐng)根據(jù)您獲取到物聯(lián)設(shè)備的數(shù)據(jù)格式,選擇一種合適的接口,傳入access_token到請(qǐng)求頭,調(diào)用接口發(fā)送數(shù)據(jù)。

          以上詳見(jiàn)參考文檔【孿生體管理API接口說(shuō)明】。

          調(diào)用SDK發(fā)送物聯(lián)設(shè)備數(shù)據(jù)

          此種方式需要做一定的編碼開(kāi)發(fā)。

          第一步:配置maven依賴

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

          第二步:實(shí)例化和配置一個(gè)新的孿生體client

          目錄下增加配置文件src/main/resources/config.properties,內(nèi)容如下:

          ### 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賬號(hào)和密碼
          pwPassword=123  ### 換成您的NSDT賬號(hào)和密碼

          要配置孿生體client實(shí)例:

          • 需要?jiǎng)?chuàng)建AuthenticationProvider和MessagingProvider的實(shí)例

          • 創(chuàng)建DisconnectedDittoClient實(shí)例

          • 通過(guò)調(diào)用client.connect()異步獲取DittoClient實(shí)例

          // 創(chuàng)建AuthenticationProvider實(shí)例
           final AuthenticationProvider<WebSocket> authenticationProvider =  AuthenticationProviders.accessToken(
           	 AccessTokenAuthenticationConfiguration.newBuilder()
           	     // getJsonWebToken()為獲取jwt令牌的方法,詳見(jiàn)demo代碼
                   .accessTokenSupplier(() -> getJsonWebToken())
                   .identifier("ditto")
                   .expiryGracePeriod(DEFAULT_EXPIRY_GRACE_PERIOD);
           );
           
           // 創(chuàng)建MessagingProvider的實(shí)例
           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);
           
           // 創(chuàng)建DisconnectedDittoClient實(shí)例
           DisconnectedDittoClient disconnectedDittoClient = DittoClients.newInstance(messagingProvider);
           
           //創(chuàng)建孿生體client
           DittoClient client = disconnectedDittoClient.connect().toCompletableFuture().get(10, TimeUnit.SECONDS);

          第三步:使用client向?qū)\生體平臺(tái)發(fā)送物聯(lián)設(shè)備數(shù)據(jù),參考示例SendTwinDataDemo.java文件中main函數(shù),有三種發(fā)送數(shù)據(jù)方式:

          // 演示給指定孿生體發(fā)送所有特征數(shù)據(jù)updateFeatures();// 演示給指定孿生體發(fā)送一個(gè)特征的所有參數(shù)的數(shù)據(jù)updateFeature();// 演示給指定孿生體發(fā)送一個(gè)特征中的一個(gè)參數(shù)的數(shù)據(jù)updateFeatureProperty();

          以上詳見(jiàn)參考文檔【孿生體管理API接口說(shuō)明】,java-sdk使用demo下載鏈接 java-sdk-demo

          3.4 瀏覽模型驅(qū)動(dòng)效果

          瀏覽效果1瀏覽效果1-2瀏覽效果2

          可以看見(jiàn)龍門(mén)吊模型在不停移動(dòng),并且模型屬性【位置-X】數(shù)據(jù)有明顯變化

          原文鏈接:3D孿生場(chǎng)景搭建:模擬仿真 (mvrlink.com)

          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



          關(guān)鍵詞: 數(shù)字孿生 3D建模

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();