基于Unity3D的装卸料机运动控制仿真
2017-09-15朱泓光宋永强刘议聪
朱泓光,宋永强,刘议聪
(绵阳市维博电子有限责任公司,绵阳 621000)
基于Unity3D的装卸料机运动控制仿真
朱泓光,宋永强,刘议聪
(绵阳市维博电子有限责任公司,绵阳 621000)
面对日益增长的核电人才需求,以及普通大众对核电发展的反感,本文采用当下很成熟流行的游戏开发引擎Unity3D,以某核电站装卸料机为仿真原型,对其运动控制程序进行了分析归纳,并绘制了主要运动机构的控制流程图,同时选择了桥架、小车、提升等机构,利用3DMAX创建三维模型,利用Unity3D强大的物理引擎开发了装卸料机仿真互动游戏。采用互动游戏的方式,有利于核电培训方式的多元化,有助于普通大众了解核电装卸料机的运行。
仿真;虚拟现实;Unity3D;装卸料机
0 引言
核电厂内核燃料组件装卸、转运和贮存系统属于核辅助系统,包括新燃料组件入堆前的接收、检查、贮存,拆卸和装封反应堆,堆芯换料以及乏燃料组件的运输、贮存和发送等一系列工艺操作。装卸料机作岛内换料的关键设备,主要负责堆芯燃料组件的装换作业,是核电厂换料大修关键路径上的一个重要项目[1]。虽然装卸料机没有直接参与参与核电厂的日常运行与安全活动,但间接地影响核电厂的安全可靠性,是核电厂的重要设备之一[2]。根据世界核能协会的数据,截止2015年底,全球在运营核电数439座,在建及拟建总量184座。即便是每座仅有一个反应堆,那也有439个装卸料机,这就需要更多的核电专业人才。在国内,不少大众一说核电就觉得有污染有辐射,更有甚者,到核电厂闹事以阻碍核电正常运行。所以需要一个简单而接地气的方式,让普通大众去了解核电。
1 装卸料机仿真
在核电站现场,采用了实际控制室环境高度逼真的培训模拟机,这样不仅可用来培训,亦可为后期优化做逻辑验证[3]。但是价格不菲,不适合一般情况下的功能演示与高校培训。
Unity 3D是由 Unity Technologies 开发的让玩家轻松创建诸如H维视频游戏、建筑可视化、实时H维动画、脚本后台编辑绑定等类型互动内容的多平台综合型游戏开发工具,是一个全面整合的专业游戏引擎。Unity 3D是一种涉及到多种不同领域的跨平台的三维虚拟现实游戏平台,是一款易于使用的产品,用户界面简单,编辑器上手容易,支持多脚本的语言,并具有强大的物理引擎。Unity 3D又可方便的在Windows 、IOS、 安卓、WEB、等平台发布,跨平台优势明显。另外,Unity3D本身的使用无需昂贵的授权费。鉴于Unity3D的以上优势,本文使用它作为开发工具,实现装卸料机的运动仿真,可方便的用于功能展示。同时利用多平台优势、以游戏互动的方式,让大众更加直观的了解装卸料设备的工作方式、同时也可用于高校的培训。由于Unity3D强大可扩展性能,更可添加其他一些列外围设备,比如kinect 或者 Oculus Rift虚拟头盔,可大大增加互动的代入感[4]。
2 仿真系统开发流程
2.1 装卸料机部分控制流程
利用国外某核电站的装卸料机作为分析对象,梳理了其控制程序的相应模块(图1),并绘制了执行机构的控制流程图(图2、图3、图4),并利用3DMAX建立了3D模型。同时,根据装卸料机的运动控制逻辑,选择部分控制逻辑作为仿真重点(如表1所示),采用C#做为脚本语言,编写了相应的控制逻辑模块。从而实现了对装卸料机运动控制的仿真。便于运动画面显示,当机构运动时,UI界面将跟随。
2.2 Unity 3D开发流程
由于Unity 3D本身的建模能力不足,我们采用第三方工具3d max建模, 然后处理好材质、贴图,并保存为FBX格式文件。将FBX模型文件导入Unity3D中,进行仿真交互的开发,具体包括UI交互界面、碰撞检测脚本、模型运动控制脚本、摄像机视野脚本等等。脚本调试好后,即可打包发布为WINDOWS平台的可执行文件。
图1 PLC程序模块
图2 桥架工作流程图
图3 提升工作流程图
图4 抓具工作流程图
2.2.1 模型导入Unity3D
在3DMAX中搭建好模型后,还需要设置材质的漫射、反射、光泽度、折射、BRDF等参数,注意只有standard(标准材质)和Multi/Sub-Objiect(多维/子物体材质)被Unity3D软件所支持。同时旋转调整好轴心,并将模型居中。然后,将模型导出为FBX格式,导出时需要注意勾选嵌入的媒体,如果不勾选,在Unity3D中贴图将无法导入。单位最好设置为毫米,这样在Unity3D中1个单位就是1米,默认的inch会使导出不成比例。并将FBX文件和贴图、材质文件一起移至Unity3D项目的Assets文件夹中。模型导入Unity3D后,会发现材质没有了,不过Unity3D已经将导入的材质生成材质球,我们需要利用material类从新设置材质,另外还可以利用它来设置自定义shader着色器,纹理贴图,颜色,材质通道等信息。
表1 仿真运动控制脚本模块
图5 导入Unity3D的3D模型
2.2.2 碰撞检测
装卸料机有很多限位开关。总体分为两种功能,一是触发后减速,二是触发后停止。在Unity 3D中常见的碰撞检测SphereCollider,WheelCollider,BoxCollider和Mesh-Collider等,我们使用BoxCollider即可。另外在在仿真中,两个GameObject发生碰撞,要想检测到触发信息,最少要有一个刚体碰撞器并且勾选了IsTrigger复选框,另一个最少要有一个碰撞器组件,此时检测碰撞的脚本必须附加在那个带有刚体的触发器上。例如我们将大车对应位置设置好4个 小盒子,以模拟减速限位开关和停止限位开关。将小车设置为刚体,并勾选IsTrigger。在脚本中,利用MonoBehaviour.OnTriggerEnter() 和 MonoBehaviour.OnCollisionEnter()等接口函数实现触发信息和碰撞信息的检测。
2.2.3 运动控制
Unity3D有多种实现物体运动的方式,本文直接采用了transform.Translate,该方法可以将物体从当前位置,移动到指定位置,并且可以选择参照的坐标系。当需要进行坐标系转换时,可以考虑使用该方法以省去转换坐标系的步骤。首先通过逻辑流程图判断是运动条件是否满足,然后利用transform.Translate实现运动。其中大车的最大速度为0.2m/s大车运动部分代码如下:
2.2.4 交互界面
UI界面的制作设计采用NGUI 插件进行开发,NGUI 提供强大的UI 系统和事件通知框架,能够方便地实现2D、3D 界面开发。默认情况下W、S、A、D 控制大小车、I,k利用前、后方向键控制提升机构。通过脚本自定义按键功能,按键的消息响应在MonoBehavior 的派生类的Update( )函数中实现。UI界面跟随机构运动的实现方式是首先获得机构在屏幕上的坐标,然后根据位置做对应移动。利用Camera. WorldToScreenPoint和Camera. ScreenToWorldPoint别将世界坐标和屏幕坐标相互转换,部分代码如下:
3 结论
文章分析了实际项目中的装卸料机控制程序框架,并梳理了执行机构运动流程图。通过3DMAX建立了3D模型并利用Unity3D完成了装卸料机大车、小车、提升等机构的运动仿真,结果表明,采用游戏互动的方式有利于高校培训及核电科普在大众中传播。
图6 仿真系统的开始界面
[1] 郭科科.AP1000装卸料设备的特点分析[A].中国核学会.中国核科学技术进展报告(第二卷)——中国核学会2011年学术年会论文集第2册(铀矿冶分卷、核能动力分卷(上))[C].中国核学会,2011:4.
[2] 付月明.三代压水堆核电厂PMC设备的特色与设计改进分析[J].机电信息,2013,(33):124-125.
[3] 任永忠,任湘郴.核电厂培训模拟机设计和开发[J].系统仿真技术,2009,(02):125-129.
[4] 王守尊,陈虎,郭聪.基于Unity 3D的舰载机虚拟训练系统设计[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 -),