Как указать, куда прикрепить плавающую базу? - PullRequest
1 голос
/ 06 июня 2019

Скажем, у меня есть простой маятник, прикрепленный к квадротору, определенному в файле sdf.

Когда я загружаю этот файл sdf в MultibodyTree, вектор непрерывного состояния по умолчанию имеет размер 4 (кватернион) +3 (x, y, z) + 1 (совместное соединение квадротора с маятником) = 8, как указано этим ответом .

По умолчанию анализатор urdf / sdf добавляетсистема с плавающим основанием на основе кватернионов.

Мой вопрос: как мне узнать, где прикреплен этот кадр 4 (кватернион) + 3 (x, y, z)?

А как мне контролировать, где он подключен?Скажите, что мои уравнения движения касаются кончика маятника, и я хочу, чтобы это плавающее основание 4 + 3 было прикреплено к кончику моего маятника. Как бы я это определил?

Ответы [ 2 ]

2 голосов
/ 08 июня 2019

Кажется, теперь я понимаю. У нашего парсера SDF все еще есть некоторые ограничения, и чтобы добиться того, чего вы хотите, вам нужно их понять. Прямо сейчас «родительская» / «дочерняя» спецификация ссылок в элементе <joint> заканчивается прямым определением древовидных отношений между ссылками. Если вы сделаете свое тело маятника «родителем», а квадротор - «ребенком», то MBP вместо этого назначит кватернион маятнику, что, я считаю, именно то, что вам нужно. При этом вам также следует обратить внимание на <joint>/<pose>, пожалуйста, обратитесь к этому учебному пособию для получения подробной информации, которая включает в себя хорошую схему совместных рамок и соглашений.

0 голосов
/ 06 июня 2019

Я не уверен, что понимаю, что вы имеете в виду под словом "где эта плавающая основа на основе кватернионов".Если вы спрашиваете, как установить позу тела, которое, как вы знаете, из вашего sdf / urdf является плавающим, тогда ответ заключается в том, что вы можете сделать это с помощью MultibodyPlant::SetFreeBodyPose().Надеюсь, это поможет.

...