如何让RevoluteJoint移动到某个角度

时间:2014-07-21 00:47:09

标签: java algorithm math box2d physics

我有一个RevoluteJoint(Box2D / AndEngine类)需​​要不时地将它移动一定角度。当它需要移动到所述角度时它移动的方向和速度可以是任何东西。棘手的部分是让它在正确的时刻减速,以便关节不会超过目标并开始围绕目标角度摆动。

我看到它的方式,变量是:

  • V - 关节试图达到的角速度(以弧度/秒为单位)。负面逆时针方向。
  • W - 实际角速度。如果偏离目标角度则为负。
  • D - 到达目标角度之前的距离(以弧度表示)
  • Q - 电机转矩
  • L - 角动量
  • 我有没有错过?

任何物理爱好者或机械工程师谁能告诉我一个允许我根据这些变量调整Q和V的公式,以便关节停在正确的位置?

PS:如果V设置为0,关节将尝试保持其位置

1 个答案:

答案 0 :(得分:1)

请参阅:Damped harmonic oscillator

您所描述的听起来像具有过阻尼的阻尼谐振子(阻尼比ζ> 1)。 RevoluteJoint的目标角度应始终设置为振荡器的静止位移。

在维基百科上描述的等式中,与变量的对应关系如下:

  • 质量m是旋转物体的惯性质量
  • 力F是电机扭矩
  • 位移x是关节的当前角度

其他变量的对应关系应该是直截了当的。请注意,您没有在说明中提及惯性质量。

注意不要混淆场景中无阻尼角频率ω 0 ,角频率ω和谐振频率ω r 的含义。这些是角频率,因为你有一个旋转关节。这些是位移域中的角频率,对应于关节角度的振荡。