APP下载

沉浸式虚拟训练中的虚拟手操控技术研究

2017-03-21张玉军汤华军

计算机测量与控制 2017年2期
关键词:手掌手势手指

张玉军,邢 辉,汤华军

(1.解放军69079部队,乌鲁木齐 830013;2.解放军69240部队,乌鲁木齐 830011)

沉浸式虚拟训练中的虚拟手操控技术研究

张玉军1,2,邢 辉1,汤华军2

(1.解放军69079部队,乌鲁木齐 830013;2.解放军69240部队,乌鲁木齐 830011)

将人手的自然动作加入沉浸式虚拟现实系统中,可有效提高系统的沉浸感和交互性,简便快捷、成本低廉的虚拟手建模及操控技术,有助于此项内容的推广应用;在对虚拟手骨骼结构模型分析的基础上,提出了基于Leap Motion的虚拟手控制方法和流程;以维修训练为任务背景,设计了四种用于虚拟手操作的手势规则,并对实现流程和关键技术进行了分析;构建基于Unity3D引擎的原型系统对虚拟手进行仿真验证,结果表明,基于Leap Motion的虚拟手操控简单、交互自然,可以满足虚拟现实系统交互需要。

手势识别;虚拟现实;虚拟手

0 引言

随着虚拟现实(virtual reality)技术的不断发展,先后出现了桌面式、沉浸式、分布式、增强现实等不同形式的虚拟现实系统。其中,沉浸式虚拟现实系统将用户感官完全与外界隔绝,使用户在不受干扰的情况下形成持久专注力,这种特点使沉浸式虚拟现实系统广泛应用于各种训练领域,虚拟手元素则是其重要的组成部分。

沉浸式虚拟训练中的虚拟手操控主要分为两部分:1)对虚拟手的控制,实现场景中虚拟手的移动和旋转,即实时感知人手信息并更新场景中的虚拟手,使两者的位置和姿态趋于一致[1];2)虚拟手的相关操作,如抓取、点击、指示等,通过虚拟手的操作可实现用户与场景的交互,完成相关训练内容。

目前国内外学者提出了一些虚拟手模型及操控的实现方法:在虚拟手构建及控制方面,Esteban等设计了25DOFs的虚拟手骨骼模型,根据D-H方法定义了虚拟手的各关节链接关系,对手模型的真实运动进行仿真[2];殷磊等建立了虚拟手的关节模型和实体模型,通过数据分解和矩阵变换将数据手套获取的手掌位姿信息映射到虚拟场景中,实现对虚拟手的准确控制[1];W.F.Chen等基于对偶四元数法设计了虚拟手交互模型,并提出了支持手势交互与3D操作的虚拟手交互框架[3]。在虚拟手操作方面,杨宏生等在Vega环境中,设计了虚拟手对杆状物、开关、按钮的操作规则及流程[4];X.H.Liu等设计了虚拟手操作框架,通过匹配虚拟手位置参数与手势定义数据库,实现虚拟手对常用手势的操作[5];李克彬等根据人手抓取物体时的特点,设计了虚拟手抓取规则,并在Open Inventor实现虚拟操作[6]。

上述虚拟手的构建与控制,多是通过数据手套完成的,设备昂贵、算法复杂且手部受限感明显,影响交互效果;也有基于光学的手势识别研究,但没有构建完整的手模型[7]。基于此,论文采用Leap Motion光学手势跟踪设备,以裸手交互为目标,构建虚拟手模型,设计手势及操作规则,并通过实例进行仿真验证。

1 虚拟手模型的构建及控制

1.1 虚拟手结构模型

人手有27块骨头,包括腕骨、掌骨和指骨三部分,8块位于手腕处,3块位于拇指(1块掌骨,2块指骨);4块掌骨和12块指骨平均位于其它四根手指,骨头之间通过不同类型的关节相连。为保证虚拟手能能够模拟真实手的各种姿态,必须建立其关节模型,确定各关节间的运动逻辑,包括运动约束关系和运动状态继承关系。根据手的解剖结构和运动特性,建立虚拟手骨骼关节模型,如图1所示。在此基础上,利用3dmax或Maya等建模软件,采用实体建模的方法,构建虚拟手实体模型。

图1 虚拟手骨骼关节模型

该模型由15个手指关节和一个手掌组成,每根手指均包括掌指关节(Metacarpophalangeal,MCP)、指尖关节(proximal interphalangeal,PIP)和指端关节(distal Interphalangeal,DIP),相连关节之间遵循铰接运动约束关系,即两者可以相对转动但不能移动。关节之间的连接箭头表示关节之间父子关系,箭头根部为父节点,头部为子节点。父节点的运动状态传递给子节点,而子节点的运动状态对父节点不产生影响。虚拟手各关节的运动主要由两种运动形式[8]:1)屈和伸;2)内收和外展。

模型共包括27个自由度(DOFs),其中:Index、Middle、Ring和Pinky每根手指包括4个自由度(MCP关节2个,PIP、DIP关节各1个),Thumb手指包括5个自由度(MCP、PIP关节各2个,DIP关节1个),手掌的空间位置和方向需要6个自由度,各关节自由度标号如图2所示。

Leap Motion进行手部识别时,其SDK算法已经进行了必要的运动约束,避免了非法值的出现[9]。因此,虚拟手模型的骨骼约束仅考虑了上述自由度约束,未对其他进行详细约束。

1.2 虚拟手运动控制

1.2.1 Leap Motion手势识别特点

Leap Motion是一个检测手势运动的传感器,采用红外成像原理,通过内置的两个摄像头捕捉传感器上方25~600 mm之间,大致呈倒立金字塔范围内的信息,可识别每根手指的位置、姿态、速度等参数,动作跟踪精度达0.01 mm,小范围内精确的手势识别能力为虚拟手运动控制提供了基础支持[10]。

Leap Motion采用右手笛卡尔坐标系,原点坐标在Leap Motion控制器的中心,X轴和Z轴在设备的水平面,X轴和设备的长边平行,指向屏幕右方,Y轴垂直向上,只有正半轴[11]。如图2所示。

图2 Leap Motion的右手坐标系

在使用过程中,Leap Motion控制器会以大约115 fps的帧速度发送关于手的运动信息。对于每只手,可以检测到如下信息:1)手掌的中心位置、移动速度、姿态变化;2)手掌的法向量、指向方向;3)手掌弯曲形成的虚拟球体;4)左右手判定、手掌伸展度、拇指与其它四指捏取力度。

对于每只手指,可以检测到如下信息:1)手指的中心位置、移动速度、姿态变化;2)指尖的位置以及速度;3)手指类型判定;4)手指伸展判定。

在实际应用中,Leap Motion为开发者提供了可进行二次开发的SDK,支持C++、Object-C、C#、Java、Python、Unity3D、Unreal等多种编程语言和开发平台进行应用程序开发,目前,主要提供Orion和V2两个系列[12]。

1.2.2 基于Leap Motion的虚拟手控制

虚拟手运动控制主要包括位置和姿态的更新,与基于数据手套控制虚拟手不同,通过Leap Motion可以获取整个手掌及每根指骨的位置和旋转数据,这些数据大大简化了虚拟手的运动控制,因此,建立虚拟手骨骼关节模型时,虚拟手及各关节的本体坐标要与LeapSDK提供坐标相一致,便于计算。

虚拟手位置更新较容易实现,可使用Hand::PalmPosition方法获取手部当前位置,而后将坐标转换为场景全局坐标,从而更新虚拟手位置。姿态更新分为两部分,首先通过Hand::Basis和Bone::Basis获取手掌和各指骨本体坐标各轴向当前指向(xbasis,ybasis,zbasis),并将其转化为场景全局坐标;而后,依次绕各轴旋转,使本体坐标各轴指向为0,完成姿态更新。以Unity3D引擎开发Leap Motion为例,虚拟手运动控制的基本流程如图3所示。

图3 虚拟手运动控制基本流程

其中,Leap Motion坐标系(简称Leap坐标,右手系)与Unity3D坐标系(简称U3D坐标,左手系)转换方法为:首先将Leap坐标z轴旋转,而后乘以缩放因子a,最后根据需要在y轴添加偏置量Δy。如式(1)所示。M为Leap坐标到U3D坐标的转换矩阵。

(1)

2 基于手势的虚拟手操作实现

2.1 手势定义

手势定义是虚拟手实现对虚拟物体操作的基础,数量合理、定义明确的手势有助于系统高效识别手部动作,完成相应交互指令。手势可分为静态手势和动态手势[13]。静态手势是手部的一个特殊形状或姿势,仅由当前手部状态决定;动态手势是运动的手势,是由随时间变化的一系列静态手势共同决定。文中所论述的手势为静态手势,动态手势的定义和识别将在后续文章中研究。

文中手势的定义以维修训练相关动作为主,包括获取工具(零件)、移动到指定位置、按规定进行拆装等操作,还包括一些按钮、开关的按压等。假设装备零部件的形状可抽象为长方体、圆柱体、圆环等形状及其组合,结合上述维修动作,设计了5种基本手势,如表1所示。

表1 基本手势定义

2.2 手势操作规则

根据力的平衡原理,在仿真场景中实现虚拟手对虚拟物体的操作,并使虚拟物体保持稳定,则虚拟手需要对虚拟物体施加至少2个相对力,已达到平衡状态,然而就目前研究状态来看,还难以从力的角度实现虚拟手的操作仿真。为此,论文从人手抓取物体的习惯和姿态出发,针对各种手势,设计了相应的操作规则。

2.坚持“唯实求是”的方法论,激励和调动“发现欲望”。“导论篇”在编选内容时,应以坚持“唯实求是”的方法论和激励、调动学生的“发现欲望”为基本思想和基本主题。唯实求是,即事实是衡量和检验真理的唯一标准,不唯上,不唯书,只唯实。实验的过程,是对未知世界不断发现、挖掘、探索、分析、研究、创新的过程,强烈的发现欲望,是实验成功的一半。要善于培养和强化学生的“发现欲望”,并安排较大篇幅列举科学家的伟大发明始于发现毫微和某些科学家忽视发现毫微而与发明失之交臂的实例,以启迪学生懂得“发现欲望”在科学实验、科学研究中的重要性。

2.2.1 抓握操作

抓握手势是虚拟手对诸多较大工具操作的基础,其实现规则定义如下:1)手掌向目标物体移动时手指自然弯曲,呈预抓取状,当手掌掌部碰撞点与物体被握部位接触时,满足条件一;2)手指围绕物体被握部位弯曲呈握拳状,满足条件二。当虚拟手先后满足1)、2)时,实现抓握操作,1)、2)顺序不能颠倒。如图4所示。抓握操作的释放规则为:当五根手指全部松开,即全部成伸展状态时,释放虚拟物体。

图4 抓握操作

2.2.2 捏取操作

捏取手势主要是对一些小零件、小物体的操作,其实现规则定义如下:拇指与食指末端指节靠拢,当两指的接触点同时接触物体时,实现捏取操作。如图5所示。捏取操作的释放规则为:当拇指和食指任一手指离开物体时,释放物体。

图5 捏取操作

2.2.3 抓取操作

抓取手势主要完成一些较大配件、物体的移动操作,其实现规则定义如下:1)至少两根手指与物体接触,其中一根为拇指;2)两指与物体接触面法矢量的夹角大于某个预定义临界角(在此我们设定该角度值为120度);3)物体与手掌接触。当虚拟手同时满足1)、2)或1)、3)时,实现抓取操作。如图6所示。抓取操作的释放规则为:1)拇指离开物体;2)其余4个手指全部离开物体;3)法线夹角小于临界角度。满意任一条件则释放物体。

图6 抓取操作

其中,抓取条件2)中的法矢量夹角,是指两根手指与物体接触点(N1,N2)与物体中心G所形成的夹角,详细计算方法参见文献[6]。

按压手势主要实现控制面板上的按钮、开关的操作,以及场景中虚拟菜单的选择等,其实现规则定义如下:食指前伸,其余四指自然弯曲,当接触点与目标接触时,实现按压操作。如图7所示。按压操作的释放规则为:当食指接触点离开物体,取消按压操作。

图7 按压操作

2.3 手势操作实现

在上述手势和规则定义的基础上,虚拟手可综合运用不同手势实现对虚拟物体的操作,具体交互过程及关键技术如下:

1)虚拟手控制:确定所需要操作的虚拟物体后,控制虚拟手向该物体移动,并根据操作需要,调整姿态,提前做出相应的手势。关键技术:虚拟手运动控制。

2)手势判定:根据不同手势操作的特点,控制手指使虚拟手与目标物体满足操作规则,从而实现不同的手势操作。关键技术:碰撞检测以及手指状态检测,重要的LeapSDK接口参数为Hand::GrabStrength判断手握拳力度,Finger:: IsExtended判断单个手指的弯曲与伸展状态。

3)操作物体:当虚拟手与物体满足某个手势时,需要将物体的本体坐标系附着在虚拟手模型上,从而实现虚拟手对虚拟物体位置和姿态操作。对于按压操作,虚拟物体随着手指在体积、颜色等方面发生变化。关键技术:虚拟物体在不同坐标系中的转换。

4)释放物体:当完成需要的操作后,松开手指或离开目标物体,此时不再满足操作规则,从而释放物体。整个过程如图8所示。

图8 虚拟手操作实现流程

3 原型系统及实例

基于上述研究成果,我们构建了弹药虚拟维修训练原型系统,测试虚拟手控制及其操作虚拟物体的效果。

3.1 原型系统的构成

虚拟维修原型系统硬件部分包括:联想图形工作站、Oculus Rift头盔显示器(HMD)、Leap Motion光学手势跟踪设备。软件部分包括:模型开发需要的3ds Max、Photoshop;系统开发基于Unity 5.X虚拟现实引擎,对Oculus和Leap采用应用动态链接库的方式进行集成,控制脚本为C#语言。整个框架如图9所示。

图9 原型系统软硬件集成框架

3.2 实例操作

以某型弹药维修为目标,在原型系统中通过操作虚拟手对弹药进行拆卸维修,验证多种手势在系统中的应用效果,其中,螺栓的拆卸过程如图10所示。由此可见,应用文中的模型和方法,我们实现了对虚拟手控制及其对虚拟物体的操作。

图10 虚拟手拆卸螺栓

3.3 结果分析

实例基本实现了各种手势的综合运用,但由于缺乏动态手势,工具的操作过程略显不足,就文中所研究的虚拟手操控而言,主要有以下几点结论:

1)采用裸手的虚拟交互方式,手部没有束缚,控制简单,交互自然,符合人们的生活工作方式,沉浸感明显;但由于手臂长时间悬空,手指无着力点,容易造成手臂、手指酸疼。

2)由于手指互相遮蔽、环境光照干扰、手部抖动等因素的影响,会造成手指状态的误判,从而影响手势操作规则的精准度,所以规则的实现标准可略宽,而释放标准可略严。

3)当手部运动速度较快或进行不规则翻滚时,Leap Motion容易丢失跟踪或产生错误数据使模型变形,这时,需要重新标定虚拟手模型。

4 结束语

本文基于Leap Motion构建了虚拟手模型,对其操控技术进行了研究,使用户在沉浸式虚拟现实系统中,可以通过裸手的方式与场景进行交互、操作虚拟物体,整个过程简单可靠,交互自然,用户沉浸感显著增强,训练效果明显。接下来,在当前静态手势研究的基础上,采用机器学习理论对动态手势进行研究,进一步提高虚拟手操控效果。

[1] 殷 磊, 韩 静, 王 烨, 等. 虚拟现实环境下虚拟手控制技术研究 [J]. 系统仿真学报, 2009, 21(2): 448 - 451.

[3] Chen W F, Zhu S J, Wan H G. Dual quaternion based virtual hand interaction modeling [J]. Science China, 2013, 56(03): 1 - 11.

[4] 杨宏生, 裴忠才, 曹宗胜, 等. 地震救援虚拟仿真系统中虚拟手的操作 [J]. 系统仿真学报,2006, 18(12): 3425 - 3429.

[5] Liu X H, Cui X L, Song G M, etc. Development of a virtual maintenance system with virtual hand [J]. International Journal of Advanced Manufacturing Technology, 2014, 70(9-12): 2241 - 2247.

[6] 李克彬, 王淑琴, 单继红. 虚拟手操作技术研究及实现 [J]. 计算机仿真,2007, 24(3): 227 - 229.

[7] 汤志波, 张志利, 梁 丰, 等. 虚拟维修训练中的手势识别 [J]. 计算机工程与设计,2014, 35(12): 4278 - 4282.

[8] 李志华, 钟毅芳. 虚拟手模型及其抓取技术 [J]. 小型微型计算机系统, 2003, 24(06): 1071 - 1074.

[9] Guna J, Jakus G, Pogacnik M, et al. An Analysis of the Precision and Reliability of the Leap Motion Sensor and Its Suitability for Static and Dynamic Tracking [J]. Sensors 2014, 14(02): 3702 - 3720.

[10] 张玉军, 孟晓军, 王 刚. 基于手势交互的三维电子沙盘系统设计与实现 [J]. 指挥控制与仿真, 2016, 38(2): 110 - 114.

[11] 胡 宏, 晁建刚, 林万洪, 等. Leap Motion虚拟手构建方法及其在航天训练中的应用 [J]. 载人航天, 2015, 21(3): 257 - 262.

[12] Leap Motion. Leap Motion SDK and Plugin Documentation [EB/OL]. (2016-7-15). https://developer.leapmotion.com/documentation.

[13] 杨 波, 宋晓娜, 冯志全, 等. 复杂背景下基于空间分布特征的手势识别算法 [J]. 计算机辅助设计与图形学学报, 2010, 22(10): 1841-1848.

Research on Virtual Hand Control and Operation in Immersive Virtual Training

Zhang Yujun1, 2, Xing Hui1, Tang Huajun2

(1.Unit 69079 of PLA, Urumqi 830013, China; 2.Unit 69240 of PLA, Urumqi 830011, China)

To add the man′s hand movements to immersive virtual reality system can effectively improve the immersive and interactive system. Simple, fast, and low cost technology of virtual hand control and operation contribute to the application of virtual hand. Bone structure model of virtual hand is analyzed, and then control method and process of virtual hand based on Leap Motion is put forward. Taking maintenance training as background, four gesture rules of virtual hand operation are designed. Realization flow and key technologies of virtual hand operation is analyzed. A prototype system based on Unity3D engine is constructed to verified virtual hand by simulation. The results show that the operation of virtual hand based on Leap Motion is simple, interaction is nature, which meet the needs of the virtual reality system interaction.

hand recognition; virtual reality; virtual hand

2016-04-07;

2016-06-21。

张玉军(1982-),男,吉林白山人,博士,工程师,主要从事虚拟现实、建模仿真方向的研究。

1671-4598(2017)02-0081-04

10.16526/j.cnki.11-4762/tp.2017.02.022

TP391

A

猜你喜欢

手掌手势手指
手指背侧复合组织块离断再植
手指操
挑战!神秘手势
摊开手掌
手掌上的童话
胜利的手势
把手掌放在画纸上描一描,画出一只考拉吧
笔穿手指
认手势说数字
手指上诉