The imported URDF model is incorrect

When I imported my robot URDF to Isaac Gym, something went wrong.

The visual part of URDF is correct in both RVIZ and Isaac Gym:


But the collision part of URDF is wrong in Isaac Gym and correct in RVIZ.


You can clearly distinguish the latter where the collision model for the gripper part is incorrect.

The difference between the URDF of RVIZ and Isaac Gym is just the represation of relative path:

<mesh filename="../meshes/armor.dae" scale="1.0 1.0 1.0"/>  # Isaac Gym
<mesh filename="package://robomaster_description/meshes/armor.dae" scale="1.0 1.0 1.0"/>  # RVIZ

And the code of asset_options is:

asset_options = isaacgym.gymapi.AssetOptions()
asset_options.fix_base_link = True
asset_options.disable_gravity = False
asset_options.default_dof_drive_mode = isaacgym.gymapi.DOF_MODE_POS
asset_options.flip_visual_attachments = True
asset = gym.load_urdf(sim, asset_root, asset_file, asset_options)

Can anyone tell me what is wrong?

I think Isaac Gym only supports collision checking via convex hull decomposition or SDF. So, it will try to make a convex hull decomposition out of your collision mesh. If you want to use a non-convex mesh for collision checking, there are some examples using SDF-based checking instead (e.g. see franka_nut_bolt_ik_osc.py).