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