Importing to IsaacGym Breaks Collision Mesh

Hi! I had a question regarding importing YCB assets to IsaacGym.

Collision mesh in Blender Collision Mesh in IsaacGym

Importing to IsaacGym seems to break the collision mesh, I would guess that this is caused by the convacity of banana mesh? However, the same seems to happen for a processed (CoACD) collision mesh coming from ManiSkill2:

Thanks!

1 Like

Bumping for visibility, thanks!

I have an update from ManiSkill authors, they are using CoACD and exporting the meshes with trimesh, which doesn’t include convex_x label in the generted obj. Sadly I couldn’t find any information on how IsaacGym handles imports, could the problme be related to this?

@gstate I’d be very happy to get your input on this.
Thanks!

Did you use vhacd_params? And use_mesh_materials? Because it doesn’t seems to be the case, that you used the mesh of the object for convex decomposition. You can also tune the decomposition to get a finer collision shape.

Hi @nico-b thanks for the response,

I am aware that VHACD can obtain a convex mesh from the concave base mesh (1st image), however the colision meshes coming from ManiSkill (3rd image) are already convex (CoACD is a VHACD alternative), the weird behavior is that these convex meshes are not recognized by IsaacGym and result in the hull (2nd image) just like base concave meshes (1st image)?

No, i mean you can add asset options in isaac gym to use the mesh materials as collision (i.e. asset.use_mesh_material = True) and you can use vhacd_params to specify the decomposition in isaac gym (i.e. asset.vhacd_params = …). This should all be done in your task where you load the asset. For further infos i would refer to the documentation (look for vhacd or collision).

@nico-b use_mesh_material = True uses materials loaded from the obj file instead of the ones declared in URDF, it doesn’t have anything to do with collision it is just how the asset looks inside gym (I am already using mesh materials).

As I already mentioned, the assets I am using are already convex so they should work without convex decomposing again (indeed do in other environments), but they don’t. This is the bug (?) I am trying to resolve.

Hi there,

The URDF importer in Isaac Gym uses Assimp to import meshes. The mesh information is then sent to PhysX to generate a triangular convex mesh. Are you able to share the URDF and mesh files that you are having issues with? We also provide an example script at python/examples/convex_decomposition.py that shows an example of loading the banana asset from YCB.

Hello, @kellyg my 011_banana.urdf looks like this:

<?xml version="1.0"?>
<robot name="011_banana">
  <link name="011_banana">
    <visual>
      <origin xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="ycb/models/011_banana/textured.obj" scale="0.5 0.5 0.5"/>
      </geometry>
    </visual>
    <collision>
      <origin xyz="0.0 0.0 0.0"/>
      <geometry>
        <mesh filename="ycb/models/011_banana/collision.obj" scale="0.5 0.5 0.5"/>
      </geometry>
    </collision>
    <inertial>
      <mass value="0.068"/> 
    </inertial>
  </link>
</robot>

textured.obj and collision.obj available here.

The base collision mesh for the ycb banana is concave, thus the convex decompositon in python/examples/convex_decomposition.py makes sense, however the collision mesh that I am trying to use has aready been preprocessed to be convex (CoACD, bottom picture in the original issue), however the problem seems to be that gym still thinks it is concave and results in a hull. Thank you!

@kellyg also, it’d be very helpful to learn the source of demo ycb models that come with IsaacGym. Thanks!

Thanks for sharing the files. It seems like IsaacGym will default to creating a convex hull if convex decomposition is not selected. There isn’t any mechanism to check whether a mesh is already convex or not.

@kellyg Understood, thank you!