Inferensys

Glossary

URDF (Unified Robot Description Format)

URDF is an XML file format used in ROS to define a robot's physical structure, including links, joints, and geometry for simulation and control.
Stylish WeWork-like workspace with hot desks and document wall, professional searching through enterprise knowledge base on a mounted ultrawide display, warm industrial pendants overhead.
ROBOT OPERATING SYSTEM (ROS)

What is URDF (Unified Robot Description Format)?

The definitive XML format for describing a robot's physical structure and properties within the ROS ecosystem.

The Unified Robot Description Format (URDF) is an XML specification used within the Robot Operating System (ROS) to define a robot's physical composition, including its kinematic tree, visual appearance, and collision properties. A URDF file models a robot as a collection of links (rigid bodies) connected by joints (movable constraints like revolute or prismatic joints), forming a complete description of its geometry, inertia, and coordinate frames for use by simulation, visualization, and control software.

URDF is a static description format, meaning it defines a robot's structure but not its dynamic behaviors or controllers. It is the foundational data model for tools like RViz (for 3D visualization), Gazebo (for physics simulation), and the MoveIt motion planning framework. While core to ROS 1 and 2, its limitations for complex mechanisms led to extensions like Xacro (XML Macros) for programmatic generation and the development of the more expressive SDFormat (SDF) for simulation-centric descriptions.

XML STRUCTURE

Core Components of a URDF File

A URDF file is an XML document that defines a robot's physical structure and properties. Its core components describe the robot's rigid parts, their connections, and their visual and physical characteristics.

01

Link Element

A link element defines a rigid body segment of the robot, representing a single physical component like a chassis, arm link, or wheel. It contains the component's inertial, visual, and collision properties.

  • Inertial: Defines mass and 3D inertia tensor for dynamics simulation.
  • Visual: Describes the geometry (box, cylinder, mesh) and material (color, texture) for visualization in tools like RViz.
  • Collision: Specifies a simplified geometry, often a convex hull, used for physics engine collision checking. This geometry is typically less detailed than the visual mesh for computational efficiency.
02

Joint Element

A joint element defines the kinematic connection between two links, specifying how they move relative to each other. It is the primary element that creates a robot's kinematic tree.

  • Type: Specifies the joint's degrees of freedom: fixed, revolute, continuous, prismatic, planar, or floating.
  • Parent/Child Links: Establishes the hierarchical relationship (e.g., parent="base_link" child="shoulder_link").
  • Axis: Defines the vector (x, y, z) around which rotation or along which translation occurs.
  • Limits: For revolute and prismatic joints, sets bounds for position, velocity, and effort.
03

Visual & Collision Geometry

These sub-elements within a link define its shape for rendering and physics.

  • Visual Geometry: Used for display. Can be a simple primitive (<box>, <cylinder>, <sphere>) or a complex <mesh> file (e.g., STL, COLLADA).
  • Collision Geometry: Used for contact simulation. Often a simpler, convex approximation of the visual mesh to drastically speed up collision detection in physics engines like Gazebo or Bullet. Using a highly detailed visual mesh for collision can make simulation prohibitively slow.
04

Inertial Properties

The inertial sub-element within a link is critical for accurate dynamic simulation. It defines the link's mass distribution.

  • Mass: The scalar mass value in kilograms.
  • Inertia: A 3x3 rotational inertia matrix (often diagonal) defined by the <inertia> tag with attributes ixx, ixy, ixz, iyy, iyz, izz. This matrix describes how the mass is distributed relative to the link's origin.
  • Origin: The pose of the inertial frame relative to the link's frame. The center of mass should be at the origin of this frame. Incorrect inertia values can cause unrealistic wobbling or tipping in simulation.
05

Transmission & Actuator

While not part of the core URDF spec, the <transmission> element is a common extension (defined in a separate Xacro macro or URDF extension) that maps a joint to an actuator and defines the mechanical reduction between them.

  • Type: Often "SimpleTransmission".
  • Actuator: References a <hardwareInterface> like "EffortJointInterface" (for torque control) or "VelocityJointInterface".
  • Mechanical Reduction: The gear ratio (e.g., "50" for a 50:1 gearbox). This is essential for the ROS control stack (ros2_control) to correctly command hardware.
06

Xacro (Macro Extension)

Xacro (XML Macros) is not a URDF component but a critical preprocessing language used to create modular, maintainable, and parameterized URDF files. It is the de facto standard for complex robot descriptions.

  • Properties & Math: Enables the use of variables (<xacro:property>) and arithmetic operations within the XML.
  • Macros: Allows definition of reusable code blocks (<xacro:macro>) to instantiate common components (e.g., a wheel assembly) multiple times with different parameters.
  • File Inclusion: Enables modularization by breaking a robot description into multiple files using <xacro:include>. A .xacro file is processed into a single .urdf file before use by ROS nodes.
ROBOT DESCRIPTION

How URDF Works in a Robotics Stack

The Unified Robot Description Format (URDF) is the foundational XML file that defines a robot's physical structure for the Robot Operating System (ROS).

A URDF file is an XML document that describes a robot's kinematic tree, composed of rigid links connected by movable joints. It defines each link's visual and collision geometry, inertial properties, and joint types (e.g., revolute, prismatic). This model is parsed by the ROS robot_state_publisher node, which uses joint state data to compute and broadcast the transform (TF) for every link, creating a real-time spatial understanding of the robot for all other system components.

Within the ROS 2 Control framework, URDF is extended via <ros2_control> tags to define hardware interfaces and transmission elements that map joint commands to actuators. This allows high-level controllers to command the physical model. The URDF is the central source of truth for simulation in Gazebo or Ignition, motion planning in MoveIt 2, and perception, enabling consistent behavior across the entire robotics software stack from planning to actuation.

FORMAT COMPARISON

URDF vs. Related Robot Description Formats

A technical comparison of URDF with other prominent formats used to describe robot kinematics, dynamics, and semantics for simulation and control.

Feature / AttributeURDF (Unified Robot Description Format)SDF (Simulation Description Format)MJCF (MuJoCo XML Format)

Primary Purpose & Origin

Standard robot description for ROS 1/2; kinematic/dynamic modeling.

High-fidelity physics simulation in Gazebo/Ignition; multi-robot worlds.

Modeling and simulation for the MuJoCo physics engine.

File Format & Structure

Single, monolithic XML file per robot.

Nested, modular XML with world and model scope.

Concise, attribute-rich XML optimized for MuJoCo.

Multi-Robot Support

Closed Kinematic Chains

Dynamic Model Fidelity

Basic mass/inertia; limited friction/damping.

High-fidelity: detailed contact, friction, actuator models.

Extremely high-fidelity: tendons, actuators, advanced contacts.

Sensor Modeling

Basic declaration (type, pose). Limited intrinsic parameters.

Extensive: noise, update rates, intrinsic/extrinsic parameters.

Comprehensive: advanced sensor types with precise noise models.

Visual & Collision Geometry

Separate <visual> and <collision> tags. Primitive shapes & meshes.

Separate <visual> and <collision> tags. Primitive shapes & meshes.

Single <geom> tag with type attribute. Primitive shapes & meshes.

Plugin/Extension Mechanism

Limited (ROS-specific via <gazebo> tag or transmission tags).

Core feature: <plugin> tag for custom C++ logic.

Native via MuJoCo's compiler and API; external via actuators/tendons.

Standardization & Ecosystem

De facto standard in ROS ecosystem. Widely supported by tools.

Standard for Gazebo/Ignition. Broad simulator support.

Native to MuJoCo. Gaining adoption via Mujoco and Isaac Sim.

Common Use Case

ROS navigation, manipulation, TF tree generation.

High-fidelity multi-robot simulation, sensor evaluation.

Reinforcement learning research, biomechanics, control optimization.

URDF (UNIFIED ROBOT DESCRIPTION FORMAT)

Frequently Asked Questions

The Unified Robot Description Format (URDF) is the standard XML specification in ROS for defining a robot's physical and kinematic structure. These FAQs address its core concepts, practical usage, and relationship to other ROS components.

The Unified Robot Description Format (URDF) is an XML file format used in the Robot Operating System (ROS) to define the physical and kinematic properties of a robot. It works by describing a robot as a tree of links (rigid bodies) connected by joints (movable connections), along with their visual, collision, and inertial properties. This model is parsed by ROS tools like robot_state_publisher to compute and broadcast the transform (TF) tree, which provides the spatial relationship between every part of the robot in real-time, enabling all other software components to reason about the robot's geometry and state.

A basic URDF structure includes:

  • <robot>: The root element.
  • <link>: Defines a rigid body with <visual> (for display), <collision> (for physics), and <inertial> (for dynamics) properties.
  • <joint>: Defines the connection between two links, specifying its type (e.g., revolute, fixed), axis of rotation, and limits.
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.