Почему с MultibodyPlant я получаю `SolveQuadraticForTheSmallestPositive Root (): condition 'Delta> 0' failed '? - PullRequest
2 голосов
/ 27 мая 2020

(Это из беседы Drake Slack .)

Я играю с демонстрацией «взрывающегося IIWA», чтобы прототипировать некоторые рабочие процессы с MultibodyPlant и SceneGraph. По сути, я просто добавляю руку робота с шарнирным соединением (поворотные соединения между несколькими звеньями) и сбрасываю руку робота с высоты. Когда он достигает определенной точки, я хочу приостановить симуляцию, удалить все суставы и возобновить симуляцию. работа над двоичной сборкой):

multibody_plant_subgraph_test.py

Однако, когда я пробую все соединения и моделирую, я получаю следующее утверждение от Drake's 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 Вот как будет выглядеть симуляция, если я просто уберу столкновения и футз со скоростями:

sim

1 Ответ

2 голосов
/ 27 мая 2020

Из ответа Шерма:

Есть ли у вас там безмассовые или безынерционные тела? Это нормально, если они являются внутренними для многотельного дерева, но не в качестве конечных узлов. После того, как вы удалите стыки, все тела станут концевыми.

Так и случилось. Мне просто нужно было убедиться, что я удалил все безмассовые тела в этом случае, и все сработало:

фиксация с соответствующими изменениями

Как это выглядит без столкновения хаки удаления / скорости (инерция + столкновения выглядят не так уж и здорово, но это шаг в правильном направлении):

enter image description here

...