drake - Drake中如何将多体植物的广义坐标向量映射到刚体树的广义坐标向量?
问题描述
人形机器人可以用 URDF 文件中的运动学树来描述。我发现刚体树和多体植物的广义坐标向量中元素的顺序是不同的。网上有一段代码片段展示了实现映射的方法。
# q_rbt = X*q_mbp
# rigid_body_tree is an instance of RigidBodyTree()
# multi_body_plant is an instance of MultibodyPlant()
B_rbt = rigid_body_tree.B
B_mbp = multi_body_plant.MakeActuationMatrix()
X = np.dot(B_rbt[6:,:],B_mbp[6:,:].T)
但是,刚在新 Drake 中已弃用 RigidBodyTree。因此,我现在如何实现映射?另外,我很好奇为什么 Drake 不对广义坐标向量使用相同的顺序。
解决方案
您可能喜欢我在这个littledog 示例中使用的工作流程。我有一个 PR 可以直接在 Drake 中启用该工作流程。您可以在此问题上跟踪进度。
一般来说,即使我们没有在 Drake 中以特定方式实现它,我也会推荐这个建议,如果你有像人形机器人这样复杂的东西,不要尝试使用基于索引的向量。找到一种通过元素名称访问元素的方法,或者通过它们的联合访问器在 Drake 中访问元素。使用原始向量非常容易出错。
推荐阅读
- go - Seed 和 Rand.Seed 的区别
- vba - 在 Access VBA 中将秒转换为时分秒格式
- c - 如何使用函数从列表中删除字符串?
- c++ - 关于 C++ enable_if_t;为什么这段代码不起作用(gcc 8.1,Ubuntu)
- python - 使用 selenium python 打开 USA Clothing 网站会将我重定向到 Europe Clothing 网站的主屏幕
- ios - 这个 kMSDataBaseType 错误在 xamarin 中是什么意思
- java - Java 8 Lambda 链接 - 类型安全强制
- json - 选择带有特殊字符的 JSON 值
- python - 使用另一个过程的 Python 过程不返回
- regex - 从正则表达式字符类中获取字符谓词`Char => Boolean`?