Loading in URDF colors/textures

Does the URDF importer support importing robot textures? I have a URDF file with textures specified in dae files. When I import it, the textures don’t seem to load, though the links are colored. Is there some additional step I have to do?

Textures are currently not supported directly by the URDF importer. The best way to do this currently would be to

  • import the urdf
  • use the asset importer extension with a supported file type and make sure the meshes look correct: Asset Importer — Omniverse Create documentation
  • drag in your new usd mesh files into the imported urdf usd as references to replace the existing visual meshes.

Can this be done entirely with the Python API?

Hmm theoretically yes, the asset importer has a python api
See this sample for usage:
https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/sample_python_basic.html#convert-assets-to-usd.

But because the importer outputs a usd file, there might need to be some synchronization to check if the import is fully complete before proceeding to do visual replacement.

Alright, thank you! I will try out these solutions soon.

1 Like

I’m currently having the problem that my URDF specifies a bunch of mesh (stl) and texture (dae) files, one of each per link. Would I have to convert each one to USD?

I also tried importing the daes to blender and exporting as obj, gltf, etc. When Isaac converted those to USD, even when “import material” was checked, the resulting USDs did not have textures.

The only way I got it to work was by exporting the dae in Blender to USD directly. However, it did display a bunch of log messages when imported this way. Plus, I only managed to import a single link, since, as I said, I currently have a bunch of mesh/texture files whose spatial relations are defined via the URDF.

Any other methods of doing this/any tips?

Could you provide a link to your urdf (or a public one) that represents something your usecase? I can look into scripting something so it works with the urdf importer. Or atleast try and support this usecase better in the next release :)

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.