TBM及其工作过程虚拟仿真系统的设计与实现
2018-04-13赵文涛
赵文涛,郭 位
(1.中国工程物理研究院总体工程研究所,四川 绵阳 621900;2.浙江大学 计算机科学与技术学院,浙江 杭州 310027)
0 引 言
硬岩掘进机(TBM)是广泛应用于隧道挖掘等大型工程的复杂机电装备,能够多道工序同时作业且具有掘进速度快、成形质量好等多种优点[1-2]。TBM结构复杂,包含零部件数量多,在其设计制造过程中多采用CAD技术[3]。传统的CAD技术虽然能够完成各部分子系统的设计并最终完成装配,但也暴露出一些问题,主要表现有:传统三维软件的渲染功能较弱,模型材质表现不明显;人机交互主要是通过鼠标、键盘操作,“沉浸感”不强且对软件平台的依赖性较大。
虚拟现实是设计和仿真技术的一个重要发展方向,现已广泛应用于医药、工业、教育、电子游戏和旅游等众多领域[4-7],也弥补了现有制造业中设计和装配的不足[8]。王大虎等[9]针对采煤机司机培训方式的不足,设计并实现了一种基于虚拟现实技术的采煤机虚拟培训系统,使用3D Max创建虚拟场景模型,然后通过Unity 3D三维引擎开发平台完成虚拟场景搭建,该系统能够缩短培训周期并降低成本;蔡林沁等[10]结合多智能体和虚拟现实技术,建立了井下典型掘进跑车事故的虚拟仿真系统,实现了井下安全事故的交互式分析;Torres等[11]基于认知和可用性技术的学习模型,评估了焊接虚拟训练的效果。
为改进TBM现有设计方面的不足,基于虚拟现实技术开发了TBM系统组成和工作过程演示的虚拟仿真系统,包括软件和硬件两方面内容。软件方面主要包括三维建模、材质渲染和动画制作,并使用Unity 3D引擎实现系统的功能;硬件方面使用HTC vive设备产生虚拟场景的3D视觉、声音等效果。该系统具有较好的沉浸感和交互性,人员可以在场景中漫游并与模型发生交互,由于场景引入了碰撞等物理场特征,使得仿真效果更加真实,对促进TBM的设计研发具有积极作用。
1 仿真系统架构
文中设计的仿真系统具备交互控制、场景漫游和动画仿真等功能,由“TBM系统组成”、“TBM工作原理”及“施工过程”三部分组成,架构如图1所示。
图1 仿真系统架构
“TBM系统组成”包括装备的刀盘刀具系统、刀盘驱动系统、护盾和机头架等6个子系统,设计人员可以非线性的方式与系统进行交互,对模型进行任意方位的移动、旋转,实现装备的装配与分解,清晰地查看各子系统的具体结构;“TBM工作原理”介绍了装备吊装以后的步进式挖掘作业过程,从刀盘切削岩层、运渣、换步、纠偏直到隧道安装衬砌、喷射混凝土作业,每项施工作业的仿真可以和相关子系统进行模块化匹配,从而系统地表达了其工作原理;“施工过程”是指可以在地质模型库内调取或定制不同的岩层模型,更换TBM的工作场景,以帮助施工人员合理确定掘进路径,以可视化的方式评估施工方案。
2 TBM三维建模及渲染
一台完整的TBM包含2万多个零部件,在虚拟演示时,如果把完整的三维模型构建出来,不仅费时费力,而且对计算机的CPU和显卡等硬件造成沉重的负担,甚至出现画面卡顿等现象。在综合考虑演示效果和制作效率的基础上,充分研究TBM的各个子系统及其功能,对于隐藏的零部件可以省略不计,对非重点展示的零部件和机构做简化处理。为了保证模型尺寸精确,使用三维建模软件SolidWorks对刀盘刀具等6个子系统进行建模并完成总体装配,总装配图如图2所示。
图2 TBM总装配图
三维模型构建完成后,接下来为模型添加材质贴图。Maya是世界顶级的三维设计、动画制作软件,渲染真实感极强,广泛应用于工业设计、广告影视和虚拟现实技术的仿真模型制作。将SolidWorks模型保存为STL格式后再导入Maya,由于格式转换等原因造成模型的面片数量增加,为了保证仿真系统画面的流畅性,可采用顶点焊接、模型重建等方法精简现有模型;根据设备和岩层的材质外观,为场景布置平行光线以模拟太阳光,调节Maya内置材质球的参数值以达到不锈钢、油漆和塑料等材质效果,材质添加完成后,TBM具有了物理样机的质感。
3 关键技术
3.1 三维动画制作
动画是虚拟演示的核心内容之一,它直观形象地表达了机构的运动原理和装备的工作过程。TBM涉及的运动有刀盘和驱动电机的旋转运动、支撑腿抬起与放下的直线运动、换步时液压系统的推进动作以及掘进纠偏时的摆动等;不仅模型机构复杂,而且各子系统的运动相互耦合,使用分析机构自由度的方法来完成动画制作显然不可行。在此情况下,可以借助Maya强大的关键帧动画技术来实现,并且采用模型分层的思想将子系统进行划分,最终将层与层之间的动画相关联完成整个TBM系统的动画制作。
关键帧动画设计的基本思路是设置“关键帧”将TBM中运动机构的代表性位置依次记录下来,这是个时间历程的过程,在每两个关键帧之间采用插值的方式自动生成机构的运动路径,可以调节动画曲线达到不同的效果,关键帧设置完成后,从第一帧播放到最后一帧即可快速实现系统的运动。TBM模型动画用来实现各种机构的运动,对于简单的动画可以借助Maya软件中的控制器、约束和模型之间的父子关系来完成,对于复杂的动画如液压缸推进和摆动的复合运动使用骨骼系统完成,并且根据实际情况进行动力学设置,然后将模型转换为FBX格式,可以将带有材质贴图及动画的模型导入Unity 3D软件中。
3.2 碰撞检测
若要使TBM工作过程的仿真显得真实,碰撞检测是必不可少的,否则模型在运动时会发生相互“穿透”而导致仿真失败。在Unity 3D中,有两种内置的方法来实现物体之间的碰撞检测:一种是刚体碰撞,即在物体上添加各种碰撞器组件;第二种是使用射线法,即由摄像机发射出一条射线,根据射线的方向和距离来判断[12]。
根据检测效率和检测效果,采用第一种检测方法。Unity 3D开发平台内置了基于层次包围盒[13]的碰撞检测算法并开发完成了多种碰撞器,包括立方体、球体、网格和地形等碰撞器,人员在开发过程中直接为模型添加相应的碰撞器完成碰撞检测,而不需要编写碰撞检测算法,大大节省了开发时间。为了更好地实现系统的仿真效果并提高运行效率,决定采用多种碰撞检测方法和碰撞器组件相结合来完成场景中的碰撞检测,划分思路如图3所示。
图3 模型碰撞检测类型划分及对应算法
以碎石落地场景为例介绍碰撞检测的实现过程,Unity 3D软件中实现碰撞的必要条件是模型必须一个为刚体,另一个为碰撞器。此处将地面设置为碰撞器并添加地形碰撞器组件(terrain collider),碎石设置为刚体并添加刚体组件(rigid body),由于碎石模型较小且三维结构复杂,所以添加网格碰撞器组件(mesh collider)以提高检测精度,考虑到碎石运动较快,可将碰撞检测算法设为连续碰撞检测(continuous);其他场景的碰撞检测设置和此方法相同。
4 仿真系统实现
4.1 交互界面设计
人机交互界面(UI)是TBM仿真系统的重要组成部分,人员与系统之间的交互很大程度上取决于UI,文中使用Unity 3D的UGUI[14]系统进行三维交互界面的设计。仿真系统首页是基本的菜单项,包括“设备介绍”和“操作说明”文字弹出框按钮,及“TBM系统组成”、“TBM工作原理”和“施工过程”等进入仿真系统内部的功能按钮,如图4(a)所示。
仿真系统内部用来演示子系统组成及其工作过程,以“TBM工作原理”为例介绍系统内部的UI设计,如图4(b)所示。界面底部有“子系统工作原理”按钮,可以选择性查看各个子系统的工作过程,包括切削岩石、步进过程和纠偏过程等;左边有“声音”和“扩展”等按钮,用来为仿真系统提供三维立体音频和其他功能。
图4 仿真系统UI界面
4.2 硬件设备
系统的硬件部分采用HTC Vive产品,包括虚拟现实头盔显示器、两个VR操控手柄和两个基站[15],如图5所示。
图5 HTC Vive虚拟现实硬件设备
头盔显示器用来产生三维TBM场景图像,屏幕刷新率为90 Hz,能够带来从所有角度充盈整个视野的逼真图像,并消除了常见的抖动问题,具有较好的沉浸感;VR操控手柄用来控制设备与场景进行交互,通过传感器可以产生一定的触觉力反馈;基站将陀螺仪传感器、加速度计和激光定位传感器结合在一起,能够精确探测头盔和手柄的位移、旋转,并将这些信号传输到主机实现人机交互。
4.3 交互程序编写
为了高效快捷地完成仿真系统的开发,使用Unity SteamVR插件将虚拟场景内容和硬件设备相结合,利用插件内置的[CameraRig]预设使人员置身于虚拟环境中。[CameraRig]包含Controller (left)、Controller (right)和Camera (head)三个子物体,Controller (left)和Controller (right)分别对应左右手柄控制器,Camera (head)下有子物体Camere (eye),其上有SteamVR_Camera脚本,当穿戴上头盔显示器后可以看到360度TBM虚拟场景,人员可以在场景中移动从而实现漫游。然后,基于SteamVR Unity Toolkit(简称VRTK)工具包内的VRTK_Controller Event、VRTK_Simple Pointer和VRTK_UI Pointer等脚本,使用C#语言编写手柄控制器按钮事件,实现人员与虚拟场景中菜单和模型的交互。
首先介绍手柄控制器和三维菜单的交互程序,人员使用手柄控制器,当扣动扳机Trigger时发出射线,射线单击菜单按钮时,弹出场景选择列表,射线与场景按钮发生交互从而跳转到指定场景,代码如下:
public class UIManager : MonoBehaviour
{public GameObject MenuBtn;
public GameObject Scene_1,Scene_2,…,Scene_6;}
///
///显示场景选择列表
///
public void showSceneList ()
{if(MenuBtn.SetActive==true)
Scene_1.SetActive (true);
Scene_2.SetActive (true);
…
Scene_6.SetActive (true);}
…
///
///跳转到指定场景
///
public voidonSceneBtnClick (string sceneName)
{if (sceneName==“切削岩石”)
{Application.LoadLevel (“Scene_1”);}
else if (sceneName==“步进过程”)
{Application.LoadLevel (“Scene_2”);}
…
else if (sceneName==“喷射混凝土”)
{Application.LoadLevel (“Scene_6”);}}
通过手柄控制器按钮与模型发生交互,可以移动、旋转模型,其原理是利用碰撞检测,当手柄与模型发生碰撞并按下Grip按钮时,模型变为手柄的子物体从而跟随手柄移动,松开Grip按钮时,模型不跟随手柄移动,代码如下:
SteamVR_Controller.Device device;
voidOnTriggerStay (Collider col)
{if (device.GetTouch (SteamVR_Controller.ButtonMask.Grip)) {
col.gameObject.transform.SetParent (gameObject.transform);}
//按下Grip按钮时,模型跟随手柄移动
if (device.GetTouchUp (SteamVR_Controller.ButtonMask.Grip)) {
col.gameObject.transform.SetParent (null);}
//松开Grip按钮时,模型不跟随手柄移动
}
另外,岩层的材质也可以改变,实现TBM在不同的场景下工作,代码如下:
///
///显示材质选择列表
///
public void showMaterialList ()
{materialist.SetActive (true);}
///
///设置岩层材质
///
public GameObject GroundGo;
public Material []matArr;
public void setGroundMaterial (string materialName)
{if (materialName==“Tile1”)
{GroundGo .GetComponent
else if (materialName==“Tile2”)
{GroundGo .GetComponent
…}
至此,完成沉浸式TBM虚拟现实仿真系统的开发,如图6所示,使用手柄控制器与模型发生交互,实现TBM子系统的虚拟装配。可以将内容发布为Windows PC、Mac PC、Windows Web、IOS或者Android等平台的文件格式,实现跨平台操作。文中发布为Windows PC的可执行文件“TBM_display.exe”。
图6 沉浸式TBM虚拟仿真系统
5 结束语
利用虚拟现实技术构建了TBM系统组成和工作过程演示的仿真系统,通过人机交互的方式,人员可以在三维空间中观察装备各个子系统的结构,对其中机构的设计及其工作原理有直观的理解;同时,由于对模型进行了渲染并添加了碰撞等物理场效果,使得仿真效果更加真实;最后,通过Unity SteamVR插件将Unity 3D中的虚拟场景内容和HTC Vive硬件设备相结合,开发了具有沉浸感和交互性的虚拟现实仿真系统,对TBM的设计、方案评估和施工可视化有积极的推进作用。
参考文献:
[1] 荆留杰,张 娜,杨 晨.TBM及其施工技术在中国的发展与趋势[J].隧道建设,2016,36(3):331-337.
[2] 王梦恕.中国盾构和掘进机隧道技术现状、存在的问题及发展思路[J].隧道建设,2014,34(3):179-187.
[3] 张友湖,夏超群.基于CATIA的TBM主箱梁的数字建模与有限元分析[J].中国重型装备,2008(1):23-25.
[4] 王子罡,唐泽圣,王田苗,等.基于虚拟现实的计算机辅助立体定向神经外科手术系统[J].计算机学报,2000,23(9):931-937.
[5] 刘 相,刘玉庆,朱秀庆,等.基于虚拟现实的航天员舱内导航训练方法[J].计算机辅助设计与图形学学报,2017,29(1):101-107.
[6] VAUGHAN N,GABRYS B,DUBEY V N.An overview of self-adaptive technologies within virtual reality training[J].Computer Science Review,2016,22:65-87.
[7] MARTIN-GUTIERREZ J,MORA C E,ANORBE B,et al.Virtual technologies trends in education[J].Eurasia Journal of Mathematics Science and Technology Education,2017,13(2):469-486.
[8] 张林鍹,辛献杰,崔 冰,等.面向汽车产品设计的虚拟现实服务平台研究[J].系统仿真学报,2014,26(10):2407-2411.
[9] 王大虎,刘海洋,王敬冲.基于虚拟现实的采煤机培训系统开发[J].计算机仿真,2015,32(6):262-265.
[10] 蔡林沁,张优东,杨 卓,等.基于多智能体的井下安全事故虚拟现实仿真[J].系统仿真学报,2014,26(12):2914-2920.
[11] TORRES F.A learning evaluation for an immersive virtual laboratory for technical training applied into a welding workshop[J].Eurasia Journal of Mathematics Science and Technology Education,2017,13(2):521-532.
[12] 栾 飞.基于Unity3D的液压传动虚拟仿真教学系统开发[D].济南:山东建筑大学,2015.
[13] 于潇翔,彭月橙,黄心渊.基于Unity 3D的道具系统研究与开发[J].成都理工大学学报:自然科学版,2014,41(4):523-528.
[14] 刘国柱.Unity3D/2D游戏开发从0到1[M].北京:电子工业出版社,2015.
[15] BUN P,GORSKI F,GRAJEWSKI D,et al.Low-cost devices used in virtual reality exposure therapy[J].Procedia Computer Science,2017,104:445-451.