3D孿生場景搭建:模擬仿真
前面幾期文章介紹如何使用NSDT 編輯器 搭建3D應用場景,本期介紹下孿生場景中一個一個非常重要的功能:模擬仿真。
1、什么是模擬仿真模擬仿真是一種用于描述、分析和模擬現實世界中系統(tǒng)、過程或事件的計算機模型和程序。仿真通過輸入各種參數和條件,生成一系列模擬結果,以幫助用戶理解系統(tǒng)的行為、評估方案的效果,并進行預測和決策。仿真可以應用在多個領域,例如工程、醫(yī)學、交通等。與數字孿生不同的是,仿真更注重對系統(tǒng)行為的描述、分析和預測,而較少強調實時監(jiān)測和優(yōu)化決策支持。
2、模擬仿真的用途模擬仿真被用于預測新產品的性能、驗證設計方案、優(yōu)化生產流程、培訓人員等。它還可以用于醫(yī)學仿真,模擬手術操作以及疾病傳播過程,以提供更好的醫(yī)療決策支持。在交通領域,仿真可以模擬城市交通流量,優(yōu)化交通信號燈系統(tǒng),減少堵車和排放。在航空航天領域,仿真可以用來測試航空器的飛行性能和安全,優(yōu)化飛行路線和資源分配。此外,仿真技術還被廣泛應用于社會經濟領域,例如模擬市場競爭、貨幣政策的影響以及公共政策的效果評估等??偠灾?,雖然數字孿生更側重于物理實體的建模和監(jiān)控,而仿真技術則更廣泛地應用于模擬各種系統(tǒng)和環(huán)境,并為決策提供支持。
3、如何在NSDT 編輯器 中實現模擬仿真NSDT 編輯器 作為一款實用的3D場景編輯工具,當然也集成了模擬仿真的功能,模擬仿真支持接入物聯設備數據方式的方式有兩種:一種是在孿生服務平臺手動設置模擬數據;一種是直接調用http相關api接口發(fā)送物聯設備數據。下面我們具體下兩種數據接入方式。
3.1 新增孿生體注冊用戶賬號訪問 NSDT.TWIN 孿生體管理平臺,注冊用戶賬號,操作如下圖所示:
新建孿生體假如已注冊賬號:test,密碼:test,登錄 NSDT.TWIN 孿生體管理平臺 ,新建孿生體 ,操作如下圖所示:
特別說明
項目名稱: 指定一個有含義的命名空間字符串,比如某個公司的****,com.ww.cn;或者任何您想給的有意義的字符串
設備名稱: 物聯設備的唯一標志字符串,很重要,后續(xù)可以基于此字段推送物聯設備的數據
版本: 不用填寫
屬性(靜態(tài)):描述物聯設備的一些靜態(tài)屬性,key-value格式字符串,可以自定義,比如name:lmd001,place:三工區(qū),等等
特征屬性(動態(tài))-特征key:描述物聯設備上一些組件,比如龍門吊有天車、吊臂繩,分別命名 topcar、rope,等等
特征屬性(動態(tài))-特征參數集合:描述物聯設備上一個組件的一些物理量參數,比如龍門吊有天車的水平距離、吊臂繩升降高度,分別命名 horizontal_distance、rise_height,默認值類型為數字或小數,默認給0即可。
新建后查看列表【定義】列,就是孿生體的thingId,為com.ww.cn:lmd008
3.2 場景中綁定孿生體使用已注冊用戶賬號登錄 NSDT編輯器 ,切換到具體場景,選中要接入數據驅動的模型,切換到右下角【模型信息】tab,綁定新增孿生體的參數到模型屬性上,如下圖所示
特別說明:3.3 接入物聯設備數據方式模擬仿真(測試使用)
選擇剛剛創(chuàng)建的孿生體,比如“第008號龍門吊”,將其一個特征的一個參數綁定到選定模型的一個屬性上,即完成綁定。需要說明的是,可將任意孿生體的任意特征參數,綁定到任意模型屬性上。
選擇【模擬仿真】,進入仿真頁面,如下圖所示
切換到【仿真配置】tab,配置仿真相關參數,如下圖所示:
特別說明
頻率:設置發(fā)送數據間隔,單位秒
仿真模式:
--全量仿真:模擬孿生體所有特征的所有參數
--單feature:模擬孿生體一個特征的所有參數
--單物理量:模擬孿生體一個特征的一個參數
配置:
--固定值:生成參數值為固定值。
--區(qū)間隨機值:需設置最大和最小值,在此范圍之間,隨機生成參數值。
--循環(huán)遞增:需設置最大和最小值以及遞增最小單位量,在此范圍之間,按遞增步長,遞增生成參數值,然后循環(huán)往復。
配置完仿真策略后,點擊啟動仿真,切換到【消息日志】可查看孿生體接收到的數據
直接調用http相關api接口發(fā)送物聯設備數據此種方式需要做一定的編碼開發(fā)。
第一步:調用【1.2.1.1、獲取用戶訪問token令牌】接口獲取token令牌,有access_token和refresh_token兩個令牌,access_token用于調用發(fā)送設備數據相關API,需要說明的是,access_token令牌會過期,有效期一年,refresh_token是離線刷新token,不會過期。所以,建議在access_token令牌到期前,或者調用發(fā)送物聯設備數據API且請求返回401狀態(tài)碼時,可使用【1.2.1.1、獲取用戶訪問token令牌】接口傳入refresh_token,重新換取新access_token令牌。
第二步:調用【1.2.2、發(fā)送設備數據】相關api,我們提供三種發(fā)送設備數據的接口,請根據您獲取到物聯設備的數據格式,選擇一種合適的接口,傳入access_token到請求頭,調用接口發(fā)送數據。
以上詳見參考文檔【孿生體管理API接口說明】。
調用SDK發(fā)送物聯設備數據此種方式需要做一定的編碼開發(fā)。
第一步:配置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實例:
需要創(chuàng)建AuthenticationProvider和MessagingProvider的實例
創(chuàng)建DisconnectedDittoClient實例
通過調用client.connect()異步獲取DittoClient實例
// 創(chuàng)建AuthenticationProvider實例 final AuthenticationProvider<WebSocket> authenticationProvider = AuthenticationProviders.accessToken( AccessTokenAuthenticationConfiguration.newBuilder() // getJsonWebToken()為獲取jwt令牌的方法,詳見demo代碼 .accessTokenSupplier(() -> getJsonWebToken()) .identifier("ditto") .expiryGracePeriod(DEFAULT_EXPIRY_GRACE_PERIOD); ); // 創(chuàng)建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); // 創(chuàng)建DisconnectedDittoClient實例 DisconnectedDittoClient disconnectedDittoClient = DittoClients.newInstance(messagingProvider); //創(chuàng)建孿生體client DittoClient client = disconnectedDittoClient.connect().toCompletableFuture().get(10, TimeUnit.SECONDS);
第三步:使用client向孿生體平臺發(fā)送物聯設備數據,參考示例SendTwinDataDemo.java文件中main函數,有三種發(fā)送數據方式:
// 演示給指定孿生體發(fā)送所有特征數據updateFeatures();// 演示給指定孿生體發(fā)送一個特征的所有參數的數據updateFeature();// 演示給指定孿生體發(fā)送一個特征中的一個參數的數據updateFeatureProperty();
以上詳見參考文檔【孿生體管理API接口說明】,java-sdk使用demo下載鏈接 java-sdk-demo
3.4 瀏覽模型驅動效果可以看見龍門吊模型在不停移動,并且模型屬性【位置-X】數據有明顯變化
原文鏈接:3D孿生場景搭建:模擬仿真 (mvrlink.com)
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。