【问题标题】:Inverse kinematics with end effector orientation?具有末端执行器方向的反向运动学?
【发布时间】:2019-04-01 08:49:04
【问题描述】:

我正在尝试实现逆运动学求解器,但这次即使使用末端执行器的方向。当末端执行器只需要位置时,我成功了。

我了解到,在这种情况下,您可以像这样构造雅可比矩阵,其中 w_i 是全局空间中的第 i_th 旋转轴,p_i 是从第 i_th 轴到目标位置的向量。

问题是我必须在下面的等式中计算 x_dot。

当 x_dot 只考虑位置并且没有方向时,这非常简单。 但是现在当 x_dot 需要 6 个条目(位置、方向)时,我不知道应该为方向部分做什么。我一直在使用欧拉角来表示我的程序中的方向。

我现在的想法只是用目标的偏航、俯仰和滚动减去当前末端执行器的偏航、俯仰和滚动,然后将每个结果除以 100。但这似乎有点复杂。有没有更好的方法来解决这个问题?任何想法将不胜感激!

【问题讨论】:

  • 我正在通过迭代 CCD 进行 IK,它看起来像这样 Working of CCD algorithm for Inverse Kinematics。但是,如果您的运动学受到相当大的限制,那么您必须为执行器和轴添加优先级。是的,这对于 6 DOF 端点也是可行的
  • 无论如何,如果您将欧拉角的方向转换为 3D 矢量,那么它更适合点积
  • 好吧,你可以继续使用欧拉角。但这会使你的生活变得不必要的复杂。使用 Spektre 建议的向量。然后,找到前向规则,推导,你就有了雅可比的条目。
  • @Nich Schertler 老实说,我不明白 Spektre 先生的意思……你能更具体一点吗?找到代表目标的yaw、pitch、roll和当前末端执行器的两个向量后怎么办?

标签: opengl inverse-kinematics skeletal-animation


【解决方案1】:

您需要将末端执行器的方向表示为 3 x 3 旋转矩阵。您在当前关节向量 (Theta) 处计算末端执行器的方向,然后为关节向量中的每个元素添加一个小增量(在您的情况下为 6 个增量,因为六个关节)。在简单的情况下,您对每个小关节变化导致的尖端位置变化感兴趣,您计算了 X、Y 和 Z 位置的变化,这是在 theta 位置的简单矢量减法,并且对于每个扰动 theta。要对角度做同样的事情,您需要找到将 3x3@Theta (A) 带到 3x3@ThetaPrime(B) 的旋转矩阵 R。

因为 A*R=B

AInvAR=AInv*B

AInve*A = 身份

R=AInv*B

从 R 中,您可以提取 delta roll、pitch、yaw Euler 角。公式在这里

https://pdfs.semanticscholar.org/6681/37fa4b875d890f446e689eea1e334bcf6bf6.pdf

theta 值是由每个 theta 的变化引起的偏航、俯仰和滚动的变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2020-07-05
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多