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.
Glossary
URDF (Unified Robot Description Format)

What is URDF (Unified Robot Description Format)?
The definitive XML format for describing a robot's physical structure and properties within the ROS ecosystem.
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.
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.
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.
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, orfloating. - 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
revoluteandprismaticjoints, sets bounds for position, velocity, and effort.
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.
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 attributesixx,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.
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.
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.xacrofile is processed into a single.urdffile before use by ROS nodes.
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.
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 / Attribute | URDF (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. |
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.
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
URDF is a core component of the ROS ecosystem for describing robot geometry. These related formats and tools extend its capabilities for simulation, control, and advanced modeling.
Xacro (XML Macros)
Xacro (XML Macros) is an XML macro language used to create more manageable and reusable URDF files. It allows developers to avoid repetitive XML code by using constructs familiar to programmers.
Key features include:
- Properties and Variables: Define constants (e.g.,
$(wheel_radius 0.1)) to be reused throughout the file. - Mathematical Expressions: Perform calculations directly within property definitions.
- Macros and Code Reuse: Define parameterized blocks of XML (macros) that can be invoked multiple times with different arguments, ideal for defining identical components like multiple wheels.
- Conditional Blocks and Loops: Use
ifstatements andforloops to generate XML conditionally.
A .xacro file is processed by the xacro tool into a plain .urdf XML file before it is used by ROS nodes or simulators, making it the de facto standard for authoring complex robot descriptions.
URDF Visual & Collision Geometry
Within a URDF <link> element, the <visual> and <collision> tags define distinct geometric representations used for rendering and physics, respectively. This separation is a critical concept for simulation fidelity and performance.
<visual>Geometry: Defines the robot's appearance for rendering in tools like RViz. It can use high-detail meshes (e.g.,.dae,.stl) with colors and textures. This geometry is used only for visualization.<collision>Geometry: Defines the simplified shape used for physics engine collision detection. It typically uses primitive shapes (boxes, cylinders, spheres) or very low-polygon meshes. Using simplified collision geometry drastically reduces computational cost.
Best Practice: The collision geometry should be a conservative approximation of the visual geometry, ensuring the simulated robot interacts with the world in a physically plausible way without unnecessary computational overhead. A mismatch can lead to objects visually intersecting without colliding.
URDF Joint Types and Dynamics
The URDF <joint> element defines the kinematic relationship between two links. Its type attribute specifies the degrees of freedom, while the optional <dynamics> child tag models physical properties.
Joint Types:
fixed: No motion (0 DOF). The child link is rigidly attached to the parent.revolute: Rotational motion about a single axis (1 DOF), with optional position limits.continuous: A revolute joint without position limits (e.g., a wheel).prismatic: Linear sliding motion along a single axis (1 DOF).planar: Motion in a plane (2 DOF: translation in x, y).floating: Full 6-DOF motion (translation and rotation).
Joint Dynamics (<dynamics>): This tag adds physical properties for simulation:
damping: Viscous friction coefficient (resistance proportional to velocity).friction: Static friction coefficient (Coulomb friction).
These parameters are used by simulators like Gazebo to produce realistic motion and are essential for accurate controller tuning.

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us