摘 要: 介绍了虚拟操作的概念和应用前景,以及实现虚拟操作的方法,并探讨了利用动力学分析的方法实现基于数据手套的虚拟操作时的关键技术问题:碰撞检测算法、建立虚拟接触力模型、虚拟物体运动解算等。
1 引言
虚拟世界是通过计算机成像生成视觉信息,并利用其它反馈设备来提供触觉、力觉、听觉、嗅觉等效果而生成的模拟真实世界的环境。虚拟操作是真实人与虚拟世界交互的一种方式。虚拟操作与真实操作的区别在于操作对象是虚拟的,操作对象的一切属性,包括几何形状、材质、纹理、硬度、重量等,都是通过计算机赋予的,因此可以随意更改。
这使得虚拟操作相对于真实操作具有更大的灵活性和复杂性。人在操作真实物体时,通过视觉、触觉和力觉,可以感受到物体的表面特征,手与物体的接触情况和受力大小,以及手与物体的相对位置和运动,从而操作物体。而对于虚拟操作,操作的主体——人,存在于真实世界,而操作对象存在于虚拟世界,二者之间不可能有物理接触。所以只能是人进入虚拟世界,也就是利用位置跟踪设备测量人体的位置和运动,通过计算机成像在虚拟世界中建立人的代理(实物虚化),然后通过虚拟代理来操作虚拟物体。它与虚拟世界中虚拟人操作的区别在于,虚拟人的决策和运动都是由计算机控制的,与真实人没有对应关系,而真实人的虚拟代理,其决策和运动都是由人控制的,与真实人一致。
虚拟操作的灵活性使得它与真实操作相比有许多优越性,因此有广泛的应用前景。用这种技术可以开发各种虚拟训练器,用于设备的维修或装配训练。相对于实物训练,它可以降低花费,具有可重用性和可扩展的优点。当设备升级或更改时,只需对软件模型做部分修改,即可继续使用,而且不存在实物的磨损、毁坏问题。还可以在软件中加入评估过程,对训练结果进行实时评估。这些优点都是实物训练器难以企及的。还可以应用于 CAD/CAM 中,对设计的产品进行预演,进行设计评估。尤其是国际上现在普遍关注的虚拟医疗训练,更能突现虚拟操作的优势。外科医师必须经过严格的医疗手术训练才能正式给病人动手术,用病人做训练工具是不允许的,有些国家用活的动物进行练习也是法律禁止的。而要仿造人体实物模型又很昂贵,因此用虚拟医疗训练是最佳选择。
本文以下部分介绍了虚拟操作的研究方向,并探讨了基于动力学分析的虚拟操作实现中的关键技术问题:碰撞检测算法、建立虚拟接触力模型、虚拟物体运动解算等。
2 虚拟操作中的技术问题
简单的虚拟物体操作可以使用鼠标、键盘等交互设备,通过预先定义的运动规则实现象征性的操作,这种操作显然与真实操作有很大差别。比较逼真的操作方法都是使用数据手套跟踪手和手指的运动,利用获取的数据在计算机中生成虚拟人手,来模拟真实操作过程。目前来看,利用数据手套的虚拟操作有两个研究方向:一种是基于手姿的方法,先通过碰撞检测确定手与物体的接触关系,再通过识别手的不同位姿,结合接触点的位置关系,来判断稳定抓持状态,从而实现手的抓取和释放操作[1][6] 。这种方法比较简化,操作精度不高,无法实现手与虚拟物体之间复杂的相对运动,而且不能提供力反馈数据;另一种则是基于动力学分析的方法,先通过碰撞检测计算手与虚拟物体的接触部位,然后对虚拟物体进行受力分析和运动分析,来确定手与物体的相互运动关系[2][7][8],这种方法在受力分析时需要计算虚拟接触力,该数据可以提供给力反馈设备产生反馈力。本研究采用的是后一种方法。基于动力学分析的虚拟操作过程如下:
图 1 虚拟操作流程图
2.1 碰撞检测
要执行碰撞检测,首先要将导入的场景图(scene graph)进行简化处理,生成碰撞检测模型树或触觉场景图(hapticscene graph)。因为场景图为了达到渲染效果,模型结构一般比较复杂,而碰撞检测做交叉测试时非常耗费计算资源,因此为了满足实时性要求必须对模型进行简化。最常用的模型是以面为基本元素,用多边形近似几何体表面;还有用体为基本元素,用简单的球、锥或方体等组合成几何体;以及用其它形状如隐函数曲面、参数曲面等表示几何体的方法。
从场景图模型生成碰撞检测模型有很多种算法,采用何种算法要根据对碰撞检测模型精度的要求,显然精度要求越高,模型越复杂,需要的计算资源也越多。在生成单个的碰撞检测模型后,还要将模型组织成树形结构,该结构的组织将影响到交叉测试的速度。一般为了加速计算,需要生成几级模型,先用简单的模型作粗选,排除完全不可能接触的模型对,然后对剩下的模型对做交叉测试。交叉测试就是查找最近特征对,特征对的选择也有很多方法,具体取决于采用的碰撞检测模型和系统要求。最简单的要求是要知道两个模型是否有接触;有时候还要知道是哪一部分接触;某些情况下需要知道两个模型之间的距离或者穿透深度;甚至有时候还要考虑模型的变形,则会更复杂。在许多应用中,碰撞检测都是主要的计算瓶颈[3][9][10]。
对于虚拟操作,由于本研究中要分析接触点的受力,因此需要知道接触点的位置和接触面法向量,构造虚拟力还需要知道穿透深度。虽然手指本身应该是可变形体,此处为了简化,不考虑它的变形。因此可以采用多边形近似的层次表示模型,采用 V-CLIP 算法结合其它加速算法。
2.2 虚拟接触力模型
手指本身是可变形体,因此它与操作对象之间实际不是点接触,而是面接触,而且接触力的分布是不均匀的,手指的表面刚度和阻尼系数随接触时间、接触面积的变化而变化,因而很难精确地建立接触力分布模型。有些研究采用非线性接触有限元的方法建立接触力模型,但是由于该模型的高度非线性,需要大量的计算机资源求解,不能满足操作的实时性要求[4]。我们此处对接触模型做简化处理,不考虑手指和物体的变形,即都作为刚体,而且认为手与物体之间为点接触,接触力有两个分力:压力和摩擦力。
压力方向沿着接触点所在手指平面的法向量方向。摩擦力的情况比较复杂,对应手与物体之间不同的相对运动,有静摩擦、滑动摩擦和滚动摩擦,摩擦力的方向和摩擦系数的大小都是随运动和接触状态的变化而变化的。虚拟操作与真实操作的差别在于手与操作对象之间没有物理接触,手与物体的相对位置关系主要是通过计算机产生的视觉反馈获知的,但是视觉的分辨率有限,而且还存在遮挡情况,尤其是计算机生成一帧图象的时间远大于人的反应时间,也就是说虚拟操作系统存在固有的时间延迟,因此虚拟操作中必然会出现穿透现象。
虽然可以利用触觉和力反馈设备模拟物体对手的作用力,但是,一方面接触点位置和虚拟力的计算都不是很精确,另一方面目前的触觉和力反馈设备对手指的作用位置和作用力的大小方向都不能随接触点和虚拟力灵活变化,与实际作用有很大差异,设备的延迟也给系统引入了不稳定因素,因此触觉和力反馈能够减小穿透深度,但不能避免穿透问题。
由此,我们可以利用穿透深度定义虚拟力的大小,即定义:手指对虚拟物体的压力与穿透深度成正比,摩擦力与压力成正比,
(1)
其中, 分别为第i 个接触点的压力和穿透深度,k为压力系数。
(2)
其中,fi 为第i 个接触点的摩擦力,a 为摩擦系数,摩擦力方向与运动或运动趋势方向相反。
2.3 稳定抓持判断
虚拟物体的受力有两种:重力、接触力(包括压力和摩擦力)。其中接触力还包括手与物体之间和物体与物体之间的相互作用力。当前对虚拟操作力的研究,一般都只考虑了重力和手与物体之间的压力,而很少考虑摩擦力以及物体与物体之间的作用力。本研究中全面考虑所有受力,但是对受力和运动模型都做了简化,原系统中的一些时变因素没有考虑,使得系统的阻尼减小,收敛速度减慢,因此在力和力矩平衡计算时,放宽平衡条件,给定一个平衡范围,使之加速收敛。即平衡条件为:
(3)
(4)
其中 n 为接触点数目,m 为物体质量, 为接触面单位法向量,为单位切向量,为接触点到质心的径向量,为合力, 为合力矩,η为给定的力平衡范围,ξ为给定的力矩平衡范围。
2.4 虚拟物体的运动解算
在手抓住物体之后,物体相对于手有随动也有相对运动。在机器人学中,对于多指手操作有很多种算法,也都是做了不同程度的简化[5]。虚拟物体的随动,按照铰接体的坐标转换即可计算出;相对运动可以从动力学角度计算,也可以根据接触点的运动轨迹来计算。此处我们采用动力学的方法计算,并且只考虑物体为刚体的情况。则物体的运动为一般刚体运动,没有固定的轴,也没有特定的方向,约束数也是随接触点数目变化的,因此其动力学方程很复杂,方程数目也是变化的,解算起来很困难。因此此处对动力学方程进行简化。认为手的加速度为0,即手为匀速运动,则虚拟物体运动相对的手坐标系为惯性坐标系。在一个计算周期内,认为物体为匀速运动,则有:
(5)
(6)
其中 n 为接触点数目,m 为物体质量,I 为转动惯量,△v为速度变化量,Dw 为角速度变化量。
3 结束语
本文针对虚拟操作中的几个主要技术问题进行了探讨,并提出了相应的实现算法,但是由于人手是一个复杂的结构,手与操作对象之间的作用力和运动都很复杂,而且不同手不同物体之间都有差异,很难精确建模。尤其是本文的研究中没有考虑手和虚拟物体的变形,而模型的变形对于虚拟医疗手术很重要,这是今后研究的一个重点。
参考文献:
[1] 曾芬芳, 梁柏林, 刘镇, 王建华. 基于数据手套的人机交互环境设计[J]. 中国图形图象学报, 2000, 2.
[2] Ronan Boulic,Serge Rezzonico, Daniel Thalmann. Multi-FingerManipulation of Virtual Objects [Z], 1995.
[3] Ming C Lin, Stefan Gottschalk. Collision detection betweengeometric models: a survey [Z], 1998.
[4] 丁国富, 王金诺. 基于接触有限元模型的虚拟手指力建模研究[J]. 计算机仿真, 2000, 7.
[5] 管贻生, 张启先, 李泽湘. 多指手操作:运动学算法和实验[J].机器人, 1998, 9.
[6] Thomas Ullmann, Joerg Sauer. Intuitive Virtual Grasping for nonHaptic Environments [J]. IEEE, 2000.
[7] Bergamasco M, Degl’Innocenli P, Bucciarelli D, Rigucci G.Grasping and Moving Objects in Virtual Environments: a preliminaryapproach towards a realistic behaviour [A]. IEEE InternationalWorkshop on Robot and Human Communication, 1994.
[8] Bergamasco M, Degl’Innocenli P, Bucciarelli D. A RealisticApproach for Grasping and Moving Virtual Objects [J]. IEEE, 1994.
[9] Ji-Hoon Youn, Wohn K. Realtime Collision Detection for VirtualReality Applications [J], IEEE, 1993.
[10] Sarah F Frisken-Gibson. Using Linked Volumes to Model ObjectCollisions, Deformation, Cutting, Carving, and Joining [J]. IEEETransactions on Visualization and Computer Graphics, 1999, 5(4).