一种基于快速逆向运动学的实时运动合成方法转让专利

申请号 : CN201110240426.0

文献号 : CN102426709B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 岑丽霞梁晓辉

申请人 : 北京航空航天大学

摘要 :

本发明是一种基于快速逆向运动学的实时运动合成方法,该方法首先对当前驱动虚拟角色的运动进行分析,将其以步长为单位进行分割,同时为了识别运动数据所体现的操作者的意图,对关键关节点进行提取。然后,根据用户设定的迈步信息,即虚拟环境的变化信息,利用快速的逆向运动学算法对关键关节点的数据进行调整,同时依据生物力学中对于人体平衡控制的相关理论,对虚拟角色的平衡状态进行分析和调整,最后,基于几何方法的数据平滑方法被用于数据平滑,从而使得虚拟角色的运动足以完成与虚拟环境的交互。本发明最后将算法以服务器-客户端的模式部署到PC机和PDA上,实现了移动设备上终端用户对虚拟角色运动的交互控制。

权利要求 :

1.一种基于快速逆向运动学的实时运动合成方法,其特征在于步骤如下: (1)步长分割 依据人体生物力学理论中对于人体走路步长的定义将当前的运动数据以步长为单位进行分割,所述运动数据由运动捕获设备获得; (2)关键关节点分析

通过对运动数据进行关键关节点分析,确定对交互运动影响最大的关键关节点,从而在运动数据的快速调整阶段对这些关键关节点进行调整; (3)基于快速的逆向运动学算法以及平衡控制策略调整人体运动

在每一步开始时,将用户设定的作为虚拟环境特征的迈步信息与当前虚拟角色的迈步信息做比较,所述当前虚拟角色的迈步信息包括步长或者迈步高度,如果虚拟角色能够完成与虚拟环境的交互,则用运动数据驱动虚拟角色运动;如果不能完成与虚拟环境的交互,则利用逆向运动学算法并通过自适应的调整迭代步长,同时结合多线程机制,实现了运动数据的快速调整;所述平衡控制策略是依据人体生物力学关于人体平衡控制理论,即当人体身体重心的投影落在支撑面内的时候,人的身体才能保持平衡,否则不能保持平衡,当身体不平衡时,通过调整人重心的位置使虚拟角色达到平衡; (4)基于几何方法的数据平滑

利用当前数据帧与前一帧的偏移向量进行相关的计算来对数据帧进行平滑。

2.根据权利要求1所述的实时运动合成方法,其特征在于:所述步骤(1)中关于步长分割算法的步骤如下: (1.1)对运动数据进行滤波去除噪声;

(1.2)计算运动数据序列中左脚和右脚在全局坐标系下的坐标值序列; (1.3)对左右脚全局坐标系下的坐标值序列进行分析,根据其在垂直方向下的值判断迈步信息; (1.4)确定每一步的起始帧与结束帧、每一步的步长以及左右脚在运动过程中的所有着地点的位置,以方便后面的调整计算。

3.根据权利要求1所述的实时运动合成方法,其特征在于:所述步骤(2)中关于关键关节点分析,分析得到的是交互运动中起关键作用的关节点,步骤如下: (2.1)对原始运动捕获数据的协方差矩阵进行主成分分析,对运动帧数进行降维; (2.2)对降维后矩阵的行向量进行聚类分析,并根据每个关节点在不同聚类内的分布,得到关键关节点。

4.根据权利要求1所述的实时运动合成方法,其特征在于:所述步骤(3)中对于快速的逆向运动学算法以及平衡控制算法,其步骤如下: (3.1)根据用户设定的作为虚拟环境特征的迈步信息计算其与虚拟角色当前迈步信息的比例关系; (3.2)根据(3.1)计算的比例关系调整末端关键关节点的位置信息; (3.3)利用逆向运动学算法计算所涉及到链杆的当前步长所有帧的关键关节的自由度信息; (3.4)判断调整后的根节点的投影是否落在支撑面内,如果不落在支撑面内,则对根节点的信息进行再次调整,同时保证其他关键关节的调整不受到影响。

5.根据权利要求4所述的实时运动合成方法,其特征在于:所述步骤(3.3)中对于逆向运动学算法,其步骤如下: (3.31)计算雅克比矩阵,所述雅克比矩阵刻画了由链杆自由度信息变化引起的链杆末端位置的变化; (3.32)计算雅克比矩阵的转置矩阵以代替逆矩阵;

(3.33)利用步长自适应调整的梯度下降法计算链杆的自由度信息; (3.34)调整自由度信息以后,计算新的末端关节位置,直到新的末端关节位置与设定的关节位置的误差小于指定的阈值范围。

6.根据权利要求1所述的实时运动合成方法,其特征在于:所述步骤(4)中提出的基于几何方法的数据平滑,其步骤如下: (4.1)获取当前步进行调整的关节点;

(4.2)首先计算当前步最后一帧关节位置向量相对于下一个步起始帧位置向量的偏移向量; (4.3)从下一个步长的起始帧开始,将位置向量减去倍数乘以偏移向量的乘积,倍数初始值为1,迭代过程中倍数以步长0.02递减,一直到倍数降为零或者调整到运动数据序列的最后一帧。

7.一种应用于PDA的基于快速逆向运动学的实时运动合成方法,其特征在于如下步骤: (1)终端用户在移动设备PDA上加载虚拟角色的骨架信息,考虑到移动设备的存储局限性,将运动数据的加载放到服务器上; (2)服务器将运动数据以帧为单位按照一定的时间间隔发送到移动设备PDA; (3)PDA收到运动数据以后对虚拟角色进行绘制; (4)终端用户自主的调整虚拟环境中的特征点信息,并将修改信息反馈给服务器; (5)服务器根据终端用户反馈的虚拟环境中的特征点信息,按照权利要求1所述的基于快速逆向运动学的实时运动合成方法调整运动数据,并将调整后的运动数据继续发送给移动设备PDA,服务器和终端移动设备同步显示,其中所述虚拟环境中的特征点信息对应于权利要求1中用户设定的作为虚拟环境特征的迈步信息。

说明书 :

一种基于快速逆向运动学的实时运动合成方法

技术领域

[0001] 本发明属于计算机虚拟现实技术领域,特别是涉及计算机动画技术中的运动控制和人机交互领域。

背景技术

[0002] 随着虚拟现实技术的不断发展,实时的虚拟角色运动控制技术在动画、游戏、虚拟现实系统等越来越多的领域得到广泛应用。对于虚拟角色的运动控制技术而言,如何使得虚拟角色实时的根据虚拟环境的特征对当前的运动进行调整从而完成与虚拟环境的交互一直是研究的一个热点。基于物理模型的运动合成方法最近很受关注,它最大的优点是可以不使用运动捕获数据,并且可以相对自然的生成各种交互动作,它的局限之处在于,除了不能像运动捕获数据一样捕捉人体运动的各种细节,亦不能够应用到有终端用户的实时交互式应用中。运动捕获数据赋予虚拟角色运动以人的气息,从一定程度上反映了人的习惯、意图以及其特有的风格,所以在虚拟角色运动控制领域越来越受到关注,然而,运动捕获数据是在特定的环境下获得,当虚拟环境与这一特定的捕获环境存在差异时,怎样实时的对数据进行调整从而使其适合新的虚拟环境一直是一个难点。基于以上原因,需要寻找一种使用尽量少的运动数据序列,快速实时的运动数据编辑方法,在线的对重现的运动数据进行调整,从而完成与虚拟环境的交互过程。
[0003] 对于使用逆向运动学方法,并结合运动数据对虚拟角色的运动进行交互控制而言,主要问题有三:一为在什么时刻对哪些数据进行调整;二为如何实时的对数据进行调整并保持平衡,使得调整之后的运动自然同时保持原运动的风格;三是在调整之后如何在数据之间实现自然平滑的过渡。本发明将以这三个问题为基本出发点,对运动数据以及反映交互意图的关键关节点进行分析,利用快速的逆向运动学算法对数据进行在线调整,同时依据生物力学中关于人体平衡的分析理论对虚拟角色的平衡进行处理,最后提出了快捷合理的运动数据平滑方法。
[0004] 此外,便携式移动设备作为交互工具,越来越多的出现在虚拟现实领域的各种应用中。本发明以服务器-客户端的模式,将上述算法部署到PC机和PDA上,将PC机作为服务器,将一个或者多个PDA作为客户端,实现了一个用户或者多个用户实时的对各自虚拟角色的动作控制。
[0005] 本发明解决的优点在于:克服现有技术的不足,提出了步长分割算法,并提供了一种对于运动过程的交互动作所涉及到的关键关节点的分析方法,保留做出交互动作时起关键作用的关节点,从而起到降维的作用;同时克服了现有逆向运动学算法本身收敛速度慢以及求解结果不唯一等的缺点,通过自适应调整收敛步长并结合多线程技术,实现了快速的逆向运动学算法。

发明内容

[0006] 本发明提出的基于快速逆向运动学的实时运动合成方法,其主要步骤如下:
[0007] (1)步长分割
[0008] 依据人体生物力学理论中对于人体走路步长的定义将当前的运动数据以步长为单位进行分割,所述运动数据由运动捕获设备获得;
[0009] (2)关键关节点分析
[0010] 通过对运动数据进行关键关节点分析,确定对交互运动影响最大的关键关节点,从而在数据调整阶段对这些关键关节点进行调整;
[0011] (3)基于快速的逆向运动学算法以及平衡控制策略调整人体运动[0012] 在每一步开始时,将用户设定的作为虚拟环境特征的迈步信息与当前虚拟角色的迈步信息做比较,所述当前虚拟角色的迈步信息包括步长或者迈步高度,如果虚拟角色能够完成与虚拟环境的交互,则用运动数据驱动虚拟角色运动;如果不能完成与虚拟环境的交互,则利用逆向运动学算法并通过自适应的调整迭代步长,同时结合多线程机制,实现了运动数据的快速调整;所述平衡控制策略是依据人体生物力学关于人体平衡控制理论,即当人体身体重心的投影落在支撑面内的时候,人的身体才能保持平衡,否则不能保持平衡,当身体不平衡时,通过调整人重心的位置使虚拟角色达到平衡;
[0013] (4)基于几何方法的数据平滑
[0014] 利用数据帧之前的偏移向量相关的计算来对数据帧进行平滑;
[0015] 本发明所述步骤(1)中关于步长分割算法的步骤如下:
[0016] (11)对运动数据进行滤波去除噪声;
[0017] (1.2)计算运动数据序列中左脚和右脚在全局坐标系下的坐标值序列;
[0018] (1.3)对左右脚全局坐标系下的坐标值序列进行分析,根据其在垂直方向下的值判断迈步信息;
[0019] (1.4)确定每一步的起始帧与结束帧、每一步的步长以及左右脚在运动过程中的所有着地点的位置,以方便后面的调整计算。
[0020] 本发明所述步骤(2)中关于关键关节点分析方法,分析得到的是交互运动中起关键作用的关节点,步骤如下:
[0021] (2.1)对原始运动捕获数据的协方差矩阵进行主成分分析,对运动帧数进行降维;
[0022] (2.2)对降维后矩阵的行向量进行聚类分析,并根据每个关节点在不同聚类内的分布,得到关键关节点。
[0023] 本发明所述步骤(3)中对于快速的逆向运动学算法以及平衡控制算法,其步骤如下:
[0024] (3.1)根据用户设定的迈步信息计算其与虚拟角色当前迈步信息的比例关系;
[0025] (3.2)根据(3.1)计算的比例关系调整末端关键关节点的位置信息;
[0026] (3.3)利用逆向运动学算法计算所涉及到链杆的当前步长所有帧的关键关节的自由度信息;
[0027] (3.4)判断调整后的根节点的投影是否落在支撑面内,如果不落在支撑面内,则对根节点的信息进行再次调整,同时保证其他关键关节的调整不受到影响。
[0028] 本发明所述步骤(3.3)中对于逆向运动学算法,其步骤如下:
[0029] (3.31)计算雅克比矩阵,所述雅克比矩阵刻画了由链杆自由度信息变化引起的链杆末端位置的变化;
[0030] (3.32)计算雅克比矩阵的转置矩阵以代替逆矩阵;
[0031] (3.33)利用步长自适应调整的梯度下降法计算链杆的自由度信息;
[0032] (3.34)调整自由度信息以后,计算新的末端关节位置,直到末端关节位置与设定的关节位置的误差小于指定的阈值范围。
[0033] 本发明所述步骤(4)中提出的基于几何方法的数据平滑方法,其步骤如下:
[0034] (4.1)获取当前步进行调整的关节点;
[0035] (4.2)首先计算当前步最后一帧关节位置向量相对于下一个步起始帧位置向量的偏移向量;
[0036] (4.3)从下一个步长的起始帧开始,将位置向量减去偏移向量的倍数,倍数初始值为1,迭代过程中倍数以步长0.02递减,一直到倍数降为零或者调整到运动数据序列的最后一帧。
[0037] 本发明的另一个方面,是将以上方法应用于以服务器-客户端模式运行的PC机和PDA上,具体步骤如下:
[0038] (1)终端用户在移动设备PDA上加载虚拟角色的骨架信息,考虑到移动设备的存储局限性,将运动数据的加载放到服务器上;
[0039] (2)服务器将运动数据以帧为单位按照一定的时间间隔发送到移动设备PDA;
[0040] (3)PDA收到运动数据以后对虚拟角色进行绘制;
[0041] (4)终端用户可以自主的调整虚拟环境中的特征点信息,并将修改信息反馈给服务器;
[0042] (5)服务器根据终端用户反馈的虚拟环境中的特征点信息,按照本发明前面所述的基于快速逆向运动学的实时运动合成方法调整运动数据,并将调整后的运动数据继续发送给移动设备PDA,服务器和终端移动设备同步显示,其中所述虚拟环境中的特征点信息对应于基于快速逆向运动学的实时运动合成方法的步骤(3)中用户设定的作为虚拟环境特征的迈步信息。
[0043] 便携式移动设备作为各种分布式应用的主要载体,已经逐渐成为生活中很重要的一部分。本发明将PC机作为服务器,将便携式移动设备PDA作为客户端,实现了一个实时同步的分布式虚拟角色运动控制系统。此外,需要说明的是,基于快速逆向运动学的实时运动合成方法的四个主要步骤都是在上述第(5)步进行的。PC机作为服务器,承担了主要的计算任务,而PDA作为终端移动设备,主要的功能是提供给用户直观的界面体验,同时提供给用户修改虚拟环境特征的接口。
[0044] 实验表明,本系统可以在服务器和PDA上实现同步的显示,这对以后开发功能强大的分布式交互应用系统奠定了一个基础。
[0045] 本发明与现有技术相比的有益效果在于:首先对于特殊的双足运动(比如说走路、爬楼梯等)使用了以步长为单位的数据分割技术,使得数据调整的时刻可以得到很好的控制;然后是使用了关键关节点分析技术,从理论上说明了人在做出交互动作的时候哪些关节起主要作用,不同的交互动作起核心作用的关节存在很大差异;同时,通过使用自适应修正的迭代步长,加快了逆向运动学算法的收敛速度,依据生物力学人体平衡控制理论,简化并很好的处理了运动修正后的平衡问题;最后,针对诸如插值等数据平滑算法本身存在的问题,本发明提出了一种新颖的基于几何方法的数据平滑算法,实现了数据序列自然平滑的过渡。

附图说明

[0046] 图1为本发明算法的整体过程示意图;
[0047] 图2为基于几何方法的数据平滑算法示意图;
[0048] 图3(a)为原始运动数据的绘制效果图;图3(b)为调整第三步步长以后的绘制效果图;
[0049] 图4(a)为原始运动数据的绘制效果图;图4(b)为调整第六、七步迈楼梯高度以后的绘制效果图;
[0050] 图5(a),图5(b)为雅克比矩阵计算的示意图;
[0051] 图6为PDA应用的系统结构图;
[0052] 图7(a)、图7(b)、图7(c)和图7(d)为PDA应用的实验效果图。

具体实施方式

[0053] 下面结合附图以及具体的例子对本发明作进一步详细描述:
[0054] 本发明基于快速逆向运动学的实时运动合成方法,实施过程包括四个主要步骤:1、以步长为单位的分割算法;2、关键关节点分析;3、快速的逆向运动学算法以及平衡控制策略;4、基于几何方法的数据平滑算法;另一方面,本发明将前述4个步骤应用于以服务器-客户端模式在PC机和PDA上实现的分布式系统。具体流程参见图1,即核心算法的整体过程示意图:
[0055] 步骤一:以步长为单位的分割算法
[0056] 在运动数据分割算法执行之前,首先对数据进行预处理,即对数据进行平滑处理。这是因为运动捕获数据本身存在着不可避免的噪声。平滑的过程如下:
[0057]
[0058]
[0059] 其中,dataframe为指定帧的运动数据,dspread·spread=1,2,…7为插值的数据。
[0060]
[0061]
[0062] 其中lowIndex为计算dspread时使用的第一个数据的索引;highIndex为计算dspread时使用的第二个数据的索引;frame表示当前修改的数据在数据中处于第几帧;spread为跨度值;totalframe为数据的总帧数
[0063] 对数据进行基本去噪以后,以步长为单位对运动数据进行分割,并计算所有的步长,以及在运动过程中所有左右脚的着地点,以方便后续的数据分析和数据调整。分割的依据是:迈步的时刻,迈步脚垂直方向的坐标为先减小,后增大;分割方法是:设定一定的阈值,计算左右脚的全局位置,并在垂直方向上对其进行分析,并同时计算步长,以及在运动过程中脚的位置以构建虚拟环境中的交互点。
[0064] 步骤二:关键关节点分析,主要分成二个阶段:
[0065] 第一个阶段:对原始运动数据的协方差矩阵进行主成分分析
[0066] PCA是降维分析的一种常用手段,但是使用PCA对关节数量维度进行降维分析的缺点是打乱了原有的关节语义,从而难以选定关键关节点。为此,我们首先对运动数据的运动帧维度采用PCA进行降维分析处理,从而得到3m×q的矩阵,其中m表示关节数量,q表示将原有的T帧数据降为q维。由于每一个关节的数据拥有三个自由度,因此整个矩阵大小为3m×q;
[0067] 第二个阶段:对降维后矩阵的行向量进行聚类分析,并根据每个关节点在不同聚类内的分布,得到关键关节点。
[0068] 对于在第一阶段处理后得到的3m×q的矩阵,每一行都保留着非常清晰的语义,即为某一关节在某一自由度上的运动数据特征向量。因此,以将降维后得到的3m×q矩阵表达为[V1,V2,...,V3m]。
[0069] 对这3m个特征向量进行聚类分析,将其划分在k类里,则可以根据各个关节点三个自由度的运动特征向量所落在不同聚类中的个数作为判断各个关节点重要与否的标志。这是因为,如果一个关键点的三个自由度的运动特征向量落在不同的聚类内,则表示这个关节的三个自由度的运动特征拥有着显著的差别,进而说明这个关节对整个运动具有着较大的影响,说明其非常关键。对于具有着相同聚类个数的关节点,可以根据其离各个聚类中心的距离平方和来表征其重要程度。若该距离平方和越小,则表示这个关节点所表征的运动越接近于运动特征向量的聚类中心,说明其越为关健。
[0070] 步骤三:快速的逆向运动学算法以及平衡控制策略
[0071] 基本的逆向运动学算法如下所示:
[0072] while(e is too far from g){//判断新计算的末端控制器的位置与目标位置的差异
[0073] compute J(e,Ф) //计算雅克比矩阵
[0074] compute J-1 //计算雅克比矩阵的逆矩阵(转置矩阵)[0075] Δe=β(g-e) //以β为步长得到末端控制器应该调整的量[0076] ΔФ=J-1·Δe //由雅克比矩阵以及上面得到的Δe计算自由度信息的变化量
[0077] Ф=Ф+ΔФ //得到当前迭代自由度的值
[0078] compute new e vector} //计算自由度信息调整后的末端控制器的位置[0079] 在逆向运动学的实施过程中,我们用JT代替J-1,在一定程度上加快了迭代速度。
[0080] 雅克比矩阵被定义为向量对向量的微分。它足以反映一个向量中任何一维数据的变化对另一个向量变化的影响。雅克比矩阵的计算过程如下
[0081]
[0082] 其中,
[0083] J:为雅克比矩阵
[0084] e(ex,ey):为末端控制器的位置向量; 为链杆自由度的信息
[0085] 对于逆向运动学算法而言,雅克比矩阵的计算过程如下:
[0086]
[0087] ai′=ai·Wi-parent (6)
[0088] ri′-ri·Wi-parent
[0089] 其中
[0090] ai:旋转轴在局部坐标系下的单位向量
[0091] ri:旋转不动点在局部坐标系下的位置
[0092] ai′:旋转轴在全局坐标系下的单位向量
[0093] ri′:旋转不动点在全局坐标系下的位置
[0094] e:末端控制器的位置向量
[0095] Wi-parent:为子坐标系到父坐标系的变换矩阵
[0096] 步骤四:基于几何方法的数据平滑算法
[0097] 基于几何方法的快速数据平滑算法的示意图参见图2。本发明提出的运动数据调整是以步长为单位的,在平滑算法中,首先计算当前步长最后一帧相对于下一个步长起始帧的偏移 其中 为当前步长最后一帧的位置向量,为下一步起始帧的位置向量,为偏移向量。从下一个步长的起始帧开始
[0098]
[0099] 其中:
[0100] 为从下一步起始帧开始计的第n帧的位置数据
[0101] wi,n=0,1,2...:为每一次调整的偏移量
[0102] 当调整到数据最后一帧,或者w=0,数据平滑过程结束。
[0103] 本发明的一个应用,即以服务器-客户端模式在PC机和PDA上实现的简单的分布式系统,其系统结构图参见图3。这里实现的分布式系统是借助Windows Socket实现的,可以扩充为多用户分布式系统。PC机作为服务器向作为客户端的PDA发送运动数据,PDA一边接收运动数据,一边显示。PDA的操作者可以修改所操作虚拟角色的步长信息以及迈楼梯高度信息,具体的调整操作由PC来完成,修正的结果同时在PC和PDA上实现,系统流程图参见图6,实现的效果图参见图7。
[0104] 系统实施的主要步骤如下:
[0105] ①、终端用户在移动设备PDA上加载虚拟角色的骨架信息,考虑到移动设备的存储局限性,将运动数据的加载放到服务器上。
[0106] ②、服务器将运动数据以帧为单位按照一定的时间间隔发送到移动设备PDA。
[0107] ③、PDA收到运动数据以后对虚拟角色进行绘制。
[0108] ④、终端用户可以自主的调整虚拟环境中的特征点信息,并将修改信息反馈给服务器。
[0109] ⑤、服务器根据终端用户反馈的虚拟环境中的特征点信息调整运动数据,并将调整后的运动数据继续发送给移动设备PDA。服务器和终端移动设备同步显示。
[0110] 此外,需要说明的是,在将基于快速逆向运动学的实时运动合成方法应用于PC机和PDA系统上时,其运动合成方法的四个主要步骤都是在系统实施的第⑤步骤中进行的。PC机作为服务器,承担了主要的计算任务,而PDA作为终端移动设备,主要的功能是提供给用户直观的界面体验,同时提供给用户修改虚拟环境特征的接口。