问题标签 [inverse-kinematics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
128 浏览

opengl - 雅可比逆运动学给出正确但尴尬的结果?

我正在尝试使用雅可比矩阵及其对我的人体骨骼模型的伪逆来解决 IK 问题,但我得到了非常尴尬的结果。但问题是,答案是对的!(即,足够接近目标位置和方向)例如,这是一个尴尬的结果。

在此处输入图像描述

这是我将其应用到他骨盆的整个上部时的 IK 结果。骨盆是这里的固定点。他将上半身向后靠在不需要的地方。

然而,这是当我固定他的肩膀位置时,只需将 IK 应用到他的手臂到相同的目标位置。 在此处输入图像描述

如您所见,您不需要将脊椎一直向后倾斜!

这是 Jacobian-IK 方法的已知问题吗?如果是这样,有什么方法可以让这更像人类吗?


JIC,我这样计算我的雅可比矩阵 在此处输入图像描述

0 投票
0 回答
231 浏览

qt - cnc 5轴头使用Qt(正解)的逆运动学

在 5 轴机床中,我使用正向运动学从 C 轴和 A 轴的位置了解刀具的方向:

5倍头

正向运动在 Qt 中很容易:

此轴配置非常简单,但可以有所不同,例如

我的问题是:我怎样才能做逆运动学?

从刀具方向矢量到 C 和 A 轴位置

例如,对于与 XYZ 平行的轴,我可以使用 auto vect =quaternion.toEulerAngles(); 然后,欧拉角等于轴位置。

例如,对于 (1,0,0) 和 (0,-1,0) 轴我使用

但我不知道如何使用其他轴配置

0 投票
0 回答
143 浏览

unity3d - 为什么我的头像编辑器在尝试预览肌肉设置时出错?

事件发生的屏幕截图:https ://gfycat.com/ApprehensiveInconsequentialAmethystgemclam

我正在尝试熟悉 Unity 逆运动学 (IK) 系统,因此在标准资产中打开了与 Ethan 角色相关联的头像。它允许我使用“肌肉组设置”部分中的滑块,但如果我尝试移动“每肌肉”设置中的任何滑块,Unity 会引发空引用异常,然后停止更新场景窗口。“游戏”窗口继续更新,但对于我来说太小/太远了,无法用作预览机制。

我尝试重新启动统一并重新加载项目,但无济于事。

这是确切的错误:

0 投票
1 回答
326 浏览

sympy - 使用 Sympy 求解逆运动学

我想用 Sympy 解决简单的二维逆运动学问题。我知道 x 和 y 位置的正向运动方程。

如果我知道这两个方程,如何用 Sympy 求解 theta1 和 theta2 值?

0 投票
0 回答
603 浏览

godot - 如何在 godot 3.1 中对 IK 应用约束

SkeletonIK似乎忽略了任何和所有约束。

我已经设定:

  • 正常骨骼约束(在搅拌机中)
  • IK 约束(在搅拌机中)
  • PhysicalBone约束(在 godot 中)

这些都对 IK 没有任何作用,我可以将我的模型移动到绝对荒谬的姿势,将手臂拉过身体,诸如此类……</p>

PS:我尝试使用其内置的导出器以及 godots “better collada” 导出器从 blender 导出到 .dae - 没有区别。

IK 动画似乎也没有以任何方式改变“物理”骨骼的姿势,同时激活布娃娃和 IK 会导致彻底的混乱,但我不确定这与我的 IK 问题有什么关系。

说明在 IK 中没有约束的问题:

在此处输入图像描述

说明 IK + ragdoll 变得疯狂:

在此处输入图像描述

示例项目数据:
https
://paste.xinu.at/XaP6c/ 自从制作屏幕截图后,我将 PhysicalBones 放入分层顺序中,这样可以用布娃娃修复一些东西,同时破坏其他东西 - 但 IK 的行为仍然相同。

我本来希望我定义约束的三种方式中至少有一种方式可以实际应用于 IK 动画,但事实并非如此。

这不是它应该如何工作的,对吧?

如果有人设法让 IK 与约束一起工作,我会很高兴知道其中的诀窍……</p>

0 投票
0 回答
771 浏览

c# - 如何在 CCD 中限制关节旋转

我在数学上拼命挣扎,试图改进我一直在尝试在 Unity 中创建 IK 解决方案。

我做了一个简单的 CCD 算法,其行为符合预期:https ://www.youtube.com/watch?v=tZvdZGUxbbc

但是当我尝试向关节角度添加约束时,行为是不准确和扭曲的:https ://www.youtube.com/watch?v=k1YY9KqqaYY

目前,我有一个 for 循环,它遍历链中的所有关节,而未达到目标且当前尝试<尝试阈值。

一旦计算出每个关节的校正旋转,我将其应用于关节[i]。然后我检查每个关节的旋转,将其固定在最小-最大范围内。

这是应用旋转的代码,然后检查旋转限制:

如第二个视频所示,结果很差。

任何人都可以提出解决方案,并可能解释为什么这不起作用?

更新,更正了粘贴代码中的错字。

0 投票
0 回答
950 浏览

matlab - 机器人 MATLAB 的正向和反向运动学

希望你一切顺利。

我正在通过反向运动学验证我的正向运动学的输出,但结果并不理想。由于我的反向运动学的输出与正向运动学的输入不同。

机械手的DH参数如下:

链接:alpha、a、theta、d

链接 1:-90 0 theta1* d1

链接 2:0 a2 theta2* 0

链接 3:0 a3 theta3* 0

使用的函数有:

逆运动学

正向运动学:

0 投票
0 回答
346 浏览

unity3d - 如何使用具有固定肘部旋转的 2D IK 瞄准枪?

我正在使用带有 2 根骨头的 2D 骨骼角色 ArmUpper 和 ArmLower(手是固定的)做一个“瞄准鼠标”,我想我需要某种 IK 解算器。以下是参数:

  • ArmUpper:在肩部固定位置,但可以自由旋转
  • ArmLower:有一个固定的旋转(取决于武器类型),它的位置是通过旋转 ArmUpper 来设置的,它最终会在绿色圆圈中的某个位置

如何计算 ArmUpper 的旋转,使 ArmLower 的两端都指向目标标线?

我在 C# 中使用 Unity 进行此操作,但任何伪代码或公式都会有所帮助。

谢谢!

在此处输入图像描述

0 投票
1 回答
481 浏览

c# - 尝试在 Unity 中实现 Jacobian IK 示例概述

我正在尝试实现此处显示的示例。

但是在运行代码并使用调试模式时,没有返回值。我假设我没有使用正确的旋转轴。

额外的统一细节:

Joints 变量是一个 GameObjects 数组(由 4 个组成)。

Target 是一个单一的 GameObject。

Tools.M_Populate、Tools.M_Multiply 和 Tools.M_Transpose。在检查调试数据时,我已经检查并且似乎正在工作。它们是返回 float[,] 的简单代码。

我期待一个角度向量适用于每个关节

0 投票
1 回答
1558 浏览

three.js - 围绕给定轴和角度的枢轴点正确旋转对象

在 Three.js 中似乎有很多我个人觉得不太直观的旋转方式。参见示例
http://cloud.engineering-bear.com/apps/robot/robot.html 机器人图片

当我对多个对象应用旋转时,我得到了非常奇怪的意外效果。例如,当我旋转已相互添加的对象并开始旋转父对象时,各个对象将突然之间通过相对于彼此不同的位置放置,然后它们原来的位置。我现在正在尝试分组,并希望避免同样的效果。

有关当前状态,请参阅http://pi-q-robot.bitplan.com/example/robot?robot=/models/thing3088064.json和https://github.com/BITPlan/PI-Q-Robot源代码。

因此,我在不同的 API 选项之后搜索了适当的示例:

回转

旋转轴

旋转环绕世界轴

旋转世界轴

旋转关于点

setRotationFromAxisAngle

setEulerFromQuaternion

应用矩阵

我喜欢https://stackoverflow.com/a/56427636/1497139jsFiddle

我还在discourcee.three.js.org 中发现了以下讨论 中枢问题

问题 上述信息都不够清楚,无法直指要解决的问题。与提案中的解决方案相比,上面的图形更清楚地说明了问题。

a)立方体绕圆柱体旋转 即使圆柱体被移动,我也想将圆柱体用作轴。我希望最简单的方法是使用 rotateAroundWorldAxis -是可以在three.js的最新版本中使用还是我有从例如https://stackoverflow.com/a/32038265/1497139添加它?

b)我想得到一个要旋转的对象链,以便以后应用逆运动学,如

虽然我查看了该解决方案的源代码,但我真的找不到父子定位和旋转发生的地方。有哪些相关的代码行/API 函数可以围绕关节链进行适当的旋转? 我已经查看了 Three.js 的 Bone/Skeleton API,但在那里遇到了同样的问题 - 很多代码行,但没有明确的点在哪里发生子和父之间的旋转/定位。