URDF Export Extension [isaacsim.asset.exporter.urdf]#

URDF Exporter API#

The URDF exporter provides a Python API for converting USD articulated robots to URDF format. Below is a sample demonstrating how to export a robot from an open USD stage.

 1import omni.usd
 2from isaacsim.asset.exporter.urdf import UsdToUrdfConverter
 3
 4# Get the current stage.
 5stage = omni.usd.get_context().get_stage()
 6
 7# Configure and export.
 8converter = UsdToUrdfConverter(
 9    stage=stage,
10    root_prim_path=None,       # Uses the default prim
11    mesh_dir_name="meshes",
12    mesh_path_prefix="./",
13)
14
15output_path = converter.convert("/tmp/my_robot.urdf")
16print(f"Exported URDF to: {output_path}")
class UsdToUrdfConverter(
stage: Usd.Stage | str,
root_prim_path: str | None = None,
mesh_dir_name: str = 'meshes',
mesh_path_prefix: str = './',
visualize_collision_meshes: bool = False,
variant_selections: dict[str, str] | None = None,
export_duplicate_ghost_links: bool = False,
)#

Convert a USD stage’s articulated robot to URDF.

Discovers robot structure from physics graph, reads link/joint/material data, exports meshes to OBJ, and writes URDF XML.

Parameters:
  • stage – An open Usd.Stage or a file-system path (str / os.PathLike) to a USD file (.usd, .usda, .usdc). When a path is given the stage is opened with Usd.Stage.Open.

  • root_prim_path – Prim path of the articulation root. None uses the stage default prim.

  • mesh_dir_name – Subdirectory name for exported mesh files.

  • mesh_path_prefix – Path prefix written into URDF mesh references.

  • visualize_collision_meshes – If True, duplicate collision meshes as visual geometry.

  • variant_selections – Optional mapping of variant-set names to variant selections to apply on the root prim before conversion. For example {"Physics": "PhysX", "LOD": "high"}. Selections are applied before robot discovery, so the chosen composition arcs determine which links, joints, and meshes are exported. Variant sets that already have a selection are overridden.

  • export_duplicate_ghost_links – If True, export site ghost links whose names collide with existing links by appending a numeric suffix to the generated link and joint names.

convert(
output_path: str | None = None,
*,
postprocess: Callable[[...], None] | None = None,
) → str#

Convert the USD stage to URDF and write to output_path.

When output_path is None the URDF is written next to the source USD file using the same base name (robot.usd -> robot.urdf). For stages loaded from omniverse:// URLs, omni.client is used to parse the source path; if the source is remote the current working directory is used as the output location.

Parameters:
  • output_path – URDF output file path.

  • postprocess – Function that modifies the completed <robot> XML element before it is written.

Returns:

Path to the written URDF file.

Raises:

ValueError – If output_path is None and no source path can be determined from the stage, or a movable joint lacks finite URDF effort, velocity, or required position limits. Author the missing source limits before exporting. Unactuated mimic followers with missing or unbounded effort export zero independent drive effort; missing follower velocity and required position bounds are derived from source limits and the mimic relationship.