当前位置:首页 期刊杂志

VR环境下的虚拟手自然交互方法研究

时间:2024-07-28

黄培德,王 琳,萧 筝,盛步云

(武汉理工大学,机电工程学院,湖北 武汉 430070)

1 引言

近年来,虚拟现实(Virtual Reality,VR)技术已成为计算机图形学(Computer Graphics,CG)中研究最为火热的领域。虚拟现实为操作者提供高度沉浸式人机交互体验感的特点,使得其广泛应用于虚拟仿真领域,尤其是技术含量较高、样机制造成本较高、危险性较高的制造型岗位,为相关操作人员提供虚拟环境下的教学培训(如大型设备虚拟装配、高精密焊接等)。在虚拟仿真过程中,主要的研究领域之一是开发虚拟手与虚拟物体的自然交互技术。操作者的手部信息往往被采集,并映射到虚拟环境中所创建的虚拟手,使手部所产生的动作与虚拟物体进行交互。诸如数据手套、Microsoft Kinect或Leap Motion等设备均可以实现对人手位姿数据进行动态采集,并在虚拟环境中实时映射为虚拟手的空间位姿。

目前,对于虚拟环境中虚拟手的交互主要集中在虚拟手抓取技术的研究。在虚拟手抓取交互中,抓取方法可以分为基于启发式的抓取方法和基于物理的抓取方法两类。前者是先根据被抓取物体的几何形状进行分类,然后根据分类制定相应的抓取策略,文献[1]中提出了一种在虚拟现实中将手的姿势与力反馈数据手套进行结合的方法,根据手的不同姿势以及力反馈手套的响应;文献[2]针对不同的机械零件类型,对装配中的抓取手势进行分类定义,并给出手势识别算法,文献[3]利用物体形状特征和手指抓握的接触关系制定抓取规则,实现适应物体形状的启发式抓取。因为基于启发式的方法都是预定义一些抓取规则,有一定的局限性,即只能抓取有限的物体,并且虚拟手会和虚拟物体发生干涉;而基于物理的抓取则是根据物理定律对抓取过程进行仿真,其对抓取的物体没有特定的分类要求。文献[4]使用弹簧-阻尼模型和触觉反馈手套。由于数据手套导致每个指尖的自由度降低,这种方法有局限性。此外,抓取力由指尖决定,限制了抓取的可能性。文献[5]提出另一种基于物理的抓取算法使用第二个动态代理手。然而,由于物理力是通过在接触发生后被冻结的代理手施加的,因此除了抓取和推动之外,其他交互作用的可能性并不明显,也相当有限。文献[6]提出了一种基于库仑摩擦模型的虚拟手交互方法。该方法模拟许多类型的动作,如推、拉、抓等操作,而不受物体形状或手姿势的限制。理论上,完全基于物理的方法可以使我们在虚拟环境中像现实世界一样来操纵虚拟物体。然而,由于手跟踪设备的准确性和稳定性,基于物理的交互方法在抓取物体时稳定性很差,即需要缓慢的施加抓取力来防止抓取失败。并且物理模拟的速度和计算复杂性很高,因此,完全基于物理的手交互系统还没有得到广泛的研究。

综上所述,结合基于启发式和基于物理的虚拟手交互方法,通过建立物理仿真环境来使虚拟手与虚拟物体之间能够产生真实的物理交互效果。基于力学相关理论对虚拟手和虚拟物体的接触点和接触力进行了显式建模,防止虚拟手穿透虚拟物体,实现无约束的手和虚拟物体交互,如推、拉、抬等。而对于虚拟手抓取这一方式。改进了稳定抓取物体的判定条件,基于启发式的思想,类比稳定抓取物体时的受力情况,定义抓取对的概念来确定物体的稳定抓取/释放状态,改进了传统物理式交互需要实时计算并判定物体受力闭合情况的方法,提高抓取过程中对物体操作的稳定性。

2 基于FSM的虚拟手交互状态转换

虚拟手与虚拟物体的交互行为是连续的,不同的交互行为对应不同的运动状态,有限状态机(FSM)是一个很好的描述状态控制的数学模型,采用FSM描述虚拟手的交互顺序及状态转换流程,如图1所示。以五元组M=(S,T,R,f,o)来表示。

图1 虚拟手交互的FSM状态转换图Fig.1 FSM State Transition Diagram of Virtual Hand Interaction

S:表示虚拟手的有限状态集合,有四种状态,自由状态,悬停状态,接触状态,抓取状态,每个状态对应着一种虚拟手和虚拟物体的交互状态。

T:表示状态转换条件集合。具体,如图1所示。

R:表示呈现给操作者的渲染结果。

f:表示从当前状态转换到下一状态的映射关系。式(1)表示转换函数f与状态和时间的关系。其中,T(t)∈T,S(t)∈S。

o:表示当前状态和渲染结果的映射关系。如式(2)所示,其中R(t)∈R。

自由状态(S0):虚拟手没有接触任何物体,在这个条件下,虚拟手可以自由移动和手指可以自由弯曲。

悬停状态(S1):虚拟手靠近物体,此时虚拟手没有接触物体。

接触状态(S2):虚拟手接触物体,但没有满足抓取条件,此状态下虚拟手通过对物体施加接触力,与物体进行非抓取状态的交互,如推、抬、戳、击等操作。

抓取状态(S3):虚拟手接触物体,满足基于启发式的抓取条件,此状态下虚拟手可以稳定抓取并操作变换物体。

以上各状态,如图2所示。

图2 虚拟手交互状态图Fig.2 Virtual Hand Interaction State Diagram

3 虚拟手交互方法

3.1 虚拟手建模

为了计算虚拟手与虚拟物体的作用力,同时为避免手与物体相互渗透,保证接触与抓取的视觉真实感,建立虚拟手叠加重合模型,如图3(a)所示。包括实体手模型和刚体手模型,实体手模型由精度高的人手网格模型构成,不检测实体手与三维模型之间的碰撞。刚体手是简化的虚拟手模型,由简单的形状组成:三个胶囊体组成的每根手指和一个长方体的手掌。它是用来检测虚拟手与虚拟物体之间的碰撞。在自由状态下,实体手与刚体手重合,由体感设备捕获的现实手位姿数据驱动自由运动。在接触状态或抓取状态下,实体手模型将被冻结,停止在虚拟物体表面并且实体手的颜色由半透明变成不透明,不再接受现实手的控制,而刚体手则继续跟随真实手运动,可以浸入虚拟物体,如图3(b)所示。在图3(b)的状态下,实体手的手指是被单独冻结的,当刚体手的手指离开物体时,实体手的手指也会随着离开物体,如图3(c)所示。这与现实中手指与物体可以独立接触类似,体现自然的交互。

图3 虚拟手叠加重合模型Fig.3 Virtual Hand Overlay Composite Mode

2.2 虚拟手与虚拟物体接触点估计

在虚拟现实环境中,虚拟手与虚拟物体之间的碰撞检测通过包围盒实现,通过刚体手与虚拟物体包围盒的碰撞来估计它们之间的接触点。碰撞检测目前已有成熟的算法支持,对于三维模型的包围盒采用unity3D 内置的适应虚拟物体轮廓外观的mesh Collider碰撞器,定义了一个非常小的默认接触偏移量λ,作为在刚体手实际接触虚拟物体之前触发碰撞事件的阈值。默认的接触偏移量充当虚拟物体实际包围盒的偏移边界,一旦检测到刚体手和该包围盒的偏移边界发生碰撞,可得到碰撞点pi,此时以pi为起点,pi法线的相反方向投掷射线Rayi,Rayi与虚拟物体实际包围盒的接触点ci即为虚拟手与虚拟物体表面的精确接触点,如图4(a)所示。虚线框为阈值的边界。虚拟手与虚拟物体的实际接触点,绿色线段为接触点的法向方向,如图4(b)所示。

图4 虚拟手接触点估计Fig.4 Virtual Hand Contact Point Estimsation

确定手与物体表面的精确接触点之后,以延迟时间t来冻结实体手与物体表面接触对应的手指或手掌,使之在视觉解决虚拟手与虚拟物体的穿透现象:

式中:vh—刚体手上点p1的瞬时速度;spc—点pi与ci的距离。

2.3 接触力的计算与施加

接触力即虚拟手对虚拟物体施加的外力,其在接触状态中虚拟手与虚拟物体的交互起到了关键的作用。定义接触力的大小由刚体手与虚拟物体的干涉深度决定,如图5所示。

图5 接触力计算示意图Fig.5 Schematic Diagram of Contact Force Calculation

在真实世界抓取物体时,接触力会随着皮肤和肌肉的形变逐渐趋于定值。即接触力不会无限制增加,会逐渐趋于一个常数,而且力的增加并不完全是线性的,当超过一定的阈值后,会呈现逐渐缓慢的趋势,因此,采用非线性弹簧模型来计算接触力[7]:

式中:k1,k2—弹性系数,与虚拟物体的质量有关;b1、b2—阻尼系数;vr—刚体手的位置;vg—实体手位置;△d—pi与ci的距离。d1—非线性弹簧模型中拉伸力由线性阶段到指数缓慢变换阶段过渡的阈值;d2—由指数缓慢变换阶段到常数阶段过渡的阈值;B—接触力最大值。

对与接触力的施加,计算每根手指接触力的大小和方向后,在虚拟手与虚拟物体的接触点施加接触力。所提的方法充当虚拟手与物理引擎的中间件,而物体间的重力加速度和碰撞力等外力由物理引擎内部处理。通过施加接触力的作用,推、举等物理相互作用完全可以通过物理模拟来实现。

2.4 实时虚拟抓取

2.4.1 稳定抓取的条件

在实际抓取中,对于一个稳定的抓取,则需要接触力与摩擦力的共同作用,由于摩擦力是在接触虚拟物体表面的切线方向上施加的,在任意六自由度手部运动下,摩擦力可能不足以稳定的抓住三维模型。它导致抓取时无法始终保持虚拟物体的运动,或者使用者应该很慢地移动他/她的手来持续地施加足够的摩擦力,这造成抓取时的不稳定性,因此,采用启发式准则来判定三维模型是否处于稳定的“被抓取”状态。现实生活中若想稳定抓取一个物体,则手指与物体之间至少有两个接触点,且稳定抓取物体的充分条件为手在接触点处的接触力应该在此点的摩擦锥之内。类似这个现实手的抓取现象,定义抓取副来作为三维模型是否被稳定抓取的判定条件。抓取副:对于刚体手与虚拟物体的任意两个接触点ci、cj来说,两个接触点的连线与各自接触点法线之间的角度不超过一个特定值。即这个角度在摩擦锥内,则这两个接触点将构成一个稳定的抓取副g(ci,cj),其应满足式(5):

式中:Vji—接触点ci到cj的向量;ni—接触点ci处的法向量;∠(ni,Vji)—向量ni与向量Vji之间的夹角。

三个接触点c1,c2,c3形成两个稳定抓取副g(c1,c2)与g(c1,c3)的情况,如图6所示。

图6 抓取副情况Fig.6 Grab Pair Case

当至少存在一对抓取副时,则判断虚拟物体抓取成功。

2.4.2 虚拟物体位姿变换

当抓取条件判定成功后,根据组成抓取副的接触点ci对应的刚体手上的pi组成的点集计算虚拟物体的位姿变换。此时有两种情况,一种是刚体手停留在虚拟物体表面,与虚拟物体表面接触;另一种是刚体手穿透到虚拟物体内(由于真实手与虚拟手的映射是单向耦合关系,在抓取移动过程中,真实手可能会无意识的变动)。用手指指尖区分这两种情况:当拇指指尖与其他任一手指指尖与虚拟物体表面接触,则判定刚体手停留在虚拟物体表面,即穿透深度小于刚体手指的宽度,否则刚体手穿透到虚拟物体内,如图7所示。

图7 虚拟物体的位姿变换的点集Fig.7 Point Set of Pose Transformation for Virtual Objects

对于前者,设n是抓取副的对数,当n=1时,操作是直接的,物体的位姿跟点pi,pj组成的线段Lij的位姿而变化。点pi,pj的位置变化由体感设备捕获手的数据决定,如式(6)所示。

式中:qLij—线段Lij旋转变换的四元数;mij—线段Lij的中心。

此外,当线段Lij围绕自身旋转时,上式中的qLij将不会产生变化,导致物体不会旋转。此时应当在式子左乘线段Lij绕自身旋转的四元数,如式(7)所示。

当n>1时,物体的位姿变换由所有抓取副的接触点ci对应的刚体手上的pi共同决定,每个抓取副对物体位姿变换的贡献是不一样的。为此,给每个抓取副定义一个权重系数wi,wj的计算由式(8)确定:

式中:m—所有抓取副所组成线段的中心。

物体的旋转变换则是由所有抓取副G={g1,g2,…,gn}组成线段Lij旋转变换的四元数Q={q1,q2,…,qn}确定,定义qmean为集合Q的平均旋转四元数,qmean的由式(10)计算[8]。

其中,M根据四元数qi和其对应的权值wi构造4*4的矩阵,M最大特征值对应的单位特征向量就是所求的加权平均值qmean。

对于刚体手穿透到虚拟物体内的情况。虚拟物体的位姿变换由Kabsch算法来计算虚拟物体的最佳位姿变换矩阵。设P是第k帧刚体手与虚拟物体的碰撞点pi组成的点集,Q是第k+1帧碰撞点pi组成的点集。则最佳位姿变换矩阵R,如式(11)所示。

式中:H—互协方差矩阵。

3 仿真实验与结果分析

为验证所提出方法的有效性,基于unity3d游戏引擎构建虚拟环境。采用leap motion体感控制器来捕捉手的位姿数据和使用HTC VIVE显示三维场景,如图8所示。使用所提出方法与不同零件的交互效果示意图,如图9所示。从左到右分别为:三指抓取螺丝刀,抬起轴承,抓取减速器下箱体。另外,为验证所提方法操作零件位姿的精确性,根据文献[9]所提的零件虚拟装配的方法。使用双手进行一级减速器齿轮轴与轴承的装配。如图10所示。

图8 实验场景Fig.8 Experimental Scenario

图9 虚拟手与不同零件的交互Fig.9 Interaction of Virtual Hand with Different Three-Dimensional Models

图10 齿轮轴与轴承的装配过程Fig.10 Assembly Process of Gear Shaft and Bearing

从左到右分别为,双手分别抓取齿轮轴和轴承,并互相靠近;识别齿轮轴与轴承的同轴约束,轴承在同轴约束下向齿轮轴靠近识别共面约束;装配完成,轴承与齿轮轴形成子装配体。经过多次实验,上述同轴约束与共面约束识别的阈值为d=8mm,θ=5°。证明所提方法能够比较精确的调整零件的位姿,完成虚拟装配任务。

4 结论

针对虚拟仿真系统虚拟手交互方式单一,沉浸感不强。提出了一种在VR环境下简单、稳定、计算效率高的手-零件交互方法。实现对机械零件的抓取、推、抬等交互操作的精确模拟。并通过常用的机械装配实例验证表明。通过虚拟手直接操作机械零部件,与以往基于手势的交互方法相比,所提方法能够提升交互过程中的沉浸感,为精确的装配提供可能。所提的虚拟手交互方法适用于机械零件的装配过程仿真、装配操作培训及虚拟产品维修。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!