Как изменить плавающий базовый тип модели, загружаемой из файла urdf, с помощью pydrake?

#drake

#drake

Вопрос:

Я пытаюсь загрузить модель из файла urdf.

Я могу добиться этого с помощью RigidBodyTree класса:

 rbtree = RigidBodyTree(file_name, floating_base_type)
  

К сожалению, как сказано на странице ссылок pydrake.attic, она скоро устареет.

Я попытался добавить модель, используя pydrake.multibody.parsing.Parser и pydrake.multibody.plant , но, похоже, модель прикреплена только с помощью плавающего соединения кватернионов.

Есть ли законный способ установить тип плавающей базы не с attic API?

Комментарии:

1. Я не уверен, что понимаю, чего вы пытаетесь достичь. Следует ли использовать плавающий шарнир крена-тангажа-рыскания, а не шарнир кватерниона?

2. Возможно ли использовать фиксированный шарнир или шарнир крена-тангажа-рыскания без attic API?

Ответ №1:

Для фиксированной базы метод, который вы ищете, MultibodyPlant.WeldFrames() . Если plant это MultibodyPlant объект, к которому вы добавили свою модель, и фрейм в вашей модели с именем «my_base_frame» должен быть привязан к миру, соответствующий вызов будет:

 plant.WeldFrames(plant.world_frame(), plant.GetFrameByName("my_base_frame"))
  

Обратите внимание, что этот вызов должен быть выполнен до вызова plant.Finalize() .

Я считаю, что MultibodyPlant в настоящее время плавающие базы по крену, тангажу и рысканию не поддерживаются.

Комментарии:

1. На самом деле меня интересует матрица пространственной инерции системы. Может быть, есть способ преобразовать модель на основе кватернионов в модель на основе крена-тангажа-рыскания?

2. Матрица массы системы n x n возвращается в пространстве скоростей v, а не в пространстве конфигурации q, поэтому она будет одинаковой для любого типа плавающего соединения (при условии, что оба будут использовать угловую скорость в качестве своих обобщенных скоростей). Это то, что вы ищете, или это мгновенная пространственная инерция системы 6 x 6 (также независимая от переменных с плавающей ориентацией)?