Importing Pre-Computed Convex Decomp Collision Meshes from URDF

Hi!

I had a few questions regarding collision meshes in Isaac Sim. To provide brief context, we are trying to import many household objects into Isaac Sim, natively from their URDF format into omniverse’s native USD format.

Some observations:

  • The Convex Decomposition flag in the URDF importer seems to be broken. Toggling it seems to produce no difference in output behavior (I observed that the visualized collider mesh is the default “convexHull”.)

  • Manually setting the collider for an already-imported URDF to be “convexDecomposition” seems to significantly slow down runtime performance. This decomposition does not seem to be saved offline, as far as I can tell.

  • Manually setting the collider for an already-imported URDF to be “meshSimplification” appears to be unusable by the isaac dynamics module (I get a warning that says that it is “falling back to convexHull” since meshSimplification is not supported.)

  • ^This additionally produces strange behavior, such as mismatch between the collision mesh and visual mesh if I scale and move the object around a scene.

The “convexDecomposition” method would be the most ideal, but the significant runtime slowdown is inhibiting.

So, my main question:
How can I keep the already-convex-decomposed .obj collision mesh linked to the USD file generated from an imported URDF? These have already been decomposed into convex components, which I can even visualize by adding a reference to this file in the stage, but I don’t know the proper way to make sure isaac sim treats these individual mesh components as a collision mesh. (The APIs + docs don’t seem to provide much help, unfortunately).

Any help would be greatly appreciated! Thanks!

Once the file is saved to USD and simulation is run (press play and stop) it should cache the convex geometry in the USD (you will need to save the file)

I believe the issue might be that once we import the robot we add it as a reference to the current stage.
If you instead open the imported USD reference directly (you can see the path if you click on the robot in the stage) and then press play/stop and save the file, the parent USD that was referring to the imported robot usd file should run without any slowdown.

We are looking into a better way to handle this workflow, instead of adding the robot as a reference to the current stage automatically, let the user decide if they want to open it directly first to do and final setup.

Hi @Hammad_M ,

Thanks for the followup!

I believe the core problem (Omniverse ignoring our already-convex-decomposed collision mesh) is agnostic to whether we add a USD as a reference (add_reference_to_stage) vs. opening the file directly. As far as I can tell, the URDF-to-USD converted file seems to merge all sub-geoms (each of which are convex) within a single collision .obj file into a single mesh. I’ve attached an example of this below (both URDF and imported USD file):

example_chair.zip (13.5 MB)

Thanks!