一种基于数据手套和物理引擎的虚拟手的实时抓取方法

文档序号:6544077阅读:413来源:国知局
一种基于数据手套和物理引擎的虚拟手的实时抓取方法
【专利摘要】一种基于数据手套和物理引擎的虚拟手的实时抓取方法,它有五大步骤:一、启动计算机、数据手套和位置跟踪器;二、戴上数据手套,运行计算机获取数据手套和位置跟踪器发来的数据;三、佩戴数据手套做手指弯曲、手掌平移旋转,数据手套和位置跟踪器将手指和手掌的位置及变化数据发送给程序,程序通过接收数据驱动虚拟手的手指和手掌的运动;四、使用数据手套的手在现实中模拟抓取动作控制计算机中的虚拟手去抓取物体,程序会判断虚拟物体是否处于被抓取状态;若未满足被抓取,返回三,继续执行三、四,直到程序退出;若满足被抓取,执行五;五、通过计算虚拟手的位置和姿态的变化来控制虚拟物体的位置和姿态的变化,从而控制虚拟物体的移动和旋转。
【专利说明】一种基于数据手套和物理引擎的虚拟手的实时抓取方法
【技术领域】
[0001]本发明涉及一种基于数据手套和物理引擎的虚拟手的实时抓取方法,具体涉及一种虚拟现实领域的基于数据手套的实时虚拟手的驱动以及基于数据手套、位置跟踪器以及物理引擎的虚拟手和虚拟物体的实时抓取方法,属于虚拟现实【技术领域】。
【背景技术】
[0002]虚拟现实技术是一种可以创建和体验虚拟世界的计算机技术,它利用计算机生成一种模拟环境,在模拟环境中来逼真现实世界。虚拟现实技术是一种多源信息融合交互式的三维动态视景和实体行为的系统仿真,可借助传感头盔、数据手套等专业设备,让用户进入虚拟空间,实时感知和操作虚拟世界中的各种对象,从而通过视觉、触觉和听觉等获得身临其境的真实感受。
[0003]人手是人体中最具灵活的器官,人们在日常生活及工作中无时无刻都在使用手,而人手抓取物体的运动又是所有手部运动中最为复杂的运动,所以研究虚拟世界中如何模拟人手的抓取运动是十分有意义的。
[0004]数据手套是虚拟现实领域的重要交互设备,是一种通用的人机接口,其直接目的在于实时获取人手的动作姿态,以便在虚拟环境中再现人手动作,达到理想的人机交互目的。
[0005]现有的虚拟手抓取虚拟物体的方法中存在一些问题:第一,虚拟手抓取虚拟物体的方法准确性较差,不能很真实准确地模拟物体被抓取的过程;第二,由于一些判断虚拟物体是否被虚拟手所抓取的判定条件较为复杂,从而导致虚拟手与虚拟物体的抓取方法实时性较差,使得程序在一般计算机中不能流畅地运行。基于以上原因,有必要开发一套准确性较高并且实时性较好的虚拟手抓取虚拟物体的方法。本发明提出一种基于数据手套和物理引擎的实时虚拟手抓取方法,可以准确地模拟虚拟手抓取虚拟物体的过程并且流畅地在一般计算机上运行。

【发明内容】

[0006]本发明的目的在于提供一种基于数据手套和物理引擎的虚拟手的实时抓取方法,它是一种基于普通计算机的实时准确的虚拟手抓取虚拟物体的方法,以解决现有方法中虚拟手抓取虚拟物体时存在的抓取过程不准确,运行不流畅满足不了实时性的问题。
[0007]本发明提供的技术方案是:一种基于数据手套和物理引擎的虚拟手的实时抓取方法,具体是通过数据手套内的传感器获取的数据,实时驱动虚拟手的手指关节的转动。通过位置跟踪器获取的6自由度的位置信息,实时驱动虚拟手在虚拟空间的位置及姿态。通过物理引擎中的碰撞检测模块以及程序中设定的判断虚拟物体是否处于抓取状态的条件,实现虚拟手实时准确地抓取虚拟物体。
[0008]本发明一种基于数据手套和物理引擎的虚拟手的实时抓取方法,它包括如下步骤:[0009]步骤一:将数据手套和位置跟踪器通过USB接口和串口接入计算机,启动系统中的所有设备,包括计算机、数据手套和位置跟踪器。
[0010]步骤二:用户戴上数据手套,运行计算机上的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的程序,程序会自动连接数据手套和位置跟踪器,并实时获取数据手套和位置跟踪器发送来的数据。
[0011]步骤三:用户佩戴数据手套做一系列动作,包括:手指弯曲,整个手掌的平移旋转运动,数据手套和位置跟踪器会将手指的弯曲和手的位置及姿态的变化的数据发送给程序,程序通过接收到的数据驱动虚拟手的手指运动和手掌的运动。
[0012]步骤四:用户通过使用佩戴数据手套的手在现实世界中模拟抓取物体的动作控制计算机中的虚拟手去抓取物体。程序会调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定来判断虚拟物体是否处于被抓取的状态。如果虚拟物体没有满足被抓取的条件时,程序返回步骤三,继续从步骤三开始执行步骤三、四,直到程序退出。如果虚拟物体满足被抓取条件,执行步骤五。
[0013]步骤五:通过计算虚拟手的位置变化和朝向的变化来控制虚拟物体的位置和姿态的变化,从而控制虚拟物体的移动和旋转。
[0014]其中,步骤一中所述的数据手套为Immersion公司的具有18个传感器的CyberGlove II (虚拟现实数据手套)。
[0015]其中,步骤一所述的位置跟踪器为Ascension公司的Flock of Birds位置追踪器,可以提供空间中6自由度的位置信息。
[0016]其中,步骤三中数据手套发送给程序的传感器数值和虚拟手模型的手指弯曲的角度之间需要进行转换,具体的转换公式为:
[0017]angle=M(Scur—Smin) / (Smax—Smin)
[0018]其中,angle为某一手指的一个关节的当前弯曲角度,Scur是数据手套的对应的这个关节的传感器的当前数值,Smax和Smin是对应的那个传感器发送的最大值和最小值,M是对应的这个关节能够弯曲的最大角度。
[0019]其中,步骤四中所述的物理引擎采用的是Bullet开源物理模拟计算引擎,能够进行碰撞检测功能的实现。
[0020]其中,计算机中的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件功能包括加载场景模型,实时接收数据手套和位置跟踪器发来的数据,实时进行虚拟手和虚拟物体的碰撞检测,实时进行场景的更改和绘制。
[0021]其中,步骤四中所指的调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定具体过程包括:
[0022](I)程序生成虚拟物体和虚拟手的手指以及手掌的包围盒。
[0023](2)判断各手指以及手掌的包围盒是否与虚拟物体有重叠,如果有重叠则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态。
[0024](3)包围盒有重叠的部分调用物理引擎bullet中面片级的碰撞检测方法生成碰撞物体对。
[0025](4)判断碰撞对中是否包含手掌或者大拇指,如果包含其中之一,则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态。[0026](5)判断碰撞对中除大拇指外的手指的数量是否大于1,如果满足条件,则认为虚拟物体处于被抓取的状态,否则,判定虚拟物体没有处于被抓取的状态。
[0027]其中,包围盒是指平行于坐标轴的能够将虚拟物体以及虚拟手包裹在里面的最小立方体。
[0028]本发明一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其优点及功效在于:通过利用物体包围盒进行初探,判断物体是否有可能发生碰撞,从而只在有可能发生碰撞的部分进一步调用更加精确的碰撞检测算法,提高了碰撞检测的效率,从而解决了实时性不好,运行不流畅的问题。在完成碰撞检测的基础上,通过特定抓取策略的设定,使得虚拟手能够精确地对虚拟物体进行抓取操作。
【专利附图】

【附图说明】
[0029]图1是本发明所提出的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的系统组成示意图。
[0030]图2是本发明所提出的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的流程图。
[0031]图3是本发明中判断虚拟物体是否处于抓取状态的具体过程的流程图。
[0032]图4是本发明中一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件流程框图。
[0033]图1中具体标号如下:
[0034]I普通显示器;2位置跟踪器;3数据手套;4普通计算机主机;
[0035]5、6、7是连接线。
【具体实施方式】
[0036]下面结合附图,对本发明的技术方案做进一步的说明。
[0037]见图2,本发明方法中,系统运行的操作方法具体步骤如下:
[0038]步骤一:将数据手套3和位置跟踪器2通过USB接口和串口接入计算机,启动系统中的所有设备,包括计算机、数据手套3和位置跟踪器2。
[0039]步骤二:用户戴上数据手套3,运行计算机上的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的程序,程序会自动连接数据手套3和位置跟踪器2,并实时获取数据手套3和位置跟踪器2发送来的数据。
[0040]步骤三:用户佩戴数据手套3做一系列动作,包括:手指弯曲,整个手掌的平移旋转运动,数据手套3和位置跟踪器2会将手指的弯曲和手的位置及姿态的变化的数据发送给程序,程序通过接收到的数据驱动虚拟手的手指运动和手掌的运动。
[0041]步骤四:用户通过使用佩戴数据手套3的手在现实世界中模拟抓取物体的动作控制计算机中的虚拟手去抓取物体。程序会调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定来判断虚拟物体是否处于被抓取的状态。如果虚拟物体没有满足被抓取的条件时,程序返回步骤三,继续从步骤三开始执行步骤三、四,直到程序退出。如果虚拟物体满足被抓取条件,执行步骤五。
[0042]步骤五:通过计算虚拟手的位置变化和朝向的变化来控制虚拟物体的位置和姿态的变化,从而控制虚拟物体的移动和旋转。
[0043]其中,步骤一中所述的数据手套3为Immersion公司的具有18个传感器的CyberGlove II (虚拟现实数据手套)。
[0044]其中,步骤一所述的位置跟踪器2为Ascension公司的Flock of Birds位置追踪器,可以提供空间中6自由度的位置信息。
[0045]其中,步骤三中数据手套发送给程序的传感器数值和虚拟手模型的手指弯曲的角度之间需要进行转换,具体的转换公式为:
[0046]angle=M(Scur—Smin) / (Smax—Smin)
[0047]其中,angle为某一手指的一个关节的当前弯曲角度,Scur是数据手套3的对应的这个关节的传感器的当前数值,Smax和Smin是对应的那个传感器发送的最大值和最小值,M是对应的这个关节能够弯曲的最大角度。
[0048]其中,步骤四中所述的物理引擎采用的是Bullet开源物理模拟计算引擎,能够进行碰撞检测功能的实现。
[0049]其中,计算机中的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件功能包括加载场景模型,实时接收数据手套3和位置跟踪器2发来的数据,实时进行虚拟手和虚拟物体的碰撞检测,实时进行场景的更改和绘制。
[0050]其中,步骤四中所指的调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定具体过程包括:
[0051](I)程序生成虚拟物体和虚拟手的手指以及手掌的包围盒。
[0052](2)判断各手指以及手掌的包围盒是否与虚拟物体有重叠,如果有重叠则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态。
[0053](3)包围盒有重叠的部分调用物理引擎bullet中面片级的碰撞检测方法生成碰撞物体对。
[0054](4)判断碰撞对中是否包含手掌或者大拇指,如果包含其中之一,则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态。
[0055](5)判断碰撞对中除大拇指外的手指的数量是否大于1,如果满足条件,则认为虚拟物体处于被抓取的状态,否则,判定虚拟物体没有处于被抓取的状态。
[0056]其中,包围盒是指平行于坐标轴的能够将虚拟物体以及虚拟手包裹在里面的最小立方体。
[0057]如图1所示,发明方法中使用的硬件设备包括:普通显示器1,位置跟踪器2,数据手套3,普通计算机主机4。普通显示器I通过连接线5与普通计算机主机4相连,位置跟踪器2通过串口连接线6同普通计算机主机4相连,数据手套3通过USB连接线7同普通计算机主机4相接连。
[0058]发明方法中使用的软件平台包括操作系统(Windows或者Linux操作系统)、显卡以及对应的驱动程序等已有通用软件技术平台和基于OSG自主开发的安装于计算机上的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件。
[0059]图2是本发明所提出的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的流程图。首先将所有的设备连入普通计算机主机4,包括:数据手套3和位置跟踪器2,并且启动所有设备。然后,用户戴上数据手套3,运行程序,程序会自动获取数据手套3和位置跟踪器2发送来的数据,并且用这些数据实时驱动虚拟手的运动。接下来用户通过使用佩戴数据手套3的手在现实世界中模拟抓取物体的动作控制计算机中的虚拟手去抓取物体,程序会判断虚拟物体是否处于被抓取的状态。如果虚拟物体处于被抓取的状态,虚拟物体将跟随虚拟手一起运动,如果虚拟物体没有处于被抓取的状态,程序会更新虚拟手的位置然后继续判断虚拟物体是否处于被抓取的状态。
[0060]图3是本发明所提出的判断虚拟物体是否处于抓取状态的具体过程的流程图。程序流程会在每一帧绘制前执行一次,以保证虚拟手与虚拟物体交互的准确性。首先,程序会计算更新虚拟手和虚拟物体的包围盒,通过计算得到的包围盒进行碰撞检测的初探,初探的目的是剔除包围盒没有重叠的物体(如果连包围盒都没有重叠的一对物体,就没有可能发生碰撞,从而就没有必要进行更进一步的碰撞检测。通过这种机制提高了碰撞检测的效率)。然后,在包围盒有重叠的物体中进行面片级别的碰撞检测,判断碰撞对中是否包含大拇指或手掌,如果不包含则认为虚拟物体没有处于抓取状态。如果碰撞对中包含大拇指或手掌,继续判断碰撞对中除大拇指外的手指数量是否大于1,如果是,则认为物体处于抓取状态,如果不是,则认为物体没有处于抓取状态。
[0061]图4是本发明中一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件流程框图。首先,程序先进行初始化,包括:连接数据手套3和位置跟踪器2,加载虚拟手和虚拟物体的模型。然后,程序获取到的数据手套3和位置跟踪器2的数据,并用此数据驱动虚拟手的平移和旋转运动。在虚拟手位置改变的这一帧动画中,对新的位置的虚拟手与虚拟物体进行碰撞检测和判断虚拟物体是否处于抓取状态,如果虚拟物体处于被抓取的状态,则虚拟物体跟随虚拟手一起进行旋转和平移运动。然后更新绘制场景直到程序退出。
【权利要求】
1.一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:它包括如下步骤: 步骤一:将数据手套和位置跟踪器通过USB接口和串口接入计算机,启动系统中的所有设备,包括计算机、数据手套和位置跟踪器; 步骤二:用户戴上数据手套,运行计算机上的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的程序,程序会自动连接数据手套和位置跟踪器,并实时获取数据手套和位置跟踪器发送来的数据; 步骤三:用户佩戴数据手套做一系列动作,包括:手指弯曲,整个手掌的平移旋转运动,数据手套和位置跟踪器会将手指的弯曲和手的位置及姿态的变化的数据发送给程序,程序通过接收到的数据驱动虚拟手的手指运动和手掌的运动; 步骤四:用户通过使用佩戴数据手套的手在现实世界中模拟抓取物体的动作控制计算机中的虚拟手去抓取物体,程序会调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定来判断虚拟物体是否处于被抓取的状态;如果虚拟物体没有满足被抓取的条件时,程序返回步 骤三,继续从步骤三开始执行步骤三、四,直到程序退出;如果虚拟物体满足被抓取条件,执行步骤五; 步骤五:通过计算虚拟手的位置变化和朝向的变化来控制虚拟物体的位置和姿态的变化,从而控制虚拟物体的移动和旋转。
2.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:步骤一中所述的数据手套为具有18个传感器的CyberGlove II虚拟现实数据手套。
3.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:步骤一所述的位置跟踪器为能提供空间中6自由度位置信息的Flock of Birds位置追踪器。
4.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:步骤三中数据手套发送给程序的传感器数值和虚拟手模型的手指弯曲的角度之间需要进行转换,具体的转换公式为:
angle=M(Scur—Smin) / (Smax—Smin) 其中,angle为某一手指的一个关节的当前弯曲角度,Scot是数据手套的对应的这个关节的传感器的当前数值,Smax和Smin是对应的那个传感器发送的最大值和最小值,M是对应的这个关节能够弯曲的最大角度。
5.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:步骤四中所述的物理引擎采用的是Bullet开源物理模拟计算引擎,能够进行碰撞检测功能的实现。
6.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:计算机中的一种基于数据手套和物理引擎的虚拟手的实时抓取方法的软件功能包括加载场景模型,实时接收数据手套和位置跟踪器发来的数据,实时进行虚拟手和虚拟物体的碰撞检测,实时进行场景的更改和绘制。
7.根据权利要求1所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:步骤四中所 指的调用物理引擎中的碰撞检测算法以及执行程序中的抓取条件的判定具体过程包括: (1)程序生成虚拟物体和虚拟手的手指以及手掌的包围盒; (2)判断各手指以及手掌的包围盒是否与虚拟物体有重叠,如果有重叠则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态; (3)包围盒有重叠的部分调用物理引擎bullet中面片级的碰撞检测方法生成碰撞物体对; (4)判断碰撞对中是否包含手掌或者大拇指,如果包含其中之一,则继续执行后面的步骤,否则判定虚拟物体没有处于被抓取的状态; (5)判断碰撞对中除大拇指外的手指的数量是否大于1,如果满足条件,则认为虚拟物体处于被抓取的状态,否则,判定虚拟物体没有处于被抓取的状态。
8.根据权利要求7所述的一种基于数据手套和物理引擎的虚拟手的实时抓取方法,其特征在于:包围盒是指平行于坐标轴的能够将虚拟物体以及虚拟手包裹在里面的最小立方体。
【文档编号】G06F3/0346GK103955295SQ201410154156
【公开日】2014年7月30日 申请日期:2014年4月17日 优先权日:2014年4月17日
【发明者】邢若瀚, 赵罡, 薛俊杰, 马国财 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1