Inferensys

Glossary

Unified Robot Description Format (URDF)

URDF is an XML-based file format used in the Robot Operating System (ROS) to define a robot's physical geometry, kinematic structure, visual appearance, and inertial properties.
Knowledge engineer constructing knowledge base on laptop, document hierarchy visible, casual office setup.
ROBOTIC SYSTEM INTEGRATION AND TESTING

What is Unified Robot Description Format (URDF)?

The Unified Robot Description Format (URDF) is the fundamental XML schema used to define a robot's physical and kinematic properties within the Robot Operating System (ROS) ecosystem.

Unified Robot Description Format (URDF) is an XML-based file format used to model a robot's physical structure for simulation, visualization, and control. It defines a robot as a tree of links (rigid bodies) connected by joints (revolute, prismatic, fixed), specifying their geometry, inertial properties, visual appearance, and collision models. This declarative model is parsed by tools like RViz for 3D visualization and Gazebo for physics simulation, serving as the single source of truth for a robot's mechanical configuration.

While essential for basic robot modeling, URDF has limitations: it is static, describing only a single robot in a specific configuration, and cannot represent closed kinematic chains or parallel mechanisms. For more complex, dynamic systems, the Simulation Description Format (SDF) is often used in its place within Gazebo. In modern ROS 2 workflows, URDF files are typically processed into a robot state publisher node, which broadcasts the robot's kinematic transform (tf) tree, enabling all other software components to reason about the robot's pose in a unified coordinate frame.

XML SCHEMA

Core Components of a URDF Model

A URDF file is an XML tree that defines a robot's physical and kinematic properties. Each component describes a distinct aspect of the robot's structure and behavior.

01

Link Element

A link element represents a rigid body segment of the robot with physical properties. It is the fundamental building block of a URDF model.

  • Attributes: Each link has a unique name attribute.
  • Sub-elements: Contains child elements that define its characteristics:
    • <visual>: Defines the shape, color, and texture for simulation and visualization (e.g., a <mesh> file or primitive <box>).
    • <collision>: Defines a (often simplified) geometry used by the physics engine for contact and collision detection.
    • <inertial>: Contains the link's mass, center of mass (<origin>), and inertia tensor (<inertia>), which are critical for dynamic simulation.
02

Joint Element

A joint element defines the kinematic relationship and constraints between two links. It specifies how one link (the child) moves relative to another (the parent).

  • Types: The type attribute specifies the joint's degrees of freedom:
    • revolute: Rotational movement about a single axis (e.g., an elbow joint).
    • prismatic: Linear movement along a single axis (e.g., a sliding piston).
    • fixed: No movement; rigidly connects two links.
    • continuous: Unlimited rotation about an axis (e.g., a wheel).
  • Key Properties:
    • <origin>: The pose of the child link frame relative to the parent link frame.
    • <axis>: The unit vector defining the axis of rotation or translation.
    • <limit>: For revolute and prismatic joints, specifies operational bounds (lower, upper) and effort/velocity limits.
03

Robot Element

The robot element is the root XML tag of a URDF file. It encapsulates the entire robot description.

  • Attributes: Typically includes a name attribute for the overall model.
  • Structure: It acts as a container for all <link> and <joint> elements that constitute the robot. The kinematic tree is formed by linking child links to parent links via joints. A properly formed URDF must have one more link than joint, resulting in a connected tree structure without kinematic loops (which require SDF format).
04

Visual, Collision, and Inertial

These three properties are defined within a <link> and serve distinct, critical purposes in simulation and control.

  • <visual>: Purely for rendering. Can be high-detail meshes for realism. Does not affect physics.
  • <collision>: Used by the physics engine (e.g., Gazebo, Bullet). Geometry is often simplified (convex hulls of meshes) for faster collision checking.
  • <inertial>: Defines dynamic properties. This is non-optional for any link involved in dynamic simulation. An object with zero mass will not respond to forces or gravity correctly.

Best Practice: The <origin> tags within these elements allow you to offset each geometry from the link's origin, enabling alignment of visual, collision, and inertial frames.

05

Transmission Element

A transmission element maps an actuator (defined outside the URDF, in robot control software) to a joint. It defines the mechanical relationship between the actuator's output and the joint's movement.

  • Purpose: Bridges the gap between the kinematic/dynamic model (URDF) and the actuation model. It tells the controller how to apply torque or position commands.
  • Common Type: <type>transmission_interface/SimpleTransmission</type>.
  • Key Sub-elements:
    • <actuator name="motor1">: Declares the actuator with its mechanicalReduction and hardware limits.
    • <joint name="joint1">: Specifies which joint the actuator drives.
  • Usage: Essential for using ROS Control, as the ros_control framework uses transmission definitions to instantiate hardware interfaces.
ROBOTIC SYSTEM INTEGRATION AND TESTING

How URDF Works in the Robotics Stack

The Unified Robot Description Format (URDF) is the foundational data model for describing a robot's physical properties within the Robot Operating System (ROS) ecosystem.

The Unified Robot Description Format (URDF) is an XML-based specification used to define a robot's kinematic tree, visual geometry, collision models, and inertial properties. It serves as the single source of truth for a robot's physical configuration, enabling downstream software components—like the ROS navigation stack, MoveIt for manipulation, and Gazebo for simulation—to perform accurate kinematics calculations, collision checking, and physics-based rendering. This standardized description is essential for hardware abstraction, allowing high-level algorithms to be developed independently of the specific robot hardware.

Within the robotics software stack, a URDF file is parsed by tools like robot_state_publisher to broadcast the robot's transform (TF) tree, which defines the spatial relationships between all its links and joints. This TF data is critical for sensor fusion, motion planning, and control. While URDF excels at describing rigid, tree-like structures, its limitations for complex mechanisms led to the development of successor formats like SDF (Simulation Description Format) for richer physics and MJCF (MuJoCo XML Format) for advanced articulated systems, though URDF remains the de facto standard within ROS 1 and 2.

ROBOT DESCRIPTION FORMATS

URDF vs. SDF: A Format Comparison

A technical comparison of the Unified Robot Description Format (URDF) and the Simulation Description Format (SDF), the two primary file formats for defining robot models in robotics simulation and control.

FeatureUnified Robot Description Format (URDF)Simulation Description Format (SDF)

Primary Purpose

Describe a single robot's kinematic tree and properties for control within ROS.

Describe entire simulation worlds, including multiple robots, static objects, lighting, and physics.

File Structure

Single, monolithic XML file describing one robot.

Modular, nested model structure; supports inclusion of other model files.

Kinematic Representation

Strictly a tree structure. No support for closed kinematic chains.

Supports both tree structures and closed kinematic loops via joint definitions.

Multi-Robot Support

None. One robot per file.

Native. Multiple robots can be defined within a single world file.

Model Reuse & Composition

Limited. Typically requires copying XML or using Xacro macros.

Strong. Models are defined as reusable, nestable entities with explicit inclusion.

Versioning

Static. The format is largely fixed to its ROS 1 heritage.

Explicit version attribute (e.g., <sdf version="1.9">). Backward compatibility is a design goal.

Physics & Sensor Modeling

Very basic. Primarily defines inertial properties. Sensor models are external.

Comprehensive. Native support for detailed physics engines, sensor noise models, and plugin interfaces.

Forward & Inverse Dynamics

Provides kinematic and basic inertial data. Dynamics calculations are external (e.g., KDL).

Can specify full dynamic properties (damping, friction) for use by physics engines like Gazebo.

Default Simulator

Primarily used with RViz (visualization) and MoveIt! (planning).

The native format for the Gazebo and Ignition (now Gazebo) simulators.

Ecosystem & Tooling

Tightly integrated with ROS 1 toolchain (check_urdf, Xacro).

Broader simulation focus. Tools like gz sdf -p for description and validation.

URDF

Frequently Asked Questions

The Unified Robot Description Format (URDF) is the foundational XML schema for describing a robot's physical structure within the Robot Operating System (ROS). These questions address its core purpose, structure, and practical use in robotic system integration.

The Unified Robot Description Format (URDF) is an XML-based file format used within the Robot Operating System (ROS) to define a robot's physical geometry, kinematic structure, visual appearance, and inertial properties. Its primary purpose is to provide a standardized, machine-readable description that allows simulation tools (like Gazebo), visualization tools (like RViz), and control algorithms to understand and interact with a model of the robot without requiring direct access to the physical hardware. This enables development, testing, and visualization in a purely software environment, which is a critical step in the robotic system integration pipeline.

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.