如何指定附加浮动底座的位置?

How to specify where to attach floating base?

假设我有一个简单的钟摆连接到 sdf 文件中定义的四旋翼飞行器。

当我将此 sdf 文件加载到 MultibodyTree 时,默认连续状态向量的大小为 4(四元数)+ 3(x,y,z)+ 1(连接四旋翼与摆的关节)= 8 如 .

所示

By default, the urdf/sdf parser adds the system with a quaternion-based floating base.

我的问题是,我怎么知道这个 4(四元数)+ 3(x, y, z)框架附加在哪里?

我如何控制它的附加位置?假设我的运动方程是 w.r.t。到摆的尖端,我想把这个 4 + 3 四元数浮动底座连接到我的摆的尖端,我该如何定义它?

我不确定我是否理解 "where this quaternion-based floating base is attached to" 的意思。如果您要问的是如何设置您从 sdf/urdf 知道的 body 的姿势是浮动的,那么答案是您可以使用 MultibodyPlant::SetFreeBodyPose() 来做到这一点。 希望对您有所帮助。

我想我现在明白了。我们的 SDF 解析器仍然有一些限制,为了实现您想要的,您需要了解它们。现在,<joint> 元素中链接的 "parent"/"child" 规范最终直接定义了链接之间的树关系。如果你让你的摆体成为 "parent" 而四旋翼成为 "child",那么 MBP 会将四元数分配给摆,我相信这就是你想要的。 执行此操作时,您还必须注意 <joint>/<pose>,请参阅 this tutorial 了解详细信息,其中包括关于关节框架和约定的漂亮示意图。