OpenAI gym 中 Mujoco 环境中的自定义网格抖动

Custom mesh jittering in Mujoco environment in OpenAI gym

我试过修改 FetchPickAndPlace-v1 OpenAI 环境,用一把剪刀代替立方体。除了我的自定义网格似乎每隔几个时间步进出 table 几毫米,一切都完美无缺。我在下面包含了一张中间抖动的图片:

如您所见,剪刀在 table 表面的中间夹住。我怎样才能防止这种情况发生?我所做的就是用与剪刀网格相关的资产切换 pick_and_place.xml 中立方体的代码。这是感兴趣的代码:

<body name="object0" pos="0.0 0.0 0.0">
            <joint name="object0:joint" type="free" damping="0.01"></joint>
            <geom size="0.025 0.025 0.025" mesh="tool0:scissors" condim="3" name="object0" material="tool_mat" class="tool0:matte" mass="2"></geom>
            <site name="object0" pos="0 0 0" size="0.02 0.02 0.02" rgba="1 0 0 1" type="sphere"></site>
</body>

我试过调整位置和几何坐标,但无济于事。有小费吗?将 mesh="tool0:scissors" 替换为 type="box" 可完全解决问题,但我回到原点。

根据Emo Todorov in the MuJoCo forums的建议:

  1. 用平面代替地盒和 使用 MuJoCo 2.0。最新版本的碰撞检测器 在网格和平面之间生成多个接触,这 导致更稳定的模拟。但这只适用于 平面网格,不适用于盒子网格。
  2. 更好的解决方案是将网格分解为多个网格,并将它们作为多个几何体包含在同一主体中。然后MuJoCo会构造每个子网格的凸包,从而产生多个接触点(即使没有上面提到的特殊平面机制),而且它会更好地逼近实际物体的几何形状。