周琪琪, 孫建平
(華北電力大學(xué) 控制與計(jì)算機(jī)工程學(xué)院,河北 保定 071003)
風(fēng)力發(fā)電作為一種可再生能源,其有效利用對(duì)于資源的可持續(xù)發(fā)展、環(huán)境的保護(hù)等方面有著相當(dāng)大的作用。近幾年來(lái),隨著國(guó)家對(duì)風(fēng)力發(fā)電產(chǎn)業(yè)的支持與重視,風(fēng)電場(chǎng)數(shù)量不斷增加,風(fēng)電市場(chǎng)前景越來(lái)越好[1]。但與此同時(shí),風(fēng)電人才緊缺的問(wèn)題日益突出,因此提高風(fēng)電技術(shù)人員的專業(yè)能力成為當(dāng)務(wù)之急。目前,對(duì)于風(fēng)電工作人員的培訓(xùn)還處于比較落后的階段,培訓(xùn)方式存在過(guò)于理論化,缺乏實(shí)用性,培訓(xùn)內(nèi)容單一、形式單調(diào)等缺點(diǎn)。在這樣的背景下,將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用到培訓(xùn)中,可以形成更加直觀生動(dòng)、理論聯(lián)系實(shí)際的教學(xué)方式,使學(xué)員身臨其境,從而更好的掌握相關(guān)技能[2]。虛擬現(xiàn)實(shí)技術(shù),又稱靈境技術(shù),是以沉浸性、交互性和構(gòu)想性為基本特征的計(jì)算機(jī)高級(jí)人機(jī)界面。它利用了多學(xué)科的技術(shù),例如仿真技術(shù)、計(jì)算機(jī)圖形學(xué)、接口技術(shù)和網(wǎng)絡(luò)技術(shù)等,從而使人能夠?qū)μ摂M世界進(jìn)行視覺(jué)聽(tīng)覺(jué)等方面的感知,同時(shí)還可以進(jìn)行實(shí)時(shí)交互,具有廣闊的應(yīng)用前景[3,4]。我國(guó)在虛擬現(xiàn)實(shí)技術(shù)研究方面起步較晚,但是隨著國(guó)家的重視,最近幾年取得了一些成果。陳奇朋等人將三維建模技術(shù)、虛擬場(chǎng)景搭建技術(shù)、可視化交互技術(shù)、網(wǎng)絡(luò)連接等與電力作業(yè)相結(jié)合,構(gòu)建了電力作業(yè)虛擬仿真培訓(xùn)系統(tǒng)[5];高龍等人提出了一種基于虛擬現(xiàn)實(shí)的火電站設(shè)備管理系統(tǒng),將三維設(shè)備數(shù)據(jù)庫(kù)與MIS系統(tǒng)相連,通過(guò)運(yùn)行數(shù)據(jù)實(shí)現(xiàn)設(shè)備的狀態(tài)檢修[6];楊中亞等人開(kāi)發(fā)了一套基于虛擬現(xiàn)實(shí)的輸電線路巡視仿真培訓(xùn)系統(tǒng),該系統(tǒng)采用C/S架構(gòu),使用Windows操作系統(tǒng)和SQLservers數(shù)據(jù)庫(kù),將實(shí)際工作流程與計(jì)算機(jī)軟硬件相結(jié)合[7]。在風(fēng)電領(lǐng)域,基于虛擬現(xiàn)實(shí)技術(shù)的仿真產(chǎn)品取得了一定的成績(jī)。閻光偉等人建立了集風(fēng)電機(jī)組結(jié)構(gòu)三維仿真、設(shè)備運(yùn)行仿真、虛擬人巡檢等于一體的風(fēng)電虛擬系統(tǒng)[8],任巖等人提出了基于3D虛擬現(xiàn)實(shí)技術(shù)的風(fēng)電場(chǎng)全數(shù)字化巡檢及監(jiān)測(cè)平臺(tái)的構(gòu)建方案[9]。
基于虛擬現(xiàn)實(shí)技術(shù)的風(fēng)電仿真培訓(xùn)系統(tǒng)是集風(fēng)機(jī)三維場(chǎng)景、功能仿真、遠(yuǎn)程監(jiān)控和過(guò)程檢修模擬等于一體的培訓(xùn)教學(xué)平臺(tái),并通過(guò)實(shí)時(shí)數(shù)據(jù)關(guān)聯(lián)各平臺(tái)一體,進(jìn)行實(shí)時(shí)數(shù)據(jù)交互和展示。結(jié)構(gòu)圖如圖1所示。在此系統(tǒng)中,學(xué)員可以自由漫游整個(gè)風(fēng)電場(chǎng),同時(shí)可以使用鼠標(biāo)任意選擇并對(duì)風(fēng)電機(jī)組的設(shè)備(如發(fā)電機(jī)、葉片等)進(jìn)行旋轉(zhuǎn),了解其內(nèi)部結(jié)構(gòu),學(xué)習(xí)主要設(shè)備的拆裝、檢修以及維護(hù)等;并可以進(jìn)行遠(yuǎn)程監(jiān)控,進(jìn)行不同運(yùn)行方式的仿真實(shí)驗(yàn)等。
圖1 系統(tǒng)結(jié)構(gòu)圖
功能仿真支撐平臺(tái)負(fù)責(zé)管理風(fēng)電機(jī)組仿真模型的建立和運(yùn)行,開(kāi)展完整的風(fēng)電機(jī)組及風(fēng)電場(chǎng)仿真技術(shù)研究。在系統(tǒng)中開(kāi)發(fā)了從風(fēng)能到機(jī)械能到電能轉(zhuǎn)化的完整過(guò)程各類模型及相應(yīng)控制對(duì)象的控制模型,完成設(shè)備模型仿真,如控制模型(如變流器模型、發(fā)電機(jī)模型等)、周邊電網(wǎng)模型、升壓站模型等。
三維可視仿真支撐平臺(tái)負(fù)責(zé)管理3D運(yùn)維仿真模型的開(kāi)發(fā)及運(yùn)行。在該平臺(tái)中完成了風(fēng)機(jī)主要設(shè)備三維模型建立,包括葉片模型、低速軸模型、齒輪箱模型、高速軸模型、發(fā)電機(jī)模型、控制柜模型等。
集中監(jiān)控系統(tǒng)是仿真實(shí)際風(fēng)電場(chǎng)中央監(jiān)控系統(tǒng)操作員站界面的仿真系統(tǒng),能夠控制和操作風(fēng)電機(jī)組啟動(dòng)并網(wǎng)、正常運(yùn)行、故障等過(guò)程,監(jiān)視機(jī)組各種參數(shù)的變化情況,并可形成各種運(yùn)行曲線[10]。
三維檢修培訓(xùn)平臺(tái)負(fù)責(zé)在虛擬場(chǎng)景中,對(duì)學(xué)員進(jìn)行理論、檢修等方面的培訓(xùn)。在此平臺(tái)中完成了維護(hù)庫(kù)、圖紙庫(kù)、故障庫(kù)、拆裝庫(kù)、檢修庫(kù)、工具庫(kù)及原理庫(kù)等功能模塊的開(kāi)發(fā)。
在開(kāi)發(fā)風(fēng)電虛擬現(xiàn)實(shí)仿真培訓(xùn)系統(tǒng)時(shí),首先要對(duì)虛擬場(chǎng)景進(jìn)行搭建,盡可能地模擬真實(shí)的風(fēng)電場(chǎng)。虛擬場(chǎng)景的搭建步驟如下:
(1)三維建模:三維模型是虛擬現(xiàn)實(shí)系統(tǒng)的基礎(chǔ)模型。風(fēng)力發(fā)電機(jī)組是一種大型的結(jié)構(gòu)復(fù)雜的設(shè)備,在風(fēng)機(jī)建模的過(guò)程中,為了使所建立的三維模型具有高精度的仿真立體效果,需要采集現(xiàn)場(chǎng)真實(shí)數(shù)據(jù),整理相關(guān)文檔、視頻等,同時(shí)參考大量的三視圖、實(shí)物照片、剖面圖等多種類型資料,對(duì)風(fēng)電主要設(shè)備如葉片、低速軸、齒輪箱等進(jìn)行建模[11]。建模所用軟件為3ds Max。在3ds Max中,可以從點(diǎn)、線、面等進(jìn)行模型繪制,圖形操作方便靈活。具體建模流程如圖2所示。
圖2 建模流程圖
(2)模型導(dǎo)出:將3ds Max中模型導(dǎo)出為FBX格式的文件,然后將FBX文件導(dǎo)入U(xiǎn)nity 3 d系統(tǒng)。根據(jù)實(shí)際風(fēng)電場(chǎng)場(chǎng)景,調(diào)整這些模型的地理坐標(biāo)、大小、朝向等。同時(shí)為了使系統(tǒng)場(chǎng)景明亮,更具有真實(shí)感,需要做一些模型渲染、燈光設(shè)置、場(chǎng)景調(diào)整等工作[12]。場(chǎng)景設(shè)置流程圖如圖3所示。
圖3 場(chǎng)景設(shè)置流程圖
在虛擬場(chǎng)景中,將模型與實(shí)時(shí)數(shù)據(jù)庫(kù)、歷史數(shù)據(jù)庫(kù)相鏈接,實(shí)現(xiàn)信息交互,從而使工作人員更好的監(jiān)視風(fēng)力發(fā)電機(jī)組的運(yùn)行狀態(tài)、參數(shù)信息等。圖4、圖5分別為傳動(dòng)鏈三維模型、風(fēng)電機(jī)組虛擬現(xiàn)實(shí)模型。
圖4 傳動(dòng)鏈三維模型圖
圖5 風(fēng)電機(jī)組虛擬現(xiàn)實(shí)模型圖
(3)場(chǎng)景優(yōu)化:由于風(fēng)電機(jī)組設(shè)備較多,若在場(chǎng)景中任何時(shí)刻都采用高精度顯示,會(huì)增加unity負(fù)擔(dān),因此為了優(yōu)化unity性能使其在使用過(guò)程中更加順暢,系統(tǒng)使用了攝像機(jī)分層距離剔除技術(shù)。此技術(shù)為小物體標(biāo)識(shí)層次,然后根據(jù)其距離主攝像機(jī)的距離判斷是否需要顯示[13]。
在此系統(tǒng)中,使用LODGroup組件設(shè)置了風(fēng)機(jī)設(shè)備的LOD層級(jí)及所對(duì)應(yīng)的模型,LOD:0所對(duì)應(yīng)的模型精度最高,后面的數(shù)字越大代表模型精度越低,移動(dòng)到culled插件,模型消失。同時(shí)為了使視覺(jué)效果更好,需要設(shè)置LOD精度的偏移數(shù)值,使過(guò)渡更平緩。最后根據(jù)攝像機(jī)與風(fēng)機(jī)間的距離改變透明值,從而控制機(jī)艙內(nèi)部設(shè)備的顯示。部分代碼如下:
void ChangeAlpha()
{
BoxMat.material.SetFloat(“_TestVal”, AlphaFloat);
if (Dis >=15)
{
BoxMat.gameObject.SetActive(true);
AlphaFloat -=0.03f;
if (AlphaFloat <=0)
AlphaFloat=0;
}
else if (Dis < 15)
{
AlphaFloat +=0.03f;
if (AlphaFloat >=1)
{
AlphaFloat=1;
BoxMat.gameObject.SetActive(false);
}
}
}
虛擬拆裝即在虛擬場(chǎng)景中,對(duì)設(shè)備進(jìn)行拆裝操作。風(fēng)力發(fā)電機(jī)組有很多零部件,結(jié)構(gòu)復(fù)雜,虛擬拆裝能使學(xué)員高效的學(xué)習(xí)設(shè)備相關(guān)知識(shí),提高培訓(xùn)質(zhì)量[14]。在系統(tǒng)中,學(xué)員通過(guò)鼠標(biāo)點(diǎn)擊模型,同時(shí)拖拽模型至鼠標(biāo)松開(kāi)的位置,從而實(shí)現(xiàn)拆卸。實(shí)現(xiàn)的主要步驟為:
(1)三維拾取要拆卸的模型。三維拾取的方法有很多種,本文使用鼠標(biāo)點(diǎn)擊的方法來(lái)完成拾取操作。該方法符合用戶習(xí)慣,人機(jī)交互良好。物體拾取流程如圖6所示。
通過(guò)調(diào)用Unity中的API函數(shù)進(jìn)行射線構(gòu)造以及碰撞檢測(cè),從而拾取物體。其中包括Ray(射線)、Raycasthit(碰撞信息)、Raycast(Ray,outRaycasthit)函數(shù)等[15]。
圖6 物體拾取流程
(2)在transform組件和vector3類型數(shù)組變量分別保存拆卸模型、模型當(dāng)前位置,并使用數(shù)組變量序號(hào)控制拆卸的邏輯順序[16]。
(3)為該拆卸模型添加拖拽腳本,腳本通過(guò)類型值返回,實(shí)時(shí)檢測(cè)并計(jì)算模型與點(diǎn)擊位置的偏移量,重新為模型位置賦值,最后完成拆卸。拆裝圖如圖7所示。
圖7 發(fā)電機(jī)拆裝圖
場(chǎng)景漫游在虛擬現(xiàn)實(shí)培訓(xùn)系統(tǒng)中具有重要作用。在此系統(tǒng)中,通過(guò)編寫腳本加載在攝像機(jī)上,設(shè)置鼠標(biāo)的右鍵來(lái)進(jìn)行場(chǎng)景的旋轉(zhuǎn),鍵盤的6個(gè)按鍵(Q鍵、E鍵向上、向下移動(dòng),A鍵、D鍵向左、向右移動(dòng),W鍵、S鍵向前、向后移動(dòng))進(jìn)行不同方向的移動(dòng),操作方式簡(jiǎn)單方便,可以使用戶在虛擬場(chǎng)景中進(jìn)行自由漫游[17,18]。以右鍵旋轉(zhuǎn)為例,部分程序如下:
using UnityEngine;
using System.Collections;
public class CameraController:
MonoBehaviour
{
public float sensitivityX=5f;
public float sensitivityY=5f;
void Update ()
{
if (Input.GetMouseButton(1))
{
float rotationX=Input.GetAxis(“Mouse X”) * sensitivityX;
float rotationY=Input.GetAxis(“Mouse Y”) * sensitivityY;
transform.Rotate(-rotationY, rotationX, 0);
}
}
}
在此系統(tǒng)中,設(shè)有關(guān)鍵設(shè)備的培訓(xùn),點(diǎn)擊設(shè)備會(huì)彈出圖片,學(xué)員可以通過(guò)圖片的學(xué)習(xí)了解設(shè)備結(jié)構(gòu)以及工作原理。為了能更好的實(shí)現(xiàn)人機(jī)交互,學(xué)員可以滑動(dòng)鼠標(biāo)滾輪控制圖片大小[19]。設(shè)定圖片放大縮小的范圍,利用unity中的API函數(shù)實(shí)現(xiàn)滾輪對(duì)圖片放大或縮小的實(shí)時(shí)控制,當(dāng)向后滾動(dòng)時(shí),縮小圖片,直到最小設(shè)定值;當(dāng)向前滾動(dòng)時(shí),放大圖片,直到最大設(shè)定值。
在控制腳本調(diào)用了響應(yīng)函數(shù)(Input.GetAxis(
(“Mouse ScrollWheel”)),通過(guò)float類型值返回,向前滾是返回正數(shù),向后滾是返回負(fù)數(shù)。向前滾動(dòng)代碼如下:
if (Input.GetAxis(“Mouse ScrollWheel”) > 0)
{
if(image.transform.parent.localScale.x < 5
image.transform.parent.localScale=new Vector3
(image.transform.parent.localScale.x + 0.2f, image.transform.parent.localScale.y + 0.2f, image.transform.parent.localScale.z + 0.2f);
if (image.transform.parent.localScale.x >=5)
image.transform.parent.localScale=new
Vector3(5, 5, 5);
}
(1)學(xué)習(xí)功能:在虛擬系統(tǒng)中有維護(hù)庫(kù)、圖紙庫(kù)、故障庫(kù)、拆裝庫(kù)、檢修庫(kù)、工具庫(kù)及原理庫(kù)等功能模塊。用戶在虛擬場(chǎng)景中,可以學(xué)習(xí)設(shè)備各主要零部件的基礎(chǔ)理論知識(shí)、結(jié)構(gòu)構(gòu)造和電氣原理圖(如塔基柜、塔筒)等,掌握設(shè)備的拆裝、檢修、維護(hù)等,同時(shí)可以了解常用維護(hù)工具,使用戶掌握基本維修技能[20]。
(2)實(shí)時(shí)數(shù)據(jù)監(jiān)測(cè)功能:與實(shí)時(shí)數(shù)據(jù)集成,在三維場(chǎng)景下觀看風(fēng)機(jī)實(shí)時(shí)狀態(tài)參數(shù),如功率大小、風(fēng)速大小、無(wú)功功率數(shù)值、實(shí)際風(fēng)向等。
(3)仿真功能: 能針對(duì)用戶模擬檢修完成后,通過(guò)觀察設(shè)備運(yùn)行情況,來(lái)檢查檢修方法是否適當(dāng)。
(4)交互功能:用戶可以在虛擬環(huán)境中實(shí)現(xiàn)交互操作,包括放大、縮小、旋轉(zhuǎn)、漫游等。
(5)考核功能:能夠進(jìn)行理論和檢修操作考核,用戶可以檢驗(yàn)學(xué)習(xí)效果,鞏固知識(shí)。
(6)管理功能:能夠?qū)崿F(xiàn)系統(tǒng)維護(hù)管理、題庫(kù)管理、權(quán)限管理等功能。
本文通過(guò)完成對(duì)系統(tǒng)架構(gòu)的設(shè)計(jì)、虛擬場(chǎng)景搭建、虛擬拆裝、交互控制等問(wèn)題的處理,系統(tǒng)終于搭建成型?;谔摂M現(xiàn)實(shí)技術(shù)的風(fēng)電仿真培訓(xùn)系統(tǒng)做到了將虛擬與實(shí)際結(jié)合,讓用戶在虛擬中就能更好的掌握風(fēng)電知識(shí)。根據(jù)80后、90后員工的特點(diǎn),在培訓(xùn)形式上采取更為生動(dòng)、直觀的三維模式,引入了類似游戲的場(chǎng)景設(shè)計(jì)理念,提高培訓(xùn)的趣味性,變被動(dòng)受訓(xùn)為主動(dòng)學(xué)習(xí),從而能有效的提高培訓(xùn)效果。同時(shí)可將本系統(tǒng)推廣到一些院校進(jìn)行教學(xué)合作,把該成果用于高等院校的學(xué)生學(xué)習(xí),具有較好的推廣價(jià)值。