本文翻译自 onshape-to-robot 文档:Handling kinematic loops


引言

某些机器人具有运动学闭环(kinematic loop),即运动链不是树(tree)而是图(graph)。

下文展示了一个带有运动学闭环的二维平面机器人,假设前两个关节是驱动的(actuated),其余关节为被动的(passive)。

机器人描述通常是树结构。处理闭环的方法是将闭环拆解为树,在树上附加坐标系(frame),然后在运行时施加约束。

opened_chain

指定闭合约束

除了手动添加坐标系之外,onshape-to-robot 还提供了配合连接器(mate connector)作为处理运动学闭环的便捷方式。方法如下:添加一个名为 closing_something 的配合(mate)。

loop

另请参阅:自定义坐标系文档

MuJoCo 中的 <equality> 约束支持

导出为 MuJoCo 格式时,onshape-to-robot 会自动添加 <equality> 约束来强制执行运动学闭环。

另请参阅:MuJoCo 导出器文档

示例 config.json

{
    // 文档 URL,输出为 MuJoCo 格式
    "url": "https://cad.onshape.com/documents/04b05c47de7576f35c0e99b3/w/68041f3f5c827a258b40039c/e/db543f501b01adf8144064e3",
    "output_format": "mujoco",

    // 禁用自由关节以固定机器人
    "freejoint": false,

    // 不为被动关节创建执行器
    "joint_properties": {
        "passive1": {"actuated": false},
        "passive2": {"actuated": false}
    }
}

参考资料

以下是在其他软件工具中处理运动学闭环的外部参考资源:

  1. Onshape 装配体 — 上述示例所使用的机器人。
  2. MuJoCo equality 约束
  3. pyBullet — 使用 createConstraint 方法添加相应约束。
  4. PlaCo 求解器 — 创建 RelativePositionTask,其中包含关于闭环闭合的专门章节,以及展示使用 onshape-to-robot 创建的机器人示例画廊。