如何使用动能找到刚体动力学模拟中的位置

时间:2015-08-20 19:57:25

标签: math simulation physics discrete-mathematics rigid-bodies

我正在尝试为我的模拟实现刚体动力学。我正试图模拟所附的论文中的张力。

我关注的论文是:Dynamic equations of motion for a 3-bar tensegrity based mobile robot

根据这篇论文和我到目前为止所读到的一般过程是:

对于每个栏:

  • A)定义条形的姿势(q):为此,我需要一个位置向量和一个 方向向量。我有这个,因为这是我的初始职位。
  • B)应用初始速度:0
  • C)寻找动能
  • D)寻找潜在能量
  • E)查找扭矩

对于整个系统:

  • A)寻找动能
  • B)寻找潜在能量
  • C)查找扭矩

我的问题是如何根据动能潜在能量找到每个条形的新姿势(位置和方向)的转矩

据我所知,我需要线性加速度和角加速度,然后是线速度和角速度,最后更新姿势(位置和方向)。我不明白我怎么能这样做。

我查看了那些书并阅读了一些笔记,但我实际上并不了解如何做到这一点

  1. 刚体动力学算法,作者:Roy Featherstone
  2. 游戏开发者物理学,David M.Bourg
  3. 基于物理的建模,David Baraff
  4. 可能的额外澄清:

    1)基本上W矩阵需要φ, θ,的角度,这些角度是整个结构的基本参考系的角度吗?不是每个柱的角度,因为这不是φι,我认为它适用于整个系统?

    2)关于移动参考框架的惯性矩阵,我明白这必须参考每个条形图?但由于dM/dq适用于整个系统,因此 Imb的矩阵应该是什么?

    3)如何分解M(q)

    4)在论文中,通过电缆中的uCo进行描述。我想尝试别的东西,在中心连接在一起的杆,每个都可以只轴向移动。所以我想我必须为每个栏添加一个力并影响它?

    如果您有任何信息,请告诉我?

1 个答案:

答案 0 :(得分:4)

你的问题的答案是论文中的等式12,它给出了时间t的加速度。

计算加速度

如果仔细观察等式12,则每个项都是先前定义的(除了每个节点-g * mi沿z轴的i重力,因此f gi = [0, 0, -g * mi])。我建议您开始构建/计算这些术语(考虑到I更改基础的评论)。

要区分M(q),请记住所有milir1ir2i都是常量,因此只有W有一个非零衍生物:

differentiating M over q

然后区分

中的每个术语

只剩下未知数,即加速度,在论文中写为q with 2 dots on top

你现在需要将你计算出的所有元素放在等式的右边,计算结果向量,并分解你的M(q),它是所有Mi(q)的块对角矩阵。 1}},因此这相当于将每个Mi(q)分解。然后你将获得加速度,你可以从中加速速度,然后是位置。

集成

这是遗漏的,但并不难。由于您需要速度来计算加速度,因此您必须使用像Semi-Implicit Euler method这样的一阶积分器。

因此,速度和位置应更新如下:

simple first-order integration