基于Unity3D 的高速动车组受电弓检修事故虚拟演示系统
2022-06-08金英明马思群明志远
金英明,马思群,丛 莉,陶 然,明志远
(1.大连交通大学 机车车辆工程学院,大连 116028;2.大连交通大学 外国语学院,大连 116028;3.大连交通大学 艺术学院,大连 116028)
受电弓位于高速动车组车顶,在高速动车组运行时,受电弓升起与接触网接触,从接触网上获取电流,经过车辆上的变压设备处理,传递到车辆的电气系统[1]。受电弓是高速动车组的核心部件,同时,也是高速动车组故障率较高的部件。因此,高速动车组受电弓的检修具有重要意义[2]。目前,针对受电弓的安全检测主要有人工检测、传感器检测和图像检测3 种途径。其中,人工检测需要在高速动车组入库断电后进行登顶操作,是常用的检测手段[3]。
考虑到线路和高速动车组负载,受电弓上电压最低为20 kV,受多种因素制约,工人在实际检修过程中,如有操作不规范的情况,会显著增加检修的事故率。受电弓受电时的高电压使得检修人员面临触电危险。考虑到受电弓检修事故的危害性大、不可复制等问题,本文以高速动车组受电弓检修为背景,结合现实中的事故案例,利用虚拟现实技术的强交互性、强感知性[4],研发高速动车组受电弓检修事故虚拟演示系统,实现了事故展示、模拟演练等功能。
虚拟现实概念于1965 年被提出,是一种利用计算机制作环境,对现实事物进行还原,使用户沉浸其中的技术[5-6]。Unity3D 是 由Unity Technologies 开发的,让用户轻松创建三维视频游戏、建筑可视化、实时三维动画等互动内容的多平台、综合型游戏开发工具,是全面的、整合的专业游戏引擎。其具有可视化编程界面、高效脚本编辑、开发便捷等优点,支持Java Script、C#、Boo 脚本语言,广泛应用于军事与航天工业、室内设计、铁路培训等领域。
1 系统设计
1.1 系统功能
高速动车组受电弓检修事故虚拟演示系统以减少检修事故为目的,通过检修事故的演示,结合虚拟现实技术的优点,让使用者具有身临其境的体验,从而起到警示作用[7]。系统还可进行模拟演练,通过检修的模拟仿真训练,可使检修工人更加熟练完成检修工作,深入了解操作不规范所带来的危害。同时,在系统中嵌入考核模块,对检修知识进行考核。系统的功能架构如图1 所示。
图1 系统功能架构
1.1.1 事故演示子系统
用户可在事故演示子系统中观看虚拟人物的检修操作,了解检修事故产生的原因及带来的危害。由于虚拟现实技术仿真性强的优势,高压电触电效果展示可给用户带来视觉冲击,使其能更加深刻地意识到操作不规范所带来的严重后果,从而提升培训效果。
1.1.2 模拟演练
模拟演练子系统为用户提供操作练习的机会,用户通过设备上的按键与模拟场景进行交互,以第一视角进行控制,模拟视角移动、视角旋转、检修等行为。为使用户能更加深刻地理解检修过程,系统会在检修的关键步骤上进行提示,当用户的操作步骤发生错误时,系统也会对操作步骤进行讲解,同时,演示可能发生的检修事故与带来的危害。系统可规范用户检修工作流程,提升用户的检修技能,降低实际检修事故的发生率。
1.1.3 视频讲解与知识考核
为提高检修知识储备,用户可在视频讲解子系统中观看检修事故案例视频,也可通过考核子系统对自身进行定期考核。知识考核子系统在数据库中进行题目的随机抽取,对用户的理解程度进行打分并做出是否合格的判断,可巩固用户的检修知识,使用户掌握操作要点及发生事故后的处理方法。
1.2 场景设计流程
进行场景设计时,需先对检修事故案例进行收集[8],确定导致事故发生的因素和场景的设计路线与功能,综合考虑机器性能及场景的还原度,完成对应场景的设计。由于Unity3D 对FBX 格式的文件适应性强,模型建立完成后需导出为FBX 格式。场景的设计流程,如图2 所示。
图2 场景设计流程
2 系统模型建立
2.1 模型的优化处理
根据系统需要,搜集所需高速动车组模型的尺寸,使用CAD 绘制二维图纸,确保图纸与实际模型的尺寸、规格相同,将二维图纸导入到3Ds Max 中,进行三维建模。由于高速动车组模型尺寸大、零件数量多,若建模后,将模型直接导入Unity3D 中将会占用大量内存空间,造成系统卡顿、场景切换慢等[9]。因此,需要对模型进行优化处理。具体操作步骤为:(1)对模型的顶点进行焊接处理;(2)减少曲面体的曲面分段数;(3)对不影响系统主体的部位进行贴图处理。
2.2 模型坐标轴变换
在建模过程中,合理运用模型的坐标轴可更快速地完成建模,同时,增加模型的真实性与准确性。
3Ds Max 完成建模后,需将模型导入到Unity3D中。3Ds Max 采用的是右手坐标系(Z轴向上),而Unity3D 采用的是左手坐标系(Y轴向上),若直接导入,因坐标轴不匹配,将造成后期脚本编辑出现逻辑错误[9]。由于Unity3D 并不具备改变模型坐标轴方向的功能,因此,在导入模型前,需在3Ds Max中对模型进行坐标轴变换,使模型与Unity3D 坐标轴相匹配。在3Ds Max 中,点击层次面板下的轴选项卡,点选“仅影响轴”,对模型的X、Y、Z轴的方向进行更改,如图3 所示。
图3 3Ds Max 与Unity3D 坐标轴对比
3 关键技术
3.1 碰撞器检测技术
Unity3D 有多种物理引擎,包括刚体、碰撞器、触发器等,可模仿实际物体的受力、碰撞等,使场景更加逼真。
本文对受电弓添加碰撞器及刚体组件,实现对受电弓物理属性的模拟,通过对刚体组件施加作用力的方式,实现受电弓的升起与降落,同时,在模拟检修过程中可利用Unity3D 中碰撞器提供的OnCollisionEnter、OnCollisionExit 等方法,通过对碰撞器的监测,实现对物体碰撞的检测。从而对检修人员是否触碰受电弓进行实时监测,作为判断是否发生事故的评价标准。若检修人员在检修信号灯未亮起时触碰到受电弓,将触发触电特效;若检修工人在检修信号灯亮起后触碰受电弓,则不会发生检修事故。利用碰撞器的特性,可实现物体状态监测和触发条件判断,增加系统的可操作性,降低程序的复杂性。
3.2 视角移动技术
(1)视角交互
在模拟演练过程中,用户需要与场景中的视角进行交互,从而控制视角进行移动、旋转等操作,Unity3D 中提供了Input 类,实现对用户的键盘、鼠标点击事件的获取,Input 类提供了多种方法来获取用户键盘与鼠标的按下、抬起等事件。在Update 中调用Input 类,可实现对用户输入的实时获取,利用C#语言进行脚本编辑,实现用户与场景视角的交互。在模拟演练场景中,用户通过键盘上的W、A、S、D 键分别进行视角前、后、左、右的移动,并通过鼠标的左右滑动对视角的转向进行控制。
(2)摄像机跟随
在视角的移动过程中,摄像机要跟随视角进行同步运动,使用户拥有更加真实的体验。实现摄像机跟随的方法较多,可直接将摄像机设置为视角的子物体,但该方法会导致摄像机跟随较生硬,用户体验效果不佳。
本文采取逐帧跟随的设计方法,在视角运动过程中,利用代码进行跟随设计,从而实现逐帧跟随,使用户能够拥有更真实的体验。具体步骤为:利用视角当前位置减去原点的世界坐标,获取当前位置的世界坐标;利用摄像机的位置减去视角的位置,获取一个固定的坐标偏移值;在Update 中逐帧进行视角的位置检测,用视角的世界坐标加上偏移值,即可确定摄像机的实时位置;将摄像机的转动方向设置为视角行走的方向,即可完成摄像机的跟随。
4 系统实现
4.1 场景导入
场景的导入关系到虚拟仿真的真实性,若导入时出现问题,导致贴图、动画等物体的缺失,用户的体验感下降,无法达到预期效果。
在3Ds Max 软件中完成建模后,将模型导出为FBX 格式文件,嵌入贴图、动画等关键物体,随后导入到Unity3D 软件中进行场景的搭建。由于FBX格式只支持基本贴图格式,导入Unity3D 中会有贴图丢失,导致检修场景失去真实性。所以,模型导入后,需要进行Unity3D 的材质创建,将缺失的贴图重新贴入,从而完成场景的导入[10]。系统的部分场景如图4 所示。
图4 系统部分场景示意
4.2 模拟检修的实现
进行受电弓检修前,先升起受电弓,对其进行供电测试,确保其可以正常工作;在完成供电测试后,受电弓降落,同时,将供电设备断电。断电后,检修信号灯亮起,检修人员进行登顶检修。如果检修人员在受电弓未与接触网脱开、未落稳在其底架的两个橡胶止挡上等情况下进行登顶作业,将面临触电风险。
用户在进入系统后,将以第一视角进行登顶作业,完成登顶操作后,拾取车顶的检修工具,随后进行受电弓检修,若进行检修时受电弓不带电,则完成受电弓检修;若进行检修时受电弓未完成断电,且检修工具与受电弓的距离小于安全距离时,显示界面将给出相关提示,并模拟检修者伤亡情况。
Unity3D 提供Animation 与Animator 两种动画机,本文采用Animation 动画机进行伤亡动画的播放,通过对动画机进行程序编写,控制播放判定、播放顺序。利用Animation 动画机,可使检修操作的模拟更加自然,节省编程时间,增加系统的操作性。模拟检修效果如图5 所示。
图5 检修场景模拟示意
5 结束语
本文基于Unity3D 开发了高速动车组受电弓检修事故虚拟演示系统,具有事故演示、模拟演练、视频讲解及知识考核等功能,实现了受电弓检修过程的模拟,满足铁路工人的知识培训、模拟训练等需求。系统利用虚拟现实技术,为铁路专业人才的培养提供思路,打破传统的培训方式,同时,有效减少铁路检修事故的发生。