【问题标题】:How do I set a RevoluteJoint angle and velocity exactly?如何准确设置 RevoluteJoint 角度和速度?
【发布时间】:2015-01-19 23:44:15
【问题描述】:

我使用 JBox2D 构建了一个简单的模拟器,其中包含一个由一组身体和四个旋转关节构建的角色。我遇到了一个问题:我需要准确地恢复这个角色的“姿势”,给出一个关节角度、关节速度和躯干位置/旋转/速度/角速度的列表。

对于身体的状态有方便的 getter 和 setter,但我找不到一个很好的方法来强制关节角度到它们需要的位置(在这个过程中移动身体)。该站点上的一些解决方案建议设置一个基本的反馈系统,以尝试让关节电机将关节驱动到所需的角度,但这似乎不精确,并且可能需要大量计算。理想情况下,我想找到一种直接设置这些值的方法。

作为最后的手段,我可​​以使用正向运动学来自己计算所有的平移和旋转,但也许有更简单的方法。

任何帮助表示赞赏。谢谢。

【问题讨论】:

    标签: box2d angle jbox2d revolute-joints


    【解决方案1】:

    关节本身没有任何角度或速度。当您调用 GetJointAngle 和 GetJointSpeed (see the source) 时,它们连接的两个物体的相对角度和速度决定了您会得到什么。

    因此,有这么直接的方法可以将这些东西设置在关节中。您需要设置与该关节相关的物体的角度和速度、角速度等。

    【讨论】:

    • 给定一个完全指定的物体(位置、速度、角度、角速度,即 [x,v,\theta,\omega])和所有连接物体的关节属性(角度、角速度) ,似乎我应该能够解决其他所有问题的 [x,v,\theta,\omega] 元组。使用 setTransform() 和其他设置器会导致下一个模拟滴答时的关节出现问题吗?
    • 不,只要您设置的内容有意义(如果您要从之前运行的模拟中恢复值,则应该这样做)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2014-12-27
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    相关资源
    最近更新 更多