What is URDF and Why Every Roboticist Should Care

What is URDF and Why Every Roboticist Should Care

By Dataset System

If you work with ROS, you've encountered URDF. If you're new to robotics, you're about to. The Unified Robot Description Format is the backbone of how robots are represented in simulation, visualization, and motion planning—and understanding it will save you weeks of debugging.

URDF in 30 Seconds

URDF is an XML format that describes a robot as a tree of links (rigid bodies) connected by joints (degrees of freedom). Each link has visual geometry (what it looks like), collision geometry (what the physics engine uses), and inertial properties (mass, center of mass, inertia tensor). Each joint specifies its type (revolute, prismatic, fixed, continuous), axis of rotation, and limits.

<robot name="simple_arm">
  <link name="base_link">
    <visual>...</visual>
    <collision>...</collision>
    <inertial>...</inertial>
  </link>
  <joint name="shoulder" type="revolute">
    <parent link="base_link"/>
    <child link="upper_arm"/>
    <axis xyz="0 0 1"/>
    <limit lower="-1.57" upper="1.57" effort="100" velocity="1.0"/>
  </joint>
  <link name="upper_arm">...</link>
</robot>

Why URDF Matters

URDF is the lingua franca of the ROS ecosystem. It's consumed by:

  • RViz — for 3D visualization of robot state
  • Gazebo — for physics simulation (via SDF conversion)
  • MoveIt — for motion planning and collision avoidance
  • ros2_control — for hardware abstraction and controller management
  • tf2 — for coordinate frame transforms across the robot

Get the URDF wrong and everything downstream breaks: simulation diverges, motion plans fail, controllers oscillate, and TF trees produce garbage transforms.

Common URDF Pitfalls

  • Zero or near-zero inertias — causes physics engines to explode. Every link needs realistic inertial properties.
  • Missing collision geometry — the robot looks fine in RViz but falls through the ground in Gazebo.
  • Reversed joint limitslower must be less than upper. Happens constantly in auto-generated files.
  • Wrong joint origins — getting the xyz or rpy wrong cascades through the entire kinematic chain.
  • Mesh scale mismatches — STL files in millimeters loaded with a URDF that assumes meters.

URDF vs. SDF vs. MJCF

URDF isn't the only robot description format. SDF is Gazebo's native format and supports closed kinematic chains, sensor plugins, and world descriptions. MJCF (MuJoCo's format) is increasingly popular in RL for its fast simulation.

In practice, most teams author in URDF and convert to SDF or MJCF as needed. Tools like Kindly IDE can export to all three from a single source of truth.

Skip the XML Editing

Kindly IDE generates valid, physics-checked URDF from a natural language description. Free and open source.

© 2026 Kindly Robotics