ISAAC SIM URDF importer without mesh approximation

Hi,

I am working with ROS2 and ISAAC side by side.
I keep updating my URDF so I am using the URDF importer whenever I launch ISAAC (from a ROS node).

The problem is that whenever I use the URDF importer, an approximation (Convex Hull or Convex Decomposition) is made on the collision mesh I specified in my URDF, although it is already simplified design.
Is there a way to skip the approximation made at the import?

Thank you for your answer.

Hi,

For better visibility, I am moving your topic to the Isaac Sim category.

Raffaello

Hi!

Unfortunately, the physx engine needs to convert the mesh in their convex approximations to be able to simulate the rigid body - Direct triangle mesh is not supported - with a caveat - you may use a SDF based off the original mesh, but it’s a heavy computation cost that only makes sense on specific scenarios.
see
https://docs.omniverse.nvidia.com/extensions/latest/ext_physics/rigid-bodies.html#collision-settings
and
https://docs.omniverse.nvidia.com/extensions/latest/ext_physics/rigid-bodies.html#sdfcollision

The silver lining here is that If the mesh is sufficiently simple - which it seems to be the case - the approximations should result in the original mesh.

Hi,

Thank you very much for your quick answer.
I understand why it is not possible to give a path to a mesh file and import it directly without another approximation.

In my case, I use the URDF importer from the API, but I don’t see any variable to force the approximation to SDF mesh. I only use the flag “convex_decomp” to switch between convex hull and convex decomposition. Is there a way to use SDF mesh in this case?

Also, here are the collision mesh for convex decomposition:

Convex hull doesn’t fit the purpose of the end effector as it approximates the void between the two fingers by a volume.
Convex decomposition is better but it seems that there is still a big margin taken away from the original mesh, even on the cubic sections.
Is there a way to minimize this margin, for the approximation to fit the original mesh?

Thank you.

Since it’s a simple shape I’d recommend you do a manual collider by placing two cubes in the appropriate places and shapes. The links in the previous post should explain how to do that.

Thank you for your answer.

I understand how to do a manual collider, but as I usually import shapes from URDF, I would need for the approximator to properly fit this simple shape (as for any other simple shape).
It works fine when I switch manually the approximation to “SDF mesh”, is there a way to use this approximation directly from the URDF importer? And is this approximation compatible with dynamics?

Also, an additional information that can be useful, I use .dae files as meshes. But I also tried with .stp and there are no differences.

yes it should be possible, but currently the URDF importer doesn’t provide that out of the box - you can make an add-on code that converts the colliders into SDF after an asset is imported instead of doing it manually.

you can also update the convex decomposition settings to make it more closely match the collision shape by selecting the “shrink wrap” option in the convex decomposition settings.

we will plan on updating the urdf importer to have these options out of the box.

Thank you very much.
How can I switch to “shrink wrap” option from the python API, what is the line of code for tuning the settings?