#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 (также независимая от переменных с плавающей ориентацией)?