基于力反馈的虚拟拆卸系统关键技术研究
2014-07-09夏文文杨艳芳陈定方
李 嘉, 侯 文, 夏文文, 杨艳芳, 陈定方
(1. 海军潜艇学院动力操纵系,山东 青岛 266042;2.武汉理工大学智能制造与控制研究所,湖北 武汉 430063)
通过分析近几年虚拟现实技术的发展,可明确得出人们对于虚拟现实的要求已经不仅仅是停留在视觉上,人们更希望可以有更好的“沉浸感”,因此对于听觉、触觉等的要求就不断增多。基于力反馈的虚拟拆卸系统的实现主要是将虚拟现实与力反馈器相结合,实现更好的人机交互。人们可以通过更多的感官来更好地实现与虚拟世界的交流。
自20世纪90年代以来,力/触觉反馈的研究蓬勃发展,目前已经取得了一定的研究成果[1]。国内外绝大多数力反馈研究是基于Phantom(一种具有6自由度输入,可产生3自由度力反馈的设备),研究主要针对刚体或者柔体的力/触觉反馈,但该力反馈设备价格昂贵,难于商用和推广。国内江南大学的张秋菊、童明等人自行研制了基于电磁原理的二维力交互装置——力感鼠标,并以此为硬件基础,进行了简单力觉交互实验,但力感鼠标的性能有待进一步完善,不能形成量产,无法应用于成熟的虚拟拆装系统。
基于力反馈的虚拟拆卸系统,为了实现更好的沉浸感和人机交互,在系统实现过程中要解决碰撞检测问题。碰撞问题牵涉到碰撞检测和碰撞响应两部分内容。碰撞响应问题属于力学的研究领域,碰撞问题的具体应用很广泛[2]。例如,虚拟环境应用中的飞行员和宇航员的培养与训练、机器人的路径规划和学习、交互式动画系统、人体躯干的配合等。碰撞检测问题按运动物体所处的空间可分为二维平面碰撞检测和三维空间碰撞检测。由于平面物体的构造都可用多边形来表示,故其检测算法相对要简单一些;而三维物体的构造比较复杂,所以,其碰撞检测算法也比较困难。
本系统利用 PHANTOM Omni力反馈装置(如图 1),结合 VC++与 OSG(open scene graph),实现了虚拟物体的拾取和交互式移动,针对典型机械装备,开发了基于力反馈的交互式虚拟拆卸系统。该系统目的是通过利用力反馈器设备实现对机械设备的虚拟拆卸,并完成维修和保养等基本操作。
图1 PHANTOM Omni力反馈器
1 基于力反馈的虚拟拆卸系统的工作原理
为了虚拟拆卸系统能实现应有的功能,对于系统总体框架和各部分小系统的集成研究都是至关重要的[3]。
如图2所示,基于力反馈的虚拟拆卸仿真系统主要由两大部分组成:计算机生成的虚拟环境和力反馈设备。该系统是一个双向闭环系统,首先用户通过操作力反馈器末端的手臂完成 6自由度的输入,接下来由空间匹配模块来完成位姿的转换,位姿是不断发生变化的,空间匹配将其作为计算机虚拟环境的输入。力觉/触觉渲染模块在整个力反馈过程中发挥了很重要的作用,首先要根据虚拟环境与代理节点以及虚拟信息的交互状态快速的进行反馈力的计算,完成反馈力的计算之后要及时的将反馈力的结果发送给力反馈器设备,力反馈器设备主要任务就是根据所要输出的反馈力的大小和方向来驱动电机进行转动,目的就是把要输出的反馈力转化为机械能,这样用户才能感受到反馈力的大小。
图2 力反馈应用系统结构图
如上述所知,要实现的关键技术就是空间匹配模块和力觉/触觉渲染模块。这两个模块分别是需要借助空间匹配算法和反馈力计算算法来实现的。
2 基于力反馈装置的虚拟拆卸系统实现流程
虚拟维修训练系统中,对于虚拟实体的拾取、操作与控制,依据交互设备的不同有两种类型交互方法[4]:基于鼠标和键盘的交互方法(对应非沉浸式虚拟维修);基于力反馈器、空间球、立体眼镜、空间定位装置和数据手套,采用直接操纵技术的交互方法(对沉浸式虚拟维修)。本系统对这两种交互方法都进行了探索和实现。
2.1 鼠标交互
鼠标和键盘交互方法的实现在本系统中是利用了两种方法实现的[5]:其一,利用 3D图形开发库OSG中Dragger类实现;其二,结合了图形用户接口CEGUI和3D图形开发库OSG进行了系统实现。
第一种方法,利用OSG中的Dragger类进行拖曳拆卸,拖曳技术可以在X、Y、Z轴3个方向对零件进行平移操作。将拖曳器与零件节点共同添加到父节点中,即可实现对该零件的拖曳。该技术使操作人员手动模拟拆卸各个零件,使操作人员对拆卸过程和顺序有更清楚地练习和熟知,实现的效果如图3所示。
图3 利用拖拽技术实现拆卸图
第二种方法是将图形用户接口CEGUI和3D图形开发库 OSG相结合进行实现,用户可直接通过选取某一零件,零件的名称会在图形界面上高亮显示。用户也可以按顺序选择操作的零件,选中后,与该零件匹配的拖曳器会显现供用户操作。其图形界面如图4所示。
图4 结合CEGUI和OSG的虚拟拆卸图
2.2 力反馈交互
在本系统中,研究基于力反馈器的交互方法是基于osgHaptics中HapticsDevice类的拾取法。力反馈虚拟拆卸流程如图5所示。
图5 虚拟拆卸流程图
3 基于力反馈装置的虚拟拆卸系统实现的关键技术
基于力反馈装置的虚拟拆卸系统的实现的关键技术主要包括力反馈器与模型的关联技术、利用力反馈器实现模型的拾取及碰撞检测技术等[6]。
3.1 力反馈实现虚拟拾取
在设备初始化完成之后,需要为力反馈器在三维虚拟场景中找到一个“代理”,将力反馈器的运动状态实时地反应到图形渲染中。
这里的关联仅仅是将力反馈器与其在三维场景中的“代理”发生联系。真正有意义的部分在于如何通过力反馈器来控制其“代理”。力反馈器与proxy_sphere节点进行关联,proxy_shpere又是矩阵位移节点 proxy_transform节点的子节点,也是该分支上的叶子节点。其层次关系如图6所示。
图6 “代理”节点分支层次图
从图6可以看出,力反馈器的最终的“代理”节点是proxy_sphere节点,力反馈器的运动能在该节点上实时地显示出来。将力反馈器的运动轨迹在三维场景中能实时地反应是利用的“代理”节点的父节点,即proxy_trans节点。
3.2 力反馈器与场景模型的关联
osgHaptics是一款由 C++编写的,基于Windows平台的工具包,由瑞典Umea University VRLab实验室开发[7]。osgHaptics将力觉渲染融入OSG渲染库。它采用SensAble公司的OpenHaptics设备。同时,它还支持多触觉设备。
用Visual Studio 2005打开osgHaptics.sln文件,为 osgHaptics和 osgSensor两个项目配置OpenHaptics工具包中的include、lib两个文件夹以及相应的 DLL文件,还需在本地计算机安装PHANTOM 的驱动,整个环境的配置与 osgAL的编译过程类似。编译成功后会生成osgHaptics.dll、osgHaptics.lib、osgSensor.dll、osgSensor.lib 4个链接库。利用这4个库以及工具包中的文件即可结合PHANTOM Omni力反馈器进行虚拟拆卸系统的开发。
力反馈器控制在虚拟场景中的“代理结点”,图 7中黄色区域中的结点。该结点是通过读取pen.ac这个模型实现的。在操作力反馈器时,虚拟场景中的“代理结点”也会随之发生位移、旋转等。在“代理结点”接触到场景中的模型中的零件时,零件的颜色被标记为红色。当“代理结点”与零件模型有重叠部分,在移动力反馈器时会明显地感觉到一定的阻力;当“代理结点”与零件模型刚好接触时,此时,操作员可感觉到一股巨大的阻力,相比“代理结点”与零件模型有重叠时的情景要大的多。在“代理结点”与方块模型发生碰撞后,按下力反馈器手臂上的白色按钮,零件模型会依附在“代理结点”上,操作人员操作力反馈器可将零件模型放置到合适的位置。
该类继承于 osgSensor::Sensor。从该类的头文件描述可以获知,该类实现了读取设备数据、关闭设备、返回力反馈器的位置与角度、获取设备的线性速度、力度等数据。其内部还包含两个内部类—RenderForce和 WorkspaceStruct。HapticsDevice类的层次结构简图如图7所示。具体的实现代码如下。
图7 HapticsDevice类的层次结构图
3.3 采用物理引擎ODE实现碰撞检测
在力反馈虚拟拆卸系统中,为了实现更好的沉浸感和达到更好的交互效果,在拆卸过程中加入了碰撞检测技术。
ODE(open dynamics engine)有一个内嵌的碰撞检测系统[8]。ODE的碰撞检测系统通过“空间”的概念可以快速的确定潜在相交的物体。ODE基本对象[9]:
仿真世界:存储物体对象的容器。
刚体:仿真系统中主要操作的对象。具有物理属性。
几何体:碰撞系统中的基本对象。只具有几何属性。
碰撞空间:用来简化和加快碰撞检测的一个对象。
本系统利用ODE与OSG结合实现的碰撞检测。图8所示为ODE与OSG相结合的模拟流程,主要的结合过程如下:
创建一个ODE动力学世界;
(1)创建动力学世界中的各种刚体;
(2)设定各个刚体的状态(位姿、质量、密度等)信息;
(3)创建动力学世界中的关节;
(4)联结关节到刚体上;
(5)设定所有关节的参数;
(6)创建碰撞空间和碰撞几何对象;
(7)创建关节组并纳入所有的接触关节;
(8)循环:①根据具体情况,给刚体施加力;②根据具体情况,调整关节参数;③调用碰撞检测函数;④为每个碰撞点创建一个接触关节,并将其加入接触关节组中;⑤开始仿真步(更新场景);⑥移除接触关节组里的所有关节;
(9)销毁动力学世界和碰撞世界。
图8 ODE与OSG结合的碰撞检测流程
建立ODE中对应几何体:将场景模型和设备模型转化为OSG可识别模型,并将其三角化。构建ODE几何体对象:将ODE的模拟结果传递给OSG,以实现场景的数据交互与实时更新。
4 系统实现
在项目研发的初期阶段,结合OSG三维图形引擎与PHANTOM Omni力反馈器,实现通过力反馈拾取场景中的物体。项目效果如图9所示。
力反馈技术是虚拟拆卸系统中实现更好的人机交互训练的一个核心技术。本文简要叙述了PHANTOM力反馈器的使用方式及相关技术,并对osgHaptics这一开源项目进行叙述,提出了基于osgHaptics中HapticsDevice类的拾取方法,基于力反馈器与虚拟实体运动的关联的拆卸方法,开发出一套实用的基于力反馈的虚拟拆卸系统,有效的提供了一种拥有更好“沉浸感”的虚拟拆卸境,使装配维修人员更好的完成装配、拆卸、维修等工作,同时还有效的推进机械模拟训练的现代化发展[10]。
图9 基于力反馈器的虚拟拆卸系统
[1] 马文涛. 基于力反馈装置的虚拟装配人机交互研究[D].大连: 大连海事大学,2011.
[2] 郑太雄,何玉林. 基于触觉反馈和运动约束的虚拟装配操作[J]. 计算机工程与应用,2004,40(5): 84-86,90.
[3] 陈定方,罗亚波. 虚拟设计[M]. 2版. 北京: 机械工业出版社,2007: 28-40.
[4] 闫锋欣,侯增选,张定华,祁小苑,宁志鹏. 支持触觉力反馈的虚拟油泥造型系统[J]. 中国机械工程,2009,20(19): 2372-2377.
[5] 肖 鹏,刘更代,徐明亮. OpenSceneGraph三维渲染引擎编程指南[M]. 北京: 清华大学出版社,2010,3:197-219,320.
[6] 夏平均,姚英学. 虚拟装配的研究综述与分析(I)[J].哈尔滨工业大学学报,2008,40(5): 740-744.
[7] 范玉青. 波音 787飞机总装配线及其特点[J]. 航空制造技术,2011,23(Z2): 38-42.
[8] 侯 鹏,张丽新,杨碧琦,杨国云. 某型号卫星虚拟装配技术研究及应用[J]. 航空制造技术,2011,(22):70-73,93.
[9] 彭 涛,李世其,王峻峰,徐 迟. 基于增强人机交互技术的虚拟装配[J]. 计算机辅助设计与图形学学报,2009,21(3): 354-361,368.
[10] 李勋祥,饶 成,陈定方. 基于 Virtools的视景系统优化技术研究[J]. 武汉理工大学学报(交通科学与工程版),2008,32(1): 100-103.