logo好方法网

一种反向动力学自由度的动态约束方法


技术摘要:
本发明提供一种反向动力学自由度的动态约束方法,包括S1、设置各个关节的自由度约束;S2、通过各个关节构建骨骼层级的雅克比矩阵,当一个关节的一个自由度被约束时,抹去该自由度在雅克比矩阵对应列上的元素,并使后续的元素往前收缩;S3、设置各个关节的反向动力学的  全部
背景技术:
在使用反向动力学的过程中,经常会出现仅需要沿特定轴旋转的关节(比如手肘) 的情况。按照常理来讲,这种情况可以使用角度硬约束解法来处理这种问题。但是角度硬约 束的代价十分高,会严重拉低计算速度。特别是在特定的骨骼结构下,过多的硬约束可能增 加十倍以上的计算消耗。 例如,多数时候反向动力学仅仅需要计算一个轴、机械臂、人的手臂或者腿部反向 动力学计算等。如果对自由度约束再增添动态构建,比如当旋转到达某个位置时,改变骨骼 旋转轴,这个时候约束方案更为吃力。所以需要有一种更为快捷方便的方式来处理单纯的 可动态增长的轴自由度的约束问题。
技术实现要素:
本发明的目的是提供一种反向动力学自由度的动态约束方法,以解决采用传统的 增加硬约束来处理动态约束造成计算消耗巨大的问题。 本发明提供了如下的技术方案: 一种反向动力学自由度的动态约束方法,包括以下步骤: S1、设置各个关节的自由度约束,进而确定各个关节需要计算的自由度; S2、通过各个关节构建骨骼层级的雅克比矩阵,当一个关节的一个自由度被约束 时,抹去该自由度在雅克比矩阵对应列上的元素,并使后续的元素往前收缩; S3、设置各个关节的反向动力学的位置矩阵; S4、将位置矩阵和雅克比矩阵带入反向动力学数值解法,获取角度旋转结果; S5、通过各个关节的自由度约束来从角度旋转结果中选择角度值更新所有关节的 自由度约束; S6、判断当前各个关节的自由度约束是否满足反向动力学计算迭代终止条件, 若是,则更新后的所有关节的自由度约束为计算结果; 若否,则返回S1。 优选的,当需要修改一个关节的自由度约束时,可以在S6跳转S1时进行自由度约 束的修改。 优选的,在所述S2中雅克比矩阵中元素往前收缩,使得S4中角度旋转结果也会相 应的收缩,并最终使得收缩的元素与自由度约束一一对应。 优选的,所述设置各个关节的反向动力学的位置矩阵包括确定一个或者几个目标 位置,让各个骨骼链做旋转变换,从而得到末端子骨骼所处的目标位置,并根据所处的目标 位置构建位置矩阵。 3 CN 111571586 A 说 明 书 2/4 页 本发明的有益效果是: 本发明一种反向动力学自由度的动态约束方法,依靠修改反向动力学矩阵设置达 成,和具体的反向动力学算法无关,不需要特定的反向动力学算法配合,其是发生在运算矩 阵构建阶段,所以可以在多种情况下使用。同时该动态约束方法是靠收缩运算矩阵来达到 约束的目的的,所以当自由度约束越多时,需要计算的矩阵反而越小,计算速度大幅度提 升。当需要满足特殊的运算操作,例如当骨骼运动到一定的位置,修改自由度约束或者变更 约束的自由度时。该工具无需修改计算条件和增加大量的矩阵约束设置,可以动态的修改 自由度约束。 附图说明 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实 施例一起用于解释本发明,并不构成对本发明的限制。在附图中: 图1是本发明方法流程示意图。
下载此资料需消耗2积分,
分享到:
收藏