一种应用于类人形骨架的反向动力学解算方法及装置与流程

文档序号:12599880阅读:237来源:国知局
本发明涉及反向动力学领域,更具体地,本发明涉及一种应用于类人形骨架的反向动力学解算方法及装置。
背景技术
:反向动力学是一种通过先确定子骨骼的位置,然后反求推导出其所在骨骼链上n级父骨骼位置,从而确定整条骨骼链的方法。反向动力学是依据某些子关节的最终位置、角度,来反求出整个骨架的形态。它的特点是工作效率高,大大减少了需要手动控制的关节数目,缺点是求解方程组需要耗费较多的计算机资源,在关节数增多的时候尤其明显。但是,目前现有的反向动力学解算方法够解决指定末端姿态后计算关节朝向的问题,但这些方法只能应用于简单的链式骨架上,不能处理类人形骨架复杂的树状结构。技术实现要素:本发明的一个目的是提供一种能够处理类人形骨架复杂的树状结构的反向动力学解算的新技术方案。根据本发明的第一方面,提供了一种应用于类人形骨架的反向动力学解算方法,包括:设定所述类人形骨架的初始姿态;设置所述类人形骨架中至少一个关节的目标姿态及对应所述关节的解算参数;根据所述初始姿态、所述目标姿态和所述解算参数进行反向动力学解算处理,得到所述类人形骨架的最终姿态。可选的是,所述设定所述类人形骨架的初始姿态之前还包括:标记所述类人形骨架中的关键关节、及所述类人形骨架的朝向;将所述类人形骨架设置为T形或者A形姿态。可选的是,所述目标姿态包括目标位置和/或目标朝向。可选的是,如果所述关节无法到达目标位置时,通过拉动机制调动所述类人形骨架的其他部位以使所述关节达到所述目标姿态。可选的是,所述方法还包括对所述关节的旋转角度进行约束处理。根据本发明的第二方面,提供了一种应用于类人形骨架的反向动力学解算装置,包括:初始设置模块,用于设定所述类人形骨架的初始姿态;目标设置模块,用于设置所述类人形骨架中至少一个关节的目标姿态及对应所述关节的解算参数;解算模块,用于根据所述初始姿态、所述目标姿态和所述解算参数进行反向动力学解算处理,得到所述类人形骨架的最终姿态。可选的是,所述装置还包括:标记模块,用于标记所述类人形骨架中的关键关节、及所述类人形骨架的朝向;姿态设置模块,用于将所述类人形骨架设置为T形或者A形姿态。可选的是,所述目标姿态包括目标位置和/或目标朝向。可选的是,所述装置还包括拉动模块,用于如果所述关节无法到达目标位置时,通过拉动机制调动所述类人形骨架的其他部位以使所述关节达到所述目标姿态。可选的是,所述装置还包括约束模块,用于对所述关节的旋转角度进行约束处理。本发明的发明人发现,在现有技术中,存在不能处理类人形骨架复杂的树状结构的问题,本发明的实施例中,通过对类人形骨架的中相应关节的初始姿态、目标姿态和对应的解算参数进行反向动力学解算处理,能够使得复杂的树状类人形骨架到达其目标状态,并且可以对任意的关节进行单独或全身反向动力学解算。因此,本发明所要实现的技术任务或者所要解决的技术问题是本领域技术人员从未想到的或者没有预期到的,故本发明是一种新的技术方案。通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。附图说明被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。图1为根据本发明一种应用于类人形骨架的反向动力学解算方法的一种实施方式的流程图;图2为单位球面上的切向量场的示意图;图3为根据本发明一种应用于类人形骨架的反向动力学解算装置的一种实施结构的方框原理图。具体实施方式现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。为了解决现有技术中存在的反向动力学解算方法不能处理类人形骨架复杂的树状结构的问题,提供了一种应用于类人形骨架的反向动力学解算方法及装置,图1为根据本发明一种应用于类人形骨架的反向动力学解算方法的一种实施方式的流程图。如图1所示,本发明方法包括如下步骤:步骤S101,设定类人形骨架的初始姿态。步骤S102,设置类人形骨架中至少一个关节的目标姿态及对应的解算参数,其中,目标姿态包括目标位置和/或目标朝向。步骤S103,根据初始姿态、目标姿态和解算参数进行反向动力学解算处理,得到类人形骨架的最终姿态。具体的,对于类人形骨架的四肢,在本发明的一个具体实施例中,可以是利用传统的解三角形方法求解。为了保证解的稳定性,需先构造单位球面上的切向量场F(p):F(p)RotationFromTo((1,0,0),p)*(0,1,0),p≠(-1,0,0)(0,1,0),p=(-1,0,0)]]>其中,向量p为三维空间中的任一单位向量;RotationFromTo函数接受两个参数,这两个参数都是三维空间中的单位向量,并返回表示第一个参数到第二个参数的最近旋转的四元数;该向量场的可视化结果见图1。将四肢的三个关节所在的平面作为解算平面,将解算平面法线作为末端关节方向的函数,将按照上述向量场确定的解算平面作为零平面。任给一个三关节结构,该结构的姿态角定义为零平面法线方向到该结构解算平面法线方向的夹角。在进行反向动力学解算前,可以预先计算结构起始状态的姿态角,得到解算结果后,调整解算结果的姿态角至与原姿态角相同,从而可以得到稳定的姿态变化过程。对于类人形骨架的脊椎,则需要同时考虑末端关节的目标位置和目标朝向。由于脊椎关节数目较多,为了得到唯一的解,总是假设所有的关节绕着相同的轴旋转。为了使末端关节到达目标朝向,只需计算当前末端关节的朝向到目标朝向的旋转,并将这一旋转的角度按一定权重分配到脊椎中的各个关节上。为了使末端关节到达目标位置,以目标位置所在的方向为目标,按另一不同的权重为关节分配旋转角度,并通过回溯法优化其角度值,最终使末端关节位于目标方向上。在进行实际解算时,迭代地执行上述两个步骤,直至结果收敛。这样,本发明反向动力学解算方法就可以应用于复杂的树状类人形骨架,并且可以对类人形骨架的四肢和脊椎中的任意关节进行单独的反向动力学解算。并且,在关节的目标姿态和解算参数连续变化时,所得到的解算结果是稳定的,不会产生突变。为了获得更真实的人体姿态,在本发明的另一个具体实施例中,本发明的方法还可以进一步定义关节的角度约束。不同于传统的欧拉角表示,本发明采用一种新的用角度表示旋转的方法,其三个分量的取值范围都在[-180°,180°)。任给一单位四元数q和一个单位向量v,记qθ为表示绕v旋转θ的旋转的单位四元数,θ∈[-π,π),令Angle(q)=2*arccos(|q.w|),即取旋转角度的函数,令f(θ)=min{Angle(qqθ-1),Angle(qθ-1q)},可以证明,f在[-π,π)上是常函数或取得唯一最小值,令f取得最小值的θ可以用来表示旋转q在轴v上的旋转分量(当f是常函数时取0)。分别计算q在x轴,y轴和z轴上的旋转分量,就得到了旋转的角度表示。用户可以对关节的三个分量分别设置最大值和最小值。在反向动力学解算完成后,计算每个关节的朝向相对于初始朝向的变化量,将该变化量分解为分量后,按对应的最大值和最小值进行截断,再将截断后的三个分量合成为旋转并应用于关节朝向。这样,能够进一步提高解算结果的质量。进一步地,当某一身体部位无法到达目标位置时,可以是通过拉动机制调动其他身体部位,从而使任一关节都可能影响类人形骨架的全部关节,获得全身反向动力学效果。根据人体结构,手臂和头部将拉动脊椎末端关节,而脊椎和腿部将拉动骨盆。以计算左手腕部的到达问题为例,当全部身体部位解算完成后,检查腕部关节的实际位置到目标位置的平移向量,如果没能到达目标位置,则沿该向量平移脊椎末端关节的实际位置,并将其设为新的脊椎目标位置,进行重新解算。如果脊椎仍未能到达目标位置,则按同样的方式进一步拉动骨盆。当多个关节同时拉动时,则按其拉动参数的值对各个平移向量进行加权平均,将结果应用于被拉动关节上,因此,任意关节的目标姿态和解算参数都可能影响类人形骨架的全部关节,这样就可以对类人形骨架进行全身的反向动力学解算。在此基础上,在步骤S101设定类人形骨架的初始姿态之前还需初始化整个解算系统,包括以下步骤:标记类人形骨架中的关键关节、及类人形骨架的朝向;以及,将类人形骨架设置为T形或者A形姿态。其中,标记各个关键关节是指将类人形骨架中的某些关节标记为骨盆、脊椎起始关节、脊椎末端关节(即颈部起始关节)、脊椎末端关节、左右眼球、左右肩关节、左右肘关节、左右手腕关节、左右髋关节、左右膝关节和左右脚腕关节中的任意一个,如果目标类人形骨架中的一些关节不对应上述关键关节中的任何一个,可以不加以标记,即无需在类人形骨架中每一关节均进行标记。具体的,类人形骨架的朝向例如可以包括前方和上方。本发明还提供了一种应用于类人形骨架的反向动力学解算装置,图3为本发明一种应用于类人形骨架的反向动力学解算装置的一种实施结构的方框原理图,如图3所示,本发明装置300包括初始设置模块301、目标设置模块302和解算模块303,该初始设置模块301用于设定类人形骨架的初始姿态;该目标设置模块302用于设置类人形骨架中至少一个关节的目标姿态及对应关节的解算参数;该解算模块303用于根据初始姿态、目标姿态和解算参数进行反向动力学解算处理,得到类人形骨架的最终姿态。在本发明的一个具体实施例中,该装置300还包括标记模块和姿态设置模块,该标记模块用于标记类人形骨架中的关键关节、及类人形骨架的朝向;该姿态设置模块用于将类人形骨架设置为T形或者A形姿态。其中,目标姿态包括目标位置和/或目标朝向。进一步地,该装置300还包括拉动模块,该拉动模块用于如果关节无法到达目标位置时,通过拉动机制调动类人形骨架的其他部位以使关节达到目标姿态。在此基础上,该装置300还包括约束模块,用于对关节的旋转角度进行约束处理。本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本
技术领域
的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1