Unified Robot Description Format

URDF is how a robot describes itself

A URDF file is XML that lists a robot's rigid bodies, the joints connecting them, the mass and inertia of each part, and the meshes that give it shape. ROS, Gazebo, MuJoCo and Isaac all read it. Open one below and see what is inside.

Sample 6-axis arm

What you can do with a robot description here

What is inside a URDF file

Two elements carry the structure. A <link> is a rigid body: it holds mass, an inertia tensor, visual geometry for display and collision geometry for physics. A <joint> connects a parent link to a child link and states how they may move relative to each other.

Joints come in six kinds. Revolute rotates within limits, continuous rotates without them, prismatic slides, fixed does not move at all, while floating and planar exist in the specification but appear rarely. Every movable joint has an axis, and usually a limit describing its range, maximum effort and maximum velocity.

Because links reference mesh files rather than embedding them, a URDF is rarely a single file. It is a description plus a folder of STL, DAE or glTF geometry, and a model that loads on one machine may fail on another simply because those paths resolve differently.

URDF, MJCF, SDF and USD

URDF is the oldest and most widely supported, and it is a tree: every link has exactly one parent, so closed kinematic chains cannot be expressed directly. MJCF is MuJoCo's format and covers what URDF cannot — loops, tendons, contact parameters — which is why reinforcement learning work tends to live there. SDF is Gazebo's, and describes whole worlds rather than one robot. USD comes from graphics and is what NVIDIA's Isaac stack builds on.

Conversion between them is rarely lossless. A capsule in MJCF has no URDF equivalent and becomes a cylinder; contact parameters have nowhere to go at all. Anything that claims a clean round trip is hiding something, so this converter lists every loss.

Common questions

What does URDF stand for?

Unified Robot Description Format. It came out of ROS and is now read far beyond it.

How do I open a URDF file?

Drop it into the viewer. If the model references meshes, add the whole folder or a ZIP archive so those paths resolve. Nothing is installed and the file is parsed for display, not published.

What is the difference between URDF and Xacro?

Xacro is URDF with macros, properties and simple arithmetic, so repeated structure — four identical legs, six similar joints — is written once. It expands into plain URDF before anything else reads it.

Can MuJoCo load a URDF directly?

It can, but it ignores everything URDF has no place for, and its defaults for contact and damping rarely match what you want. Converting to MJCF first makes those choices explicit instead of implicit.

How do I get a URDF into Isaac Sim?

Convert it to USD. Isaac opens a stage, not a description, and the conversion writes the physics schemas it looks for — rigid bodies, collision APIs, joints with limits — along with the full inertia tensor rather than just its diagonal.