虚拟轨道交通设备维修方案利用3ds MAX建模软件构建了三维虚拟列车模型,以Unity3D为应用开发引擎,VC#2017为编译器,外接HTC Vive VR设备,结合HTC手柄搭建地铁列车设备三维虚拟维修培训平台。实现了对列车检修场景漫游、列车设备故障检修以及相对应的人机交互功能。
1. 轨道交通设备虚拟维修系统开发
1.1 虚拟列车场景的建模
利用3ds MAX建立地铁列车故障检修所需要的列车模型,同时导出Unity3D所需要的FBX格式的模型文件。虚拟列车场景建模步骤如下:
1.1.1 场景材料收集
根据实际的轨道交通的真实环境收集列车模型的尺寸,内部设备的结构及安装位置等数据。再使用Photoshop对模型纹理、材质、尺寸进行修正。
1.1.2 列车设备建模
利用3ds MAX将采集好的材料与处理好的贴图以列车内部的零部件为单位,分别对电器柜、操纵台、车门等设备以及列车整体进行建模。同时,在建模过程中合理确定各个零部件的坐标,确保在导入Unity3D中,将各个模型坐标归零后,零部件位置不会出现偏差。
1.1.3 场景搭建
(1)将3ds Max建立好的模型导入工程的Assets文件夹下,Unity会自动读取模型的材质、贴图、动画等内容并创建文件夹予以归类。
(2)通过将Assets文件夹下的对象,拖入层级视图中,创建场景中的模型对象。
(3)通过面板右侧Inspector界面调节模型在场景中的坐标位置,旋转角度和缩放比例,将各个零部件模型拼装成一列完整的虚拟列车。
1.2 Unity3D虚拟场景驱动
利用Unity3D内置的NVIDIA PhysX物理引擎,可以逼真模拟刚体碰撞、外力作用等效果。Unity3D平台可以使用内置MonoDevelop编译器,并支持Visual Studio C#2017作为外部编译器对代码进行调试。同时Unity3D对跨平台开发提供了最佳支持,支持各种编译语言,包括C#,JavaScript,boo等,并能够对驱动程序进行多平台的封装。轨道交通设备虚拟维修系统的虚拟场景主要模拟了列车运行状态中故障的前后现象,外接HTC Vive虚拟现实头戴式显示器(VR头显),结合HTC手柄来实现与场景的交互功能。
1.2.1 VR设备的交互
HTC Vive虚拟现实头盔提供一种在虚拟世界中的浸入式体验,结合HTC手柄可以在与场景交互过程中达到更逼真的效果。
(1)SteamVR的配置
将HTC Vive设备外部硬件配置好,通过Unity3D的Asset商店下载SteamVR SDK,在我们的项目中导入SteamVR,打开这个文件夹,从Prefabs文件中将[CameraRig]拖到结构窗口,同时删除结构视图中的主摄像机,避免干扰[CameraRig]的相机。[CameraRig]插件控制Vive头盔和HTC的左右手柄。
(2)HTC输入手柄的确定
HTC手柄是被跟踪的对象——它们在真实世界中的移动和旋转都会被HTC Vive跟踪到并传递到虚拟世界里。在对手柄上加载各种功能之前,要确定事件触发的具体手柄。HTC左右手柄下面都有SteamVR_TrackedObject这个组件,在这个组件下,系统内部随机分配了不同的index值,通过读取index值就可以确定具体触发的手柄。
其实现步骤如下:
①创建c#,将脚本挂载到[CameraRig]下面的左右手柄controller(left)和controller(right)中,添加一个控制与追踪的组件SteamVR_TrackObject trackedobject;
②在Update()上方添加代码,通过获取手柄的index值来确定具体触发的手柄,当脚本加载时trackedObject会被赋值为SteamVR_TrackedObject对象,这个对象和手柄是关联的,就可以对手柄进行访问。
2.2.2 列车检修场景漫游
地铁列车检修的漫游包括小范围的实时移动和大范围的瞬移,考虑到HTC Vive活动范围有限制(3m×5m),小范围的实时移动可以通过改变HTC Vive头戴式显示器(VR头显)的位置来实现,大范围的移动通过瞬移的方式来实现。
在检修场景中,利用HTC的手柄选取检修场景的位置,通过扳机键进行瞬间移动,视野就会跳转到所选择的区域。利用瞬移的检修方式,可以对列车进行大范围的一个检查。利用HTC的手柄来进行瞬移功能要使用到3个组件,Vive NavMesh组件控制Unity的NavMesh系统到可渲染网格的转换。它还会计算NavMesh的边界,在选择瞬移位置时,可以被显示出来。Parabolic Pointer组件生成一个指示网格并从Vive NavMesh进行采样。Vive Teleporter组件控制实际传送机制,它从Parabolic Pointer找出指示数据确定瞬移的具体位置。
将这3个组件拖到结构窗口,利用Vive Nav-Mesh组件确定将可进行瞬移的合理区域进行渲染,避免瞬移到列车边界及不透明的物体内部。利用Vive Teleporter组件,进行位置的传送,当触发扳机键时,本系统通过贝塞尔曲线,使用了直观的抛物线选择机制。生成选择地点的远近将由用户将控制器手柄举到更高的角度来决定。如果用户将手柄举起角度>45。(抛物线的最大距离)时,角度将会锁定在这个距离,从而实现瞬时移动。
2.2.3 列车设备故障检修
通过学习列车设备中的逻辑关系,包括电器柜、车门逻辑等,根据列车设备电气逻辑图,进行常见的故障设置,根据设备出现的故障利用外接HTC的手柄进行检修,排查故障。
(1)列车故障现象模拟
将每节车厢作为一个单位,通过各自独立的脚本来传送当前场景的数据,封装为一个以Mono-Behaviour为基类的类对象。考虑到大多数设备按钮只有两个状态,因此设定0为关(故障)状态,1为开(运行)状态,少数设备有多种状态根据实际情况进行定义。
通过数据监测器读取场景中的脚本,接收到列车的设备状态,当切换场景时由于场景内资源被释放,列车设备状态数据由监测器保留,当进入下一场景后,场景中的脚本读取监测监测器中的数据,根据电气逻辑做出相应的响应。
当电器柜DOCB过流跳下,监测器接收到其数据状态从1变为0,根据列车电气逻辑进行处理后,显示故障现象为:开门时,列车门无法打开。
(2)基于VR设备的人机交互
利用外接VR设备,HTC手柄来代替手对列车故障进行检修,可以使学员在沉浸的场景中实现自然、有效的人机交互动作。
以检修电器柜中操作台中开门电路断路器(DOCB)为例,阐述交互的过程。确定发出信号的HTC手柄,再采用Lighthouse光学跟踪技术,跟踪用户的头部以及手部的传感器位置,将位置信息传递给场景内,在开门电路断路器(DOCB)中挂载Box Collider碰撞器的组件。利用手部的代替模型(HTC手柄)与开门电路断路器(DOCB)发生碰撞检测。若HTC手柄与开门电路断路器(DOCB)发生碰撞并且符合检修的条件时,触发手柄的按键,将开门电路断路器(DOCB)合上,排除电器柜中开门电路断路器(DOCB)的故障。
1.3 列车辅助教学模块设计
辅助教学程序的主要功能是对学员在地铁列车维修虚拟仿真培训过程中进行相应理论知识内容的配套学习。
在辅助教学程序中,学习场景的主要功能是提供整个列车结构、零部件知识的学习,主要关于各列车厢以及车厢各自的零部件知识内容,通过可视化的界面,使学员能在学习中很快找到自己所需的信息。以讲解零部件为例,在界面上方显示展示的零部件,界面下方会出现零部件文字部分的讲解,长滑块下方上、下、左、右按键可辅助控制零部件视角的位移变换,学员可以更好、更深刻地了解各个零部件的重要知识。
2. 虚拟轨道交通设备维修方案优势
2.1 采用HTC vive虚拟现实头戴式显示器(VR头显)替代传统的显示设备,使用户身临其境地沉浸于三维虚拟场景;
2.2 编辑脚本控制手柄,实现虚拟场景中设备的操控,具有更好的人机交互性能,提高了学员的体验效果,达到沉浸式体验效果。学员通过平台可以直观准确地学习到列车运行中发生的故障类型及相应的故障排除方法。
虚拟轨道交通设备维修方案通过3ds MAX建模软件地铁列车全要素进行虚拟场景构建,再以C#为底层编码,利用Unity3D作为驱动,外接HTC Vive的头戴式显示器(VR头显),结合HTC手柄,实现对虚拟场景的驱动控制。利用具高度真实感和交互性的轨道交通设备虚拟维修系统,能够逼真地模拟故障发生的情况,提高了检修人员在遇到故障时的反应能力,进而提升了设备的检修效率,同时强化了检修人员对列车故障如列车电器柜断路器故障、受电弓故障、车门故障等有相对应的应急能力,此外,轨道交通设备虚拟维修系统的虚拟教学培训功能,支持对虚拟模型进行多次操作,可节省培训成本,减少误操作。