When importing a URDF into Isaac Sim 5.0 / Isaac Lab, the generated USD structure contains deeply nested Xform layers under each link.
Instead of a clean structure like:
link (Xform)
├─ visual (Mesh)
└─ collision (Mesh)
the import produces something like:
link (Xform)
├─ visuals (Xform)
│ └─ link (Xform)
│ └─ node_STL_BINARY (Xform)
│ └─ mesh (Mesh)
└─ collisions (Xform)
└─ link (Xform)
└─ node_STL_BINARY (Xform)
└─ mesh (Mesh)
Even though my URDF visual/collision definitions use the same origin and are simple:
Isaac Sim still creates several extra Xform layers.
Problems encountered
1. Visual and collision meshes do not move together
When I move/rotate the link via transform, only one of them moves.
The collision mesh stays at origin or behaves inconsistently.
This does not match the behavior of official robot USDs from Unitree or Franka.
2. I cannot manually clean the structure
Even when selecting the correct Xform (not the Mesh), I cannot reorganize the hierarchy.
Request
❶ Please clarify whether this nested Xform structure is expected in Isaac Sim 5.0.
❷ If so, provide guidance or an official script for flattening and cleaning the structure.
❸ If not expected, please confirm whether this is a bug in the URDF importer.
The video shows J1_L_Link and J2_L_Link not moving together. Could you please provide a video with collision mesh visualization enabled demonstrating the issue you described?
Thank you for your reply! It turns out that the mesh exported from SolidWorks includes all of its child meshes. For example, J1 contains the meshes of J2, J3, …, J7. That’s why, when I transform J1, one arm remains in its original position.
@sun_yubo2017 as someone who doesn’t use SW, could you elaborate the export setting(s) that you are using now to address the duplicated mesh issue? perhaps a screenshot could be beneficial for others that may run into the same problem in the future
I worked it out with Blender. A former colleague generated the URDF from SolidWorks, but he’s left the company and I don’t know SW myself, so I had to separate the meshes in Blender. If anyone knows the right SolidWorks workflow, please let me know!
Glad you tracked it down — the SolidWorks exporter including child link geometry in each parent’s mesh file is a known gotcha with certain SW-to-URDF workflows (usually the sw_urdf_exporter (GitHub - ros/solidworks_urdf_exporter: SolidWorks to URDF Exporter · GitHub)
plugin). The fix is to ensure each link’s STL contains only its own geometry, which you’ve already done via Blender.
To answer your original questions for the record:
The nested Xform structure (visuals > link > node_STL_BINARY > mesh) is expected — that’s how the URDF importer maps STL mesh references into the USD hierarchy. It doesn’t affect behavior.
The visual/collision separation issue was caused by the duplicate geometry in the source meshes, not by the importer.
Closing this out. If anyone knows the correct SolidWorks URDF export settings to avoid this, feel free to add a note here.