基于3DVIA Studio的民航发动机虚拟装配实验系统设计与开发

2015-07-07 07:06赵洪利徐宇杰
制造业自动化 2015年7期
关键词:摄像机编程虚拟现实

张 青,赵洪利,郭 庆,徐宇杰

(中国民航大学,天津 300300)

0 引言

虚拟装配技术作为一门新兴学科正在蓬勃发展,近年来在航空航天、军事、建筑等领域得到越来越广泛的应用。民航发动机传统维护培训投入大、耗费人力和物力,而在民航发动机的维护作业中,零部件的拆卸与重新装配是重要的组成部分,拆卸与装配所需时间在整个维修活动所需时间中占有相当的比例。因此,开展发动机虚拟装配技术研究越来越迫切,采用虚拟样机装配替代发动机实物可节省大量培训经费,缩短培训周期,提高发动机装配的质量,保证装配人员工作的安全,使装配工作真正在高效、高质量、短时间、低成本的环境下完成[1]。本文探索性地设计了民航发动机虚拟装配实验系统,设计流程如图1所示。并对人机交互设备数据接口进行开发,将3DVIA Studio虚拟仿真平台、四通道POWR WALL沉浸式环境投影系统和体感交互设备kinect集成在一起,改变传统的键盘鼠标控制模式,使操作者像在真实环境中一样对发动机的零部件进行实时交互、感知以及各类装配操作,对发动机零部件的可装配性作出直接的评价。

1 虚拟现实开发平台

图1 民航发动机虚拟装配实验系统设计流程图

3DVIA Studio是达索公司推出的一款用于集成和开发虚拟现实系统专业软件,支持沉浸式虚拟现实显示,可以生成跨平台渲染、播放和操作的虚拟现实场景,支持450个图形化行为模块(Building Block)开发,并提供VSL(Virtools Script Language)脚本语言和基于C++语言的SDK(Software Development Kit)开发,开发人员可以在3DVIA Studio里面直接进行代码语言开发,可与几乎所有主流虚拟现实硬件进行无缝匹配[2]。设计人员可以在Assemble面板中对场景进行组装和配置,在3D View窗口中对物体进行变换操作、相机视图操作、以及实时修改属性动态调整物体参数。开发人员可以在Behavior面板中进行行为及功能的开发,并在3D窗口实时调试和运行。3DVIA Studio的粒子系统可以模拟如水、烟、火、雨、雪等自然现象。动态物理模拟系统可以帮助用户完成诸如重力、摩擦力、弹力、干涉、碰撞、运动副、铰链、弹簧、外力等物理模拟[3]。

2 民航发动机虚拟装配实验系统开发

2.1 民航发动机和翻修厂虚拟场景的三维建模

利用三维建模工具CATIA对发动机建模,提高建模速度和模型精确度。根据发动机维护手册要求对各个零件、子装配体、总装配体进行编号。发动机数据:风扇直径(mm)1613,长度(mm)3200。通过分析和计算,确定1:12比例(3200÷266≈12.03,1613÷135≈11.95),计算出风扇叶片长度为:46mm×12=552mm,宽度大约为240mm,以及风扇机匣、高压压气机、燃烧室、高压涡轮、低压涡轮、尾喷等结构的轴向尺寸,使用这些尺寸进行发动机主体零件的3D造型,如图2所示。3DVIA Studio能直接打开由CATIA导出的3DXML工程模型,其中的数据信息、模型、材质、动画(机构仿真)等,都能进入到3DVIA Studio中。

运用3DS MAX建模软件建立发动机大修车间系统场景和虚拟维修人员模型,包括发动机整机装配模型(如修理车间、修理工具如螺丝刀、扳手、刀具类、锤类、钳类、轨道、支架、吊钩等)以及其他实体模型(如厂房、地面等),添加材质、贴图后,导出为DAE格式导入3DVIA Studio中,如图3、图4所示。3DVIA Studio中默认使用的单位为米,而一般机械CAD默认采用毫米为单位。为确保各类模型单位统一,在模型导入前,调整3DVIA Studio的首选项,Reader 3DXML/Unit Scale调整为0.001[4]。

图2 发动机虚拟样机

图3 虚拟维护人员模型

图4 翻修厂虚拟场景

2.2 3DVIA Studio和人机交互设备kinect数据接口的开发

人机交互是指用户对现实平台中的物体执行操作并从虚拟环境中得到相应的反馈,它是构成虚拟装配的关键技术[5]。本系统中,在虚拟环境下人与装配零部件之间的交互行为是通过系统中图形化行为模块(Building Block),如vkIOdevicemanger这一系列数据接口,接受外接设备的数据输入,引发系统里面设置好的逻辑事件从而达到人机交互的目的,逻辑编程如图5所示。通过使用vkiodevicemanger::keyboard系统接受键盘的输入从而并触发iskey pressed判断从而引起设置好的键盘触发事件,通过enqueue animation命令人物开始执行相应的动作。

图5 人机交互控制逻辑编程图

本系统以最自然的方式即以自己的肢体语言实现对整个系统的控制,采用微软kinect通过红外线测点原理,得到人体的深度图像,从中获得人体每个的骨骼数据,如图6所示,可以看到通过深度流算法可以将人体从背景中提取出来,并得到每个骨骼节点的三维坐标并在虚拟人的数据和kinect传输的数据建立连接,从而实现控制。编程代码如下:

图6 人机交互控制逻辑编程图

图7 BB:Interpolator

图8 BB:Set Local Position

获取骨骼数据:

//获得离Kinect距离最近被骨骼跟踪的用户

Skeleton s = GetClosetSkeleton(e);

if (s == null)

{

return;

}

if (s.TrackingState == SkeletonTrackingState.Tracked)

{

var joints = s.Joints;

Joint rightHand = joints[JointType.HandRight];

Joint leftHand = joints[JointType.HandLeft];

Joint head = joints[JointType.Head];

将骨骼数据赋予虚拟人的骨骼

Joint scaledCursorJoint = new Joint

{

TrackingState = JointTrackingState.Tracked,

Position = new SkeletonPoint

{

X = posX,

Y = posY,

Z = hand.Position.Z

}

};

int x = Convert.ToInt32(scaledCursorJoint.Position.X);

int y = Convert.ToInt32(scaledCursorJoint.Position.Y);

2.3 发动机虚拟装配三维交互行为的设计

3DVIA Studio中模型的运动是通过编辑程序脚本来实现,其运动不能根据参照面,轴线等准备定位目标位置。以装配体的形式导入3DVIA Studio的发动机及维修厂房模型模型,首先将各零部件移动到相应的工位上去,再根据两零部件初始的相对位置关系即可确定部件的正确装配位置[6]。

根据3DVIA Studio提供的一部分封装好的图形化模块 (Building Block,BB),可以实现一些基本的逻辑控制和模型操作,如BB:Interpolator,在两个位置间进行线性插值,如图7所示。在BB Interpolator图形化模块选择Edit Variable Settings,设置Interpolator的变量类型,空间坐标选择vkvec3,value1是空间坐标中物体运动后最终所处位置的坐标。BB:Set Local Position,可以将物体放置到设定的坐标位置。Get Local Position取得目标对象的当前空间坐标。运行时物体的空间坐标不断的向最终坐标靠近,从而达到物体平滑移动的效果。零部件平滑拆装模块逻辑图如图9所示。

图9 零部件平滑移动模块逻辑图

通过不同BB的组合可实现线性转动功能,如BB:RotateAround,实现物体绕指定物体的指定轴线转动指定的角度,但其转动瞬间完成的,通过结合其他BB来实现线性的转动。如图10所示实现线性转动功能的图形化脚本:首先将输入的转动角度通过数学运算转化为弧度,然后在BB:LinearProgression指定的进程时间内循环调用BB:RotateAround完成转动。

图10 BB组合实现线性转动功能

通过这些BB的组合可以实现大多数情况的运动控制。发动机整个装配过程的运动通过以下模块循环应用实现控制:1)视角速度线性变换模块通过BB:Counter、Get World Transform、Set World Transform、Interpolator组合实现;2)显示或隐藏标签描述模块通过BB:2D NLS Text、Compare、vkClickableEnterEvent、Triggers组合实现;3)闪烁模块通过BB:Set Material Override、Delayer、Counter组合实现;4)平滑移动模块通过BB:Get Local Position、Set Local Position、Interpolator组合实现;5)线性转动模块通过BB:Divide、Linear Progression、Multiply Rotate Around、Add组合实现;6)物体渐隐消失模块通过BB:Get Opacity、Set Opacity、Interpolator、Counter组合实现。

2.4 碰撞检测技术

发动机零部件碰撞检测在进行虚拟拆装时,为了避免各个部件产生接触碰撞,需要进行碰撞检测[7]。解决碰撞问题的办法是通过给模型添加物理属性,从而使两个物体之间产生物理碰撞,具体的实现方法是添加vkObject Slider Constraint以防止模型间的干涉。

3DVIA studio中提供了区域检测技术,即当物体进入这个区域后就会触发相应设计好的动作,如图11、图12所示,这在很大的程度上解决了kinect光学体感技术在虚拟航空发动机拆装动画中精度不足问题,只要部件达到一定区域后,就可自动实现精确的拆装。

图11 触发域

图12 进入触发域之后所触发的逻辑图

2.5 搭建多通道沉浸式虚拟现实环境

以3DVIA Studio虚拟仿真平台、数据头盔、四通道POWR WALL式沉浸环境投影系统为基础,搭建沉浸式虚拟仿真环境,以多通道视景同步技术和数字图像边缘融合技术为支撑,根据人眼3D呈象原理,即人眼左右眼在看同一个物体时,有视距差约为5cm左右,所以人眼的左右眼所看到画面是不相同的,通过左右眼视差中包含的物体的深度信息,而在大脑图层重新叠加成三维图像,形成立体视觉。本系统利用此原理,通过设置左右两个摄像机代替人的左右眼,通过脚本编程,让左右摄像机之间差一个人眼的视距,从而获得类似于人眼的左右两个不同的画面,再通过偏振镜等形式使左眼只能看到左画面右眼只能看见右画面从而在大脑皮层重新叠加成3D效果[8]。

把3D摄像机iv Steroscopic Camera Post Process Rendering拖入3D View窗口后,可看到里面包含左右两个摄像机,使用左右眼3D成像原理,选择side by side模式,对VSL脚本语言编程,代码如图13所示。设置两个摄像机cameratomatch和match2代替原来的left和right,采用两个自由的摄像机代替了原来的组件,再通过脚本编程进行控制,如图14所示。以主摄像机为核心里面的Get world transform,左右摄像机和主摄像机之间控制间距通过multiply还有add给主摄像机的x坐标偏移一个半个视距,然后赋给左摄像机,同理向另外一个摄像机向相反方向偏移一个值,给右摄像机,如此就形成了3D显示效果,如图15所示。

图13 3D成像脚本编程

图14 左右眼摄像机脚本编程

3 结论

民航发动机传统维护培训投入大、耗费人力和物力,采用虚拟样机装配替代发动机实物可节省大量培训经费,缩短培训周期,提高发动机装配的质量,保证装配人员工作的安全。本文提供一套民航发动机虚拟装配实验系统的设计框架,实验系统如图16所示。对人机交互设备数据接口进行开发,通过人机交互设备kinect与3DVIA Studio虚拟现实软件相结合,改变传统的键盘鼠标控制模式,使用肢体语言操控发动机虚拟装配,加强发动机装配仿真的逼真度,为虚拟装配提供科学、高效、自然的人机交互解决方案,提高在虚拟环境中进行装配工作分析评价的可信度。以3DVIA Studio虚拟仿真平台,数据头盔、四通道POWR WALL沉浸式环境投影系统为基础,搭建沉浸式虚拟仿真环境,使参与者获得一种身临其境的虚拟仿真视觉感受。

图15 沉浸式左右眼3D显示

图16 民航发动机虚拟装配实验系统

[1]刘国柱.Virtools嵌入式服务器与虚拟现实协同设计平台[J].科技通报,2012,28(4).

[2]高颖,钟啸,许志国,郑涛.基于VR技术的航空发动机虚拟教学实验系统设计[J].系统仿真学报,2008,20(11):2925-2930.

[3]刘江省,姚英学,李建广,等.虚拟装配中基于数据手套的虚拟操作研究[J].系统仿真学报, 2004,16(8):1744-1747.

[4]郑轶,宁汝新,刘检华,杜龙.虚拟装配关键技术及其发展[J].系统仿真学报,2006,18(3):649-654.

[5]胡小强.虚拟现实技术[M].北京:北京邮电大学出版社.2005:107.

[6]付晓靓.基于Virtools与Flash的实时交互虚拟NMR实验室的构建[D].大连:大连理工大学,2011.

[7]Kaufman Stephen G, Wilson Randall H, et al.The Archimedes 2 Mechanical Assembly Planning System[C].Proc.of IEEE International Conf.on Robotics and Automation,1996.USA: IEEE,1996: 3361-3368.

[8]Michael Weyrich,Paul Drews.An Interactive Environment for Virtual Manufacturing: the Virtual Workbench [J].The Computers in Industry,1999,38(1):5-15.

猜你喜欢
摄像机编程虚拟现实
编程,是一种态度
元征X-431实测:奔驰发动机编程
虚拟现实技术在中学校园中的应用
编程小能手
纺织机上诞生的编程
摄像机低照成像的前世今生
风口上的虚拟现实
新安讯士Q6155-E PTZ摄像机
虚拟现实技术向科幻小说借灵感
如何消除和缓解“摄像机恐惧症”