朱泓光,宋永強,劉議聰
(綿陽市維博電子有限責任公司,綿陽 621000)
基于Unity3D的裝卸料機運動控制仿真
朱泓光,宋永強,劉議聰
(綿陽市維博電子有限責任公司,綿陽 621000)
面對日益增長的核電人才需求,以及普通大眾對核電發(fā)展的反感,本文采用當下很成熟流行的游戲開發(fā)引擎Unity3D,以某核電站裝卸料機為仿真原型,對其運動控制程序進行了分析歸納,并繪制了主要運動機構的控制流程圖,同時選擇了橋架、小車、提升等機構,利用3DMAX創(chuàng)建三維模型,利用Unity3D強大的物理引擎開發(fā)了裝卸料機仿真互動游戲。采用互動游戲的方式,有利于核電培訓方式的多元化,有助于普通大眾了解核電裝卸料機的運行。
仿真;虛擬現(xiàn)實;Unity3D;裝卸料機
核電廠內(nèi)核燃料組件裝卸、轉運和貯存系統(tǒng)屬于核輔助系統(tǒng),包括新燃料組件入堆前的接收、檢查、貯存,拆卸和裝封反應堆,堆芯換料以及乏燃料組件的運輸、貯存和發(fā)送等一系列工藝操作。裝卸料機作島內(nèi)換料的關鍵設備,主要負責堆芯燃料組件的裝換作業(yè),是核電廠換料大修關鍵路徑上的一個重要項目[1]。雖然裝卸料機沒有直接參與參與核電廠的日常運行與安全活動,但間接地影響核電廠的安全可靠性,是核電廠的重要設備之一[2]。根據(jù)世界核能協(xié)會的數(shù)據(jù),截止2015年底,全球在運營核電數(shù)439座,在建及擬建總量184座。即便是每座僅有一個反應堆,那也有439個裝卸料機,這就需要更多的核電專業(yè)人才。在國內(nèi),不少大眾一說核電就覺得有污染有輻射,更有甚者,到核電廠鬧事以阻礙核電正常運行。所以需要一個簡單而接地氣的方式,讓普通大眾去了解核電。
在核電站現(xiàn)場,采用了實際控制室環(huán)境高度逼真的培訓模擬機,這樣不僅可用來培訓,亦可為后期優(yōu)化做邏輯驗證[3]。但是價格不菲,不適合一般情況下的功能演示與高校培訓。
Unity 3D是由 Unity Technologies 開發(fā)的讓玩家輕松創(chuàng)建諸如H維視頻游戲、建筑可視化、實時H維動畫、腳本后臺編輯綁定等類型互動內(nèi)容的多平臺綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。Unity 3D是一種涉及到多種不同領域的跨平臺的三維虛擬現(xiàn)實游戲平臺,是一款易于使用的產(chǎn)品,用戶界面簡單,編輯器上手容易,支持多腳本的語言,并具有強大的物理引擎。Unity 3D又可方便的在Windows 、IOS、 安卓、WEB、等平臺發(fā)布,跨平臺優(yōu)勢明顯。另外,Unity3D本身的使用無需昂貴的授權費。鑒于Unity3D的以上優(yōu)勢,本文使用它作為開發(fā)工具,實現(xiàn)裝卸料機的運動仿真,可方便的用于功能展示。同時利用多平臺優(yōu)勢、以游戲互動的方式,讓大眾更加直觀的了解裝卸料設備的工作方式、同時也可用于高校的培訓。由于Unity3D強大可擴展性能,更可添加其他一些列外圍設備,比如kinect 或者 Oculus Rift虛擬頭盔,可大大增加互動的代入感[4]。
利用國外某核電站的裝卸料機作為分析對象,梳理了其控制程序的相應模塊(圖1),并繪制了執(zhí)行機構的控制流程圖(圖2、圖3、圖4),并利用3DMAX建立了3D模型。同時,根據(jù)裝卸料機的運動控制邏輯,選擇部分控制邏輯作為仿真重點(如表1所示),采用C#做為腳本語言,編寫了相應的控制邏輯模塊。從而實現(xiàn)了對裝卸料機運動控制的仿真。便于運動畫面顯示,當機構運動時,UI界面將跟隨。
由于Unity 3D本身的建模能力不足,我們采用第三方工具3d max建模, 然后處理好材質(zhì)、貼圖,并保存為FBX格式文件。將FBX模型文件導入Unity3D中,進行仿真交互的開發(fā),具體包括UI交互界面、碰撞檢測腳本、模型運動控制腳本、攝像機視野腳本等等。腳本調(diào)試好后,即可打包發(fā)布為WINDOWS平臺的可執(zhí)行文件。
圖1 PLC程序模塊
圖2 橋架工作流程圖
圖3 提升工作流程圖
圖4 抓具工作流程圖
2.2.1 模型導入Unity3D
在3DMAX中搭建好模型后,還需要設置材質(zhì)的漫射、反射、光澤度、折射、BRDF等參數(shù),注意只有standard(標準材質(zhì))和Multi/Sub-Objiect(多維/子物體材質(zhì))被Unity3D軟件所支持。同時旋轉調(diào)整好軸心,并將模型居中。然后,將模型導出為FBX格式,導出時需要注意勾選嵌入的媒體,如果不勾選,在Unity3D中貼圖將無法導入。單位最好設置為毫米,這樣在Unity3D中1個單位就是1米,默認的inch會使導出不成比例。并將FBX文件和貼圖、材質(zhì)文件一起移至Unity3D項目的Assets文件夾中。模型導入Unity3D后,會發(fā)現(xiàn)材質(zhì)沒有了,不過Unity3D已經(jīng)將導入的材質(zhì)生成材質(zhì)球,我們需要利用material類從新設置材質(zhì),另外還可以利用它來設置自定義shader著色器,紋理貼圖,顏色,材質(zhì)通道等信息。
表1 仿真運動控制腳本模塊
圖5 導入Unity3D的3D模型
2.2.2 碰撞檢測
裝卸料機有很多限位開關??傮w分為兩種功能,一是觸發(fā)后減速,二是觸發(fā)后停止。在Unity 3D中常見的碰撞檢測SphereCollider,WheelCollider,BoxCollider和Mesh-Collider等,我們使用BoxCollider即可。另外在在仿真中,兩個GameObject發(fā)生碰撞,要想檢測到觸發(fā)信息,最少要有一個剛體碰撞器并且勾選了IsTrigger復選框,另一個最少要有一個碰撞器組件,此時檢測碰撞的腳本必須附加在那個帶有剛體的觸發(fā)器上。例如我們將大車對應位置設置好4個 小盒子,以模擬減速限位開關和停止限位開關。將小車設置為剛體,并勾選IsTrigger。在腳本中,利用MonoBehaviour.OnTriggerEnter() 和 MonoBehaviour.OnCollisionEnter()等接口函數(shù)實現(xiàn)觸發(fā)信息和碰撞信息的檢測。
2.2.3 運動控制
Unity3D有多種實現(xiàn)物體運動的方式,本文直接采用了transform.Translate,該方法可以將物體從當前位置,移動到指定位置,并且可以選擇參照的坐標系。當需要進行坐標系轉換時,可以考慮使用該方法以省去轉換坐標系的步驟。首先通過邏輯流程圖判斷是運動條件是否滿足,然后利用transform.Translate實現(xiàn)運動。其中大車的最大速度為0.2m/s大車運動部分代碼如下:
2.2.4 交互界面
UI界面的制作設計采用NGUI 插件進行開發(fā),NGUI 提供強大的UI 系統(tǒng)和事件通知框架,能夠方便地實現(xiàn)2D、3D 界面開發(fā)。默認情況下W、S、A、D 控制大小車、I,k利用前、后方向鍵控制提升機構。通過腳本自定義按鍵功能,按鍵的消息響應在MonoBehavior 的派生類的Update( )函數(shù)中實現(xiàn)。UI界面跟隨機構運動的實現(xiàn)方式是首先獲得機構在屏幕上的坐標,然后根據(jù)位置做對應移動。利用Camera. WorldToScreenPoint和Camera. ScreenToWorldPoint別將世界坐標和屏幕坐標相互轉換,部分代碼如下:
文章分析了實際項目中的裝卸料機控制程序框架,并梳理了執(zhí)行機構運動流程圖。通過3DMAX建立了3D模型并利用Unity3D完成了裝卸料機大車、小車、提升等機構的運動仿真,結果表明,采用游戲互動的方式有利于高校培訓及核電科普在大眾中傳播。
圖6 仿真系統(tǒng)的開始界面
[1] 郭科科.AP1000裝卸料設備的特點分析[A].中國核學會.中國核科學技術進展報告(第二卷)——中國核學會2011年學術年會論文集第2冊(鈾礦冶分卷、核能動力分卷(上))[C].中國核學會,2011:4.
[2] 付月明.三代壓水堆核電廠PMC設備的特色與設計改進分析[J].機電信息,2013,(33):124-125.
[3] 任永忠,任湘郴.核電廠培訓模擬機設計和開發(fā)[J].系統(tǒng)仿真技術,2009,(02):125-129.
[4] 王守尊,陳虎,郭聰.基于Unity 3D的艦載機虛擬訓練系統(tǒng)設計[J].海軍工程大學學報,2016,(04):92-96.
Manipulator crane simulation based on Unity3D
ZHU Hong-guang, SONG Yong-qiang, LIU Yi-cong
TP24
:A
:1009-0134(2017)08-0116-04
2017-06-27
朱泓光(19 -),