福感科技有限公司 欢迎您!
联系方式

    地址:北京市平谷区马坊镇金河北街17号院3号楼7层712

    电话:010-89968230

    网站:http://www.fgsense.com

你的位置:首页 > 新闻动态 > 专题报道

基于数据手套的虚拟人手运动建模系统的研究

2020-12-16 15:09:57      点击:

基于数据手套的虚拟人手运动建模系统的研究

葛海江12 ,彭斐 1 ,贾宁 1 ,李士洋 1

1. 杭州 职业技术学院 信息工程学院,浙江 杭州 3100182. 浙江工业大学 计算机科学与 技术学院,浙江 杭州 310023

摘要:研究了基于WiseGlove7S数据手套的虚拟人手运动建模系统的研究,阐述了数据手套的光纤传感器分布,提出了传感器值归一化和手势自定义的方法;对数据手套和虚拟手的 软件开发包进行了详细的描述;最后基于OpenGL Unity 3D 平台分别实现了虚拟人手手势建模和虚拟人手运动运动建模。通过这些研究,可为虚拟现实中虚拟人手运动的应用提供一定的借鉴。

关键词:虚拟人手运动建模;数据手套;光纤传感器;OpenGLUnity 3D

 虚拟现实是一种全新的计算机高科技交互模拟系统,是当前全球科技领域最为火热的技术之一,数据手套(Data Glove)是作为虚拟现实的 重要交互工具。当用户带上数据手套时,它可以实时地测量人手各个关节角度的变化,并将这些动作信息送往计算机,从而使用户能以一种比较自 然的方式与计算机生成的虚拟环境进行实时交互。目前,国内外在数据手套方面的研制技术已经相对成熟,国外的主要代表产品有美国 Immersion 公司的CyberGlove和南非的5DT Glove,李静蓉,绪玉花和陈广文等人研究了基于CyberGlove 数据手套的虚拟手的交互[1-2] ;文献[3-7]基于5DT Glove 数据手套主要进行了手势识别的研究。国内的有中科院自动化研究所研制的数据手套CAS-Glove,北京鑫天视景科技有限公司研发的数据手套 WiseGlove,在文献[8-10]中,毛谡,侯藏龙和郝建平等人基于 WiseGlove 数据手套做了一些应用研究。对于CAS-Glove 数据手套,它是国家“863”计划支持下研制的高性能低成数据手套,它是一种采用柔性材料制作的,在其相应位置安装了15个自行研制开发的柔性角度传感器来分别测量手指各关节弯曲角度和手指开合程度,在性能方面达到国外同类产品的水平, 成本低于国外同类产品。

下面对相关数据手套产品的典型性能进行比较如下:1)可扩展功能性:CyberGlove 有手指捕捉功能和手指力反馈[1]功能,没有手臂位置跟踪功能;5DTGlov仅具有手指捕捉功能; WiseGlove可在现有手指捕捉功能集成上扩展手指力反馈和手臂位置检测功能。 在功能上, WiseGlove 更完善一些。2)传感器精度:WiseGlove 的手指传感器精度不小于 0.2°,回

复精度:不小于 3°;5DT Glove 的手指传感器精度原厂未进行描述。CyberGlove 手指传感器精度不小于1°,回复精度:不小于 3°。在精度上,WiseGlove更好一些。 3)传感器寿命:WiseGlove 手指传感器使用第3代精密光纤传感器;5DT Glove使用第2代光纤传感器; CyberGlove 使用电阻传感器。在使用寿命上,光纤传感器更好一些。4)传感器数量: 5DTGlove最多配置14个传感器;WiseGlove 最多19个传感器(用户可以根据需要进行选配);CyberGlove 配置22个传感器。在数量上CyberGlove 更多一些。本文综合考虑了可扩展功能性、传感器精度、传感器数量以及性价比等方面后,选择了北京鑫天视景科技有限公司的WiseGlove7S手套来实现虚拟人手运动建模系统的研究。WiseGlove7S使用光纤传感器来检测手指弯曲度,手指关节上共使用了7个光纤传感器,可实现人手手指关节的运动角 度捕捉,实现如搓捻、对掌、拨动和抓取等动作,后期也可以根据应用需要,升级手指力反馈和手臂位置跟踪等功能。

1 WiseGlove7S数据手套概述

1.1 WiseGlove7S数据手套的光纤传感器分布

WiseGlove7S 数据手套的光纤传感器分布如图1所示,它的7个光纤传感器功能如下:S0 S1实现大拇指的弯曲功能,S2位于虎口下方,主要实现大拇指的外展功能,即上下搓捻;S3-S6分别实现其余4指的弯曲功能。

1.2 手指传感器算法、手势自定义以及数据手套的标定

1)归一化传感器值

一个光纤传感器的最小值(X)和最大值(Y)在标定数据手套时已完成。如果当前手套的某个光纤传感器的值是Z,则满足的关系:X<Z<Y。若Z>YY=Z;若Z<X,则X=Z。这两条确保了当前 值一直都在[XY]区间内。假设某一个手指的活动角度是M,则当前的弯曲角度 N 可以 通过下面公式得到:N=M*(Z-X)/(Y-X)

2)手势自定义

WiseGlove7S的数据手册可知,光纤传感器的精度为12位,则光纤传感器的精度范围为[0 4 095],这里可以认为当(Z-X/Y-X<=2048时手指是分开的,(Z-X/Y-X>2048 时手指是合拢的,通过这个关系条件,用户可以定义每个手指的开与合,完成各种手势的自定义。在文献[11]中,定义了数据手套的5种一般手势。

3WiseGlove7S数据手套的标定

用户戴好WiseGlove7S数据手套后,可使用下述标定方法对数据手套进行标定,然后再开始使用,具体实现如图 2所示。

2 WiseGlove数据手套和虚拟手的软件开发包

2.1 WiseGlove SDK数据手套开发包

WiseGlove SDK提供了C++形式的静态库和动态库,对于VC/VS编译器可以直接静态链接编译,对于其他语言(例如C#JAVA等)可通过调用DLL的方法实现。

开发库函数具体包括如WiseGlove数据手套检测:unsigned int Scan(void);传感器设置标定参数:void SetCalib(int indexunsigned short minunsignedshort maxfloat angle);传感器设置最小参数值:voidSetCalibmin(int indexunsigned short min);传感器设置最小参数值:void SetCalibmax(int indexunsignedshort max);读所有传感器值:unsigned int GetData(unsigned short *data);读所有传感器归一化值:unsigned int GetScaledData(unsigned short *data);读手指传感器的角度:unsigned int GetAngle(float *angle)等共计40余个APP函数可调用。

2.2 WiseHand SDK虚拟手开发包

WiseHand SDK提供了C++形式的静态库和动态库,对于VC/VS 编译器可以直接使用, 对于其他编译器则需要转换格式后使用。

开发库函数具体包括如加载虚拟手模型:BOOL loadModelData( char *filename);设置左右手模型:void setVhandtype( bool type );绘制手模型:voiddrawhand(float angle[19]int mode)新建手模型指针:WiseHand*GetWiseHand(void);销毁一个手模型手指针:void DelWiseHand(WiseHand *p)等。

3 基于数据手套的虚拟人手运动建模

3.1 基于OpenGL的虚拟人手手势建模

基于OpenGL的虚拟人手手势建模主要有两步:

1)首先用 3DMAX软件建立虚拟人手模型[12-13]的网格和贴图,建立骨骼后绑定网格顶点到对应的骨骼上,建立带骨骼的手模型。

2)使用OpenGL来显示建模好的手模型,并使用数据手套的关节角度数据驱动手模型的骨骼点的旋转。这里包括两部分:一个是渲染模型部分;二个是调用手套角度驱动模型部分。 具体实现步骤如下:

当数据手套的传感器角度驱动骨骼旋转时,骨骼带动所绑定的网格一起移动,每次屏幕刷新前都要参考骨骼新位置重新算网格顶点的新位置,同时使用每个顶点对应的贴图坐标,实现纹理贴图,这样就实现了骨骼蒙皮的动画手。

3.2 WiseGlove7S数据手套的Unity 3D虚拟人手运动建模

1WiseGlove7S数据手套的Unity 3D的场景和控制脚本设计

这里利用WiseGlove7S数据手套和Unity 3D软件[14-15] 实现虚拟人手的不同大小物体的抓放[16]、移动以及叠放等功能。Unity 3D编程采用C#语言,内部关联VS2015编译器。基于数据手套的虚拟人手运动建模包括Unity 3D场景资源和控制相应资源的脚本。Unity3D场景资源包括Table(桌子),directional light(直射光),move(移动),Plane(平面)、Main Camera(主相机)、Cube(方块)和Arm(手臂模型)等。控制资源的脚本有Cameracontrol.cs控制相机移动,FreeView.cs自由视图控制,LookatPoint.cs寻找点,mycolliderblue.csmycollidergreen.cs mycolliderred.csmycolliderpurple分别控制蓝色,绿色,红色和紫色方块,wiseglove_left.cs 手套左手驱动,wiseglove_right.cs 手套右手驱动。基于数据手套的虚拟人手运动建模软件的控制场景资源工作的脚本如图5所示。


2WiseGlove7S数据手套实现Unity 3D中的物体抓放、移动以及叠放等具体实现步骤如下:

①在 Unity 3D场景中寻找物体方块、相机以及手模型等,初始化数据手套,保存手模型的初始化角度;

②在 Update 函数中一直读取数据手套的角度,分配给虚拟手模型各关节驱动模型手运动;

③程序渲染每一帧时都要检测抓取动作,当手与被抓物体的距离小于设定距离,同时符合抓握动作的条件(真值为true)时,把物体抓握起来;

④本文通过键盘按键AD(左右),WS(前后)和FV(上下)来控制虚拟手的运动位置,将物体移动到相应的位置后松开手,若此时抓握动作条件的真值为 Flase,则物体被放下然后自由下落;

⑤依次循环步骤②~④,可以实现多个不同大小物体的抓放、移动以及叠放等功能。

3.3 基于数据手套的虚拟人手运动建模软件工作流程

基于数据手套的虚拟人手运动建模软件工作流程如图6所示,数据手套标定方法如图2所示,PC端显示的基于数据手套的虚拟人手抓物体功能演示如图 7所示。

4 结束语

本文的研究将为人们在虚拟人手精确实时交互方向开展更高层次的科学研究提供一定的理论和应用基础;为今后虚拟现实技术在医疗,军事,民生以及产业化的应用起到较好的推动作用。在基于数据手套的虚拟人手运动建模和软件系统开发理论和实践成熟之后,数据手套配以三维跟踪装置,则在虚拟三维场景当中可完成一些较为复杂的动作,推动虚拟人机交互技术在虚拟手术、虚拟装配、遥操作机器人等方面向纵深发展。此外本文的前期的相关研究

成果:一种电容感应式的人手运动手势识别装置(ZL2018220165138)已获国家实用新型专利。

参考文献:

[1] 李静蓉, 绪玉花.面向虚拟装配的虚拟手交互技术研究[J].机械设计与制造, 2014(5):262-266.

[2] 陈广文,杨文珍,吴新丽,等. 基于 PPT跟踪器和Cyber手套的虚拟手交互[J].浙江理工大学学报,201330(4):554-557.

[3] 张志纯,杨晓文, 况立群,等. 基于Virtools5DT数据手套的手势仿真研究[J].科学技术与 工程[J]201515(4):140-144.

[4] 杨柳,李东洁,李洋洋. GL-RBF优化的数据手套手势识别算法[J].哈尔滨理工大学学报, 201722(4):7-12.

[5] 李东洁, 李君祥, 张越, 等. 基于PSO改进的BP神经网 络数据手套手势识别 [J].电机与控制学报,201418(8):87-93.

[6] 魏月 ,郭欣,王蕾,等.实时手部精细运动意图识别方法的研究[J].中国康复医学杂志, 201934(1):59-66.

[7] 胡林,樊景超,周国民.基于Fastrack数据手套的虚拟手交互系统研究[J].安徽农业科学, 201341(25):10524-10527.

[8] 毛谡,沈向前,罗琪,等.数据手套在测量对掌运动中拇指腕掌关节的角度应用[J].中国骨与关节损伤杂志,2014(5):515-516.

[9] 侯藏龙,张伟忠,唐沂星,等.脊髓病手功能评测系统的开发及软件实现[J].中国医疗设备, 201530(5): 24-27.

[10]郝建平,崔庆春,李星新.基于WiseGlove 数据手套的维修手势仿真研究与实现[J].计算机测量与控制,201422(2):594-597.

[11]吕蕾,张金玲,朱英杰,等.一种基于数据手套的静态手势识别方法[J].计算机辅助设计与图形学学报,201527(12):2410-2418.

[12]杨晓文,张志纯,况立群,等.基于虚拟手的人机交互关键技术[J]. 计算机应用 ,2015 35(10):2945-2949.

[13]曹福毅,李波,王增辉.基于5点数据手套的虚拟手精确控制方法[J].沈阳工程学院学报, 201511(2): 155-158.

[14]赵裕沛,费飞,杨德华,等. 面向手部康复应用的数据手套技术研究[J].仪器仪表学报, 2017 38(10):2415-2421.

[15]李晓峰,薛小荣,梁兰花.基于 Unity3D 的矢量网络分析仪虚拟实验系统的设计与实现[J].实验技术与管理,201936(4):134-137.

[16] 胡晨,张学聃,马惠敏.适应物体形状的虚拟手抓取[J].中国图象图形学报,201722(5):663-670.

声明:文章内容整理来源于网络,版权属于原作者,如有问题请联系我们。


Copyright 2019 www.fgsense.com

福感科技有限公司 版权所有 All Rights Reserved

京ICP备20002031号

010-89968230