urdf-mjcf-to-usd-conversion

Convert URDF and MJCF robot descriptions to USD assets for Isaac Sim and Isaac Lab.

4.0k|530|Updated May 28, 2025
One-click install
npx skills add https://github.com/isaac-sim/IsaacSim --skill urdf-mjcf-to-usd-conversion
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: urdf-mjcf-to-usd-conversion
Source: https://github.com/isaac-sim/IsaacSim/tree/main/skills/urdf-mjcf-to-usd-conversion
Command: npx skills add https://github.com/isaac-sim/IsaacSim --skill urdf-mjcf-to-usd-conversion

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Bringing a robot described in URDF or MJCF into Isaac Sim or Isaac Lab requires correct importer configuration, physics conversion, drive setup, and robot schema application; misconfiguration causes wrong masses, broken joints, self-collision slowdowns, or VRAM exhaustion in RL training.

Core Features & Use Cases

  • URDF/MJCF import: Uses the modern isaacsim.asset.importer.urdf (URDFImporter + URDFImporterConfig) and isaacsim.asset.importer.mjcf APIs, with CLI entry points and the post-import isaacsim.asset.transformer pipeline.
  • Isaac Lab config.yaml workflow: Covers convert_urdf.py / convert_mjcf.py with drive presets for RL training versus position-controlled teleop, make_instanceable for parallel environments, and fix_base guidance per robot type.
  • XACRO handling and round-trip export: Imports from a running ROS 2 robot_description node via isaacsim.ros2.urdf or pre-expands with the xacro CLI, and exports USD back to URDF with isaacsim.asset.exporter.urdf.
  • Use Case: A robotics engineer imports a Franka-style manipulator URDF with merge_fixed_joints, convex decomposition colliders, and robot_type="Manipulator", then validates the applied IsaacRobotAPI schema before using the asset in Isaac Lab RL training.

Quick Start

Convert my robot.urdf file into a USD asset for Isaac Sim with fixed base, merged fixed joints, and manipulator robot type.

Frequently Asked Questions about urdf-mjcf-to-usd-conversion

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert a URDF file to USD for Isaac Sim?▼

Use URDFImporter with URDFImporterConfig from isaacsim.asset.importer.urdf, setting urdf_path, usd_path, and options like merge_fixed_joints and collision_type. Alternatively run the urdf_import.py CLI script with flags such as --urdf, --usd-path, and --robot-type.

How do I convert MJCF to USD in Isaac Sim?▼

Use MJCFImporter with MJCFImporterConfig from isaacsim.asset.importer.mjcf, specifying mjcf_path, usd_path, and actuator overrides like override_gain_type and override_bias_prm. The legacy MJCFCreateAsset command is deprecated in favor of this API.

Does the Isaac Sim URDF importer support XACRO files?▼

No, the URDFImporter core does not parse XACRO. Either import directly from a running ROS 2 node publishing robot_description via isaacsim.ros2.urdf, or pre-expand offline with the xacro CLI before importing.

Why does my Isaac Lab RL training run out of VRAM after URDF conversion?▼

The likely cause is make_instanceable set to false in the conversion config, so every parallel environment duplicates meshes in VRAM. Set make_instanceable: true in config.yaml so thousands of environments share one mesh.

Can I export a USD robot asset back to URDF?▼

Yes, isaacsim.asset.exporter.urdf provides UsdToUrdfConverter, which takes a USD stage, root prim path, and mesh output settings to produce a URDF package. A urdf_export.py CLI script is also available.

What drive settings should I use for RL versus teleoperation?▼

For RL training where the agent controls torques, use default_drive_type none with zero stiffness and damping. For position-controlled teleoperation, use position drive with stiffness around 800 and damping around 40.