Drake 全关节连接多体系统?

Drake 全关节连接多体系统?,drake,Drake,我目前正在创建一个球体系统,它可以驱动彼此推开。每个拐角处都有中心主体(teal),它们通过棱柱点连接到连接主体(黄色),以相同的方式连接到下一个拐角 创建球体的一维系统(例如,1x1x4系统)时,我没有遇到任何错误,系统的行为符合预期 在尝试以2x2x2的方向创建一个由八个球体组成的系统时,我遇到了动员错误。 以下是系统的外观: 错误是: terminate called after throwing an instance of 'std::runtime_error' what():

我目前正在创建一个球体系统,它可以驱动彼此推开。每个拐角处都有中心主体(teal),它们通过
棱柱点连接到连接主体(黄色)
,以相同的方式连接到下一个拐角

创建球体的一维系统(例如,1x1x4系统)时,我没有遇到任何错误,系统的行为符合预期

在尝试以2x2x2的方向创建一个由八个球体组成的系统时,我遇到了动员错误。 以下是系统的外观:

错误是:

terminate called after throwing an instance of 'std::runtime_error'
  what():  This mobilizer is creating a closed loop since the outboard body already has an inboard mobilizer connected to it. If a physical loop is really needed, consider using a constraint instead.
Aborted (core dumped)


我知道错误来自于共享子实体或外部实体的关节,比如立方体的两个边驱动一个角的情况。不幸的是,我还没有找到一种成功使用约束的方法。如何更好地定义此系统?

解决此问题的一种方法是使用Drake(本质上是一个刚性弹簧和阻尼器)模拟“焊接”约束。在Drake中有一个很好的例子——请参阅


一般的想法是通过锯断一个或多个实体,然后用衬套(不算拓扑环)将它们焊接在一起,从而打破拓扑环。

这可能正是我想要的——因为我希望这些实体连接之间有一点一致性!我会看看这是怎么回事。我试着在方向上用一个关节连接,但遇到了一些奇怪的错误。它试图连接Z轴上两个不同球体的连接器,这两个球体应该焊接在一起。将k_z设置在~210以上会导致可视化工具失败,或者导致相关的实体消失。对于Dz,也有类似的限制。还有其他无法解释的行为,例如关节似乎忽略了关节限制等。我想知道您是否遇到了稳定性问题?看看它是否在较小的步长下工作。如果您正在进行连续积分,您也可以尝试隐式积分。如果您还没有,我建议您制作一个非常小、简单的系统进行调试,然后在小系统令人满意地工作后构建完整的系统。我发现常量对我的系统有效,现在它的性能更好!是的,我最初只测试了“焊接”两个车身,然后扩展到其他车身。检查:不幸的是,我仍然没有解决我的关节极限问题,请放在这里: