对于MultibodyPlant,为什么我会得到“SolveQuadicForthesmallestPositiveRoot():条件“Delta>0”失败”?

2024-05-29 07:05:30 发布

您现在位置:Python中文网/ 问答频道 /正文

(这是来自aDrake Slack conversation。)

我正在玩一个“爆炸式IIWA”演示,用MultibodyPlantSceneGraph来原型化一些工作流。基本上,我只是添加了一个具有关节(多个连杆之间的旋转关节)的机械臂,并将机械臂从高处放下。当它到达某个点时,我想暂停模拟,删除所有关节,然后继续模拟

下面是我正在使用的代码(目前需要一些Drake PRs来完成二进制构建):

^{}

但是,当我尝试所有关节并进行模拟时,我从Drake的TAMSI Solver中得到以下断言:

  File ".../common/test/multibody_plant_subgraph_test.py", line 345, in do_falling_exploding_sim
    simulator_new.AdvanceTo(2.)
SystemExit: Failure at external/drake/multibody/plant/tamsi_solver.cc:217 in SolveQuadraticForTheSmallestPositiveRoot(): condition 'Delta > 0' failed.

你知道为什么会这样吗

FTR这就是模拟的样子,如果我去掉碰撞和futz的速度:

sim


Tags: intestslack原型drake机械plant关节
1条回答
网友
1楼 · 发布于 2024-05-29 07:05:30

根据Sherm的回答:

Do you have any massless or inertialess bodies in there? Those are OK as long as they are interior to a multibody tree, but not as terminal nodes. After you remove the joints all the bodies are terminal.

结果就是这样。我只需要确保在这种情况下,我移除了所有无质量的物体,并且一切正常:

commit with relevant change

不进行碰撞移除/速度破解(惯性+碰撞看起来不太好,但这是朝着正确方向迈出的一步):

enter image description here

相关问题 更多 >

    热门问题