谷學靜,張彥鵬,郭宇承,劉海望
(1. 華北理工大學 電氣工程學院,河北 唐山 063210;2. 唐山市數(shù)字媒體工程技術(shù)研究中心,河北 唐山 063000;3. 華北理工大學 機械工程學院,河北 唐山 063210;4. 華北理工大學輕工學院 電氣信息學院,河北 唐山 063000)
連鑄工藝是鋼鐵企業(yè)十分重要的生產(chǎn)工藝,該工藝過程是將成分合格的鋼水連續(xù)鑄成鋼坯。連鑄工藝在縮短生產(chǎn)時間、節(jié)約能源以及提高鋼坯質(zhì)量等方面具有顯著的優(yōu)勢。2017 年全世界采用連鑄工藝生產(chǎn)的鋼坯已占到總產(chǎn)鋼量的 90%[1]。高校培養(yǎng)的連鑄技術(shù)人才不僅需要理論知識,更需要對連鑄生產(chǎn)過程的實際認識。然而連鑄生產(chǎn)的實踐教學往往受到時間、經(jīng)費、安全等[2]因素的影響。本文以連鑄車間為對象,將連鑄生產(chǎn)過程與虛擬現(xiàn)實技術(shù)相結(jié)合,通過 3ds Max 軟件、Unity3D 引擎搭建連鑄生產(chǎn)虛擬仿真系統(tǒng),以滿足連鑄生產(chǎn)實踐教學的需求[3]。
虛擬現(xiàn)實技術(shù)是通過搭建高度逼真的三維立體環(huán)境,實現(xiàn)以虛代實、人機交互的用戶體驗。連鑄生產(chǎn)虛擬仿真系統(tǒng)以某鋼鐵企業(yè)的連鑄車間為對象,結(jié)合實際教學以及培訓(xùn)過程中的關(guān)鍵問題進行設(shè)計,是一個自主性高且具有沉浸感[4]、交互性、想象性的學習平臺,有助于提高學習者對于連鑄工藝的認知水平,加快學習者對操作技能的掌握。
連鑄生產(chǎn)工藝的實踐教學遵循循序漸進的原則,將連鑄生產(chǎn)虛擬仿真教學過程分為認知篇、實踐篇、診斷篇、仿真篇等4 個篇章。
認知篇:通過三維模型動畫展示以及音頻講解和用戶界面(UI),使學習者能夠清晰、直觀地認識連鑄的生產(chǎn)設(shè)備和工藝流程。
實踐篇:通過對連鑄生產(chǎn)操作的虛擬化設(shè)計,以虛實結(jié)合的控制形式實現(xiàn)連鑄生產(chǎn)過程的規(guī)范操作實踐訓(xùn)練。
診斷篇:通過問答的方式,隨機考查學習者對連鑄生產(chǎn)中常見問題的診斷和處理能力。
仿真篇:利用Matlab 軟件對連鑄生產(chǎn)工藝參數(shù)進行仿真設(shè)置,使學習者深入了解各工藝參數(shù)對連鑄生產(chǎn)過程的影響。
根據(jù)系統(tǒng)的功能和篇目,連鑄生產(chǎn)虛擬仿真系統(tǒng)的開發(fā)過程分為以下5 個步驟:
(1)收集連鑄車間的各種素材,包括設(shè)備和場景圖片、設(shè)備運行的視頻、車間布置圖紙資料等,通過對連鑄生產(chǎn)中的素材整理分析,對連鑄生產(chǎn)虛擬仿真系統(tǒng)的環(huán)境模型和工藝仿真進行設(shè)計;
(2)對連鑄車間環(huán)境以及主體設(shè)備和輔助設(shè)備等素材使用3ds Max 進行三維建模,通過模型的搭建實現(xiàn)虛擬連鑄車間的三維仿真,利用3ds Max 的動畫制作功能對連鑄生產(chǎn)過程進行表達;
(3)將3ds Max 軟件中的資源導(dǎo)入Unity3D 引擎中,通過Unity3D 對虛擬現(xiàn)實的內(nèi)容進行開發(fā),使用編程語言C#編寫相關(guān)運行程序,實現(xiàn)系統(tǒng)中設(shè)備運行仿真和人機交互;
(4)使用Visual Studio 開發(fā)工具創(chuàng)建主控程序及Winform 控件,通過 Winform 控件實現(xiàn) Matlab 數(shù)學軟件與 Unity3D 引擎結(jié)合,實現(xiàn)虛擬場景中的數(shù)據(jù)仿真;
(5)添加外部控制系統(tǒng),增加連鑄仿真系統(tǒng)的控制方式,調(diào)試優(yōu)化后對系統(tǒng)進行集成發(fā)布。
系統(tǒng)的開發(fā)過程如圖1 所示。
虛擬連鑄車間環(huán)境主要是由虛擬場景的設(shè)計與建模實現(xiàn)的,構(gòu)建虛擬環(huán)境的重點是連鑄設(shè)備的三維模型設(shè)計與制作。連鑄車間所用的設(shè)備通??梢苑譃橹黧w設(shè)備及輔助設(shè)備[5]。
圖1 系統(tǒng)開發(fā)過程
主體設(shè)備包括:鋼包回轉(zhuǎn)臺、中間罐及其運載小車、結(jié)晶器及其振動裝置、二次冷卻支導(dǎo)裝置、拉坯矯直設(shè)備、引錠桿、脫錠及引錠桿存放裝置、切割設(shè)備。
輔助設(shè)備包括:(1)出坯及精整設(shè)備——輥道、拉(推)鋼機、翻鋼機、火焰清理機;(2)工藝性設(shè)備——中間罐烘烤裝置、吹氬裝置、脫氣裝置、保護渣供給與結(jié)晶器潤滑裝置、電磁攪拌裝置;(3)自動控制和測量儀表——過程控制計算機、測溫、測壓、側(cè)重、測長等儀表。
在保證視覺效果的前提下,使用建模技巧優(yōu)化場景效果是三維場景制作的重點之一。
在使用三維模型搭建虛擬場景時,需要按照實際場景和教學需求對虛擬場景中各個模型進行結(jié)構(gòu)分析,然后用3ds Max 軟件制作虛擬場景中的模型。
制作3ds Max 模型,需要在保證模型真實度的情況下對模型進行優(yōu)化,主要是對場景中的模型的大小和形狀進行處理,其難點在于減少模型的點面結(jié)構(gòu)。在模型制作過程中,可以使用多種方法(例如剔除不可見的面、以拉伸替代堆砌、合理切分模型等)對點面進行精簡,然后通過材質(zhì)處理增強模型的逼真度。材質(zhì)處理主要是展UV 貼圖以及烘培。3ds Max 中的模型 UV 貼圖的處理需要使用 Photoshop 進行細節(jié)勾畫;烘焙是指植入燈光效果后對場景進行渲染。烘焙渲染既增加虛擬場景真實感,又減少了后期場景中的實時光照,從而達到節(jié)約系統(tǒng)資源的效果。為了方便系統(tǒng)的搭建,建模的后期處理采用了組場景和動畫制作同步進行的方式完成連鑄場景的整體布局和設(shè)備模型動畫的制作[6]。三維模型示例如圖2 所示。
圖2 系統(tǒng)中三維模型
將 3ds Max 中創(chuàng)建好的模型以 FBX 格式導(dǎo)入Unity3D 中,使用Unity3D 引擎對連鑄生產(chǎn)虛擬仿真系統(tǒng)4 個篇目的內(nèi)容進行開發(fā)。認知篇與診斷篇的開發(fā)方式比較相近,在開發(fā)過程中使用了大量的UI 元素;實踐篇的開發(fā)重點在于腳本的編寫,通過腳本邏輯實現(xiàn)系統(tǒng)的漫游、虛擬操作以及連鑄生產(chǎn)過程的仿真;仿真篇的開發(fā)則需要將 Matlab 引入連鑄系統(tǒng)進行參數(shù)的仿真。本文僅描述實踐篇和仿真篇的開發(fā)過程。
3.1.1 交互功能的開發(fā)
連鑄生產(chǎn)虛擬仿真系統(tǒng)交互功能的開發(fā),主要包括控制場景中漫游功能和操作臺控制功能的設(shè)計與實現(xiàn)。虛擬漫游是指直接或間接控制虛擬攝像機觀察虛擬場景的信息。虛擬攝像機是跟隨目標物體而移動的,通過差值計算對攝像機角度進行調(diào)節(jié),相關(guān)代碼(以x軸為例)為:
tempXAngle = Mathf.LerpAngle (fromXAngle, toXAngle,deltaChangeValue);
當操作者點擊場景中虛擬操作臺上的按鈕或旋鈕時,系統(tǒng)會反饋給操作者操作信號,并在反饋過程中改變按鈕或旋鈕的亮度、發(fā)出聲音效果。通過對交互過程進行優(yōu)化,增加了虛擬操作過程的真實性,有助于學習者對仿真虛擬系統(tǒng)的操作。在交互時,系統(tǒng)根據(jù)操作臺的信號給出虛擬連鑄生產(chǎn)的動作指令,通過系統(tǒng)中模型在動作指令下進行生產(chǎn)過程的三維仿真。
3.1.2 連鑄生產(chǎn)過程的三維仿真開發(fā)
連鑄生產(chǎn)過程是一個多步驟操作的復(fù)雜生產(chǎn)過程,連鑄生產(chǎn)虛擬仿真系統(tǒng)涉及多道生產(chǎn)工序。按照連鑄生產(chǎn)工藝,鋼水首先經(jīng)冷卻裝置凝固為鑄坯,然后鑄坯經(jīng)定尺切割和精整操作,生成方便鋼鐵生產(chǎn)輸出和存放的鑄坯產(chǎn)品[7]。根據(jù)連鑄生產(chǎn)的操作實踐,本系統(tǒng)的實踐篇包括連鑄設(shè)備及操作工藝中的準備工作操作、澆注操作、鑄坯切割和精整操作等。
以鑄坯切割工藝過程為例,火焰切割機定尺切割過程的仿真可以使用 Unity3D 設(shè)置動畫效果實現(xiàn)[8]。但是,由于動畫不滿足實踐操作實時性的特點,因此本過程采用了實時監(jiān)測的方法,使用Unity3D 組件和代碼進行開發(fā)。整個過程包括:使用粒子系統(tǒng)對火焰、水流、氣體的模擬;通過調(diào)整模型的 Transform 組件實現(xiàn)切割設(shè)備的移動[9];使用 Unity 內(nèi)置的 NVIDIA PhysX 物理引擎檢測鑄坯的切割過程。
3.1.3 鑄坯的生成
為仿真鑄坯的實時生成過程,可以考慮以一定的速度增加模型的數(shù)量。但增加模型的數(shù)量會增加系統(tǒng)的運行負荷,并且在一定程度上對虛擬拉坯的速度有所限制,不利于系統(tǒng)的穩(wěn)定運行和仿真。本系統(tǒng)對鑄坯生成的過程采用模型變換的方式進行仿真,即通過幀調(diào)用的方法,首先增加鑄坯模型沿Z軸的尺寸系數(shù),然后調(diào)整鑄坯的位置,保證鑄坯的生成位置不變,從而實現(xiàn)鑄坯從鑄機中連續(xù)被拉出來的仿真效果,避免了增加模型導(dǎo)致的負載增大的問題,并且可以根據(jù)培訓(xùn)需求調(diào)節(jié)虛擬拉坯的速度。
程序運行時,通過調(diào)用MonoBehaviour 類中的幀調(diào)用函數(shù) Update(),對鑄坯模型的生成進行控制的相關(guān)代碼如下:
transform.localScale+ = new Vector3(0, 0, change *Time.deltaTime*c);
transform.Translate (Vector3.forward * change/2 *Time.deltaTime*c);
3.1.4 鑄坯的準備
切割鑄坯的過程是在鑄坯的側(cè)面先切開一個小缺口,然后缺口逐漸擴大直至鑄坯完全切斷。在仿真系統(tǒng)中,需要在虛擬切割前對鑄坯模型進行細化,即在保證整體鑄坯橫向尺寸不變的情況下將鑄坯分為數(shù)量足夠多的條形子物體,通過條形子物體的逐個斷開實現(xiàn)鑄坯的切割過程。采用生成預(yù)制體(Prefab)的形式,先把整塊鑄坯在x軸上分解為91 條(piece),并將每一條用數(shù)組的形式進行編碼,按順序可以從piece[0]到 piece[90]。
3.1.5 鑄坯的切割
設(shè)鑄坯沿Z軸正向拉出(Unity3D 場景中的世界坐標系為左手坐標系),虛擬連鑄生產(chǎn)中鑄坯的切割過程主要有2 種:(1)切割槍運動方向與鑄坯運動方向垂直進行切割(見圖3);(2)切割槍運動方向與鑄坯運動方向平行進行切割(見圖4)。在圖3 所示鑄坯模型中,a段表示切割下的鑄坯長度,b段表示鑄坯的切口長度,c段表示切割后的鑄坯長度,S1 為坯頭位置,S2 為切下的鑄坯(a)的尾端,S3 為切割位置,S4 為切割后的鑄坯(c)的前端。
圖3 第一種切割過程
圖4 第二種切割過程
根據(jù)圖 3 對虛擬切割的相關(guān)參數(shù)進行求解,以確定切割過程中三維模型的變化。已知條件包括切割位置 S3 以及切口長度(b),未切割鑄坯的位置以及大小。
虛擬切割是根據(jù)切割位置的變化,改變模型的大小以及位置來表現(xiàn)切割的效果。第一種切割情況進行切割時:相關(guān)代碼如下:
以上兩種切割方法可以實現(xiàn)連鑄生產(chǎn)過程中對鑄坯切割的仿真。
在連鑄生產(chǎn)過程中應(yīng)用到很多監(jiān)測設(shè)備和計算終端,通過對連鑄生產(chǎn)中的數(shù)據(jù)采集實現(xiàn)對生產(chǎn)過程的控制。在連鑄生產(chǎn)虛擬仿真系統(tǒng)中,仿真篇的作用是通過 Matlab 數(shù)據(jù)仿真[10]讓學習者能夠?qū)B鑄生產(chǎn)有深入的理解。仿真篇的開發(fā)難點在于 Matlab 與Unity3D 的信息傳輸。本系統(tǒng)使用 Winform 控件和UnityWebPlayer 插件實現(xiàn)了兩者之間的信息交流(見圖5)。其過程是:(1)在Visual Studio 中創(chuàng)建和編輯Winform(窗口應(yīng)用程序);(2)Winform 中引用 Matlab相關(guān)動態(tài)鏈接庫(.dll)并在腳本編寫時引用相應(yīng)的命名空間,實現(xiàn) C#代碼對 Matlab 函數(shù)的調(diào)用;(3)安裝UnityWebPlayer,并在 Unity3D 的開發(fā)程序中引入UnityWebPlayer 的動態(tài)鏈接庫。
圖 5 Winform 與Unity3D 通信過程
根據(jù)實際連鑄生產(chǎn)中通過控制臺控制連鑄生產(chǎn)和 PLC 對連鑄電氣系統(tǒng)的控制方式[11],本系統(tǒng)開發(fā)了外部控制系統(tǒng)對仿真控制過程進行優(yōu)化。通過外接真實的操作臺以及 PLC 和數(shù)據(jù)轉(zhuǎn)接箱的控制形式,實現(xiàn)了虛擬仿真的人機交互[12],實現(xiàn)了虛實結(jié)合的控制仿真系統(tǒng)。系統(tǒng)加入外部控制后的通信過程如圖 6所示。
圖6 系統(tǒng)的通信過程
連鑄生產(chǎn)虛擬仿真系統(tǒng)的開發(fā)過程包括內(nèi)容設(shè)計、虛擬場景的搭建和系統(tǒng)運行的腳本編寫,以及在Visual Studio 開發(fā)工具中集成調(diào)試并發(fā)布。利用三維建模技術(shù)、Unity3D 引擎、Visual Studio 開發(fā)工具、Matlab 軟件等實現(xiàn)了系統(tǒng)集成與發(fā)布。該系統(tǒng)可以進行連鑄生產(chǎn)的全過程模擬,為學習連鑄生產(chǎn)設(shè)備、環(huán)境、工藝知識和實操提供平臺支持。該系統(tǒng)的開發(fā)過程也可為其他虛擬仿真系統(tǒng)的構(gòu)建提供參考。