Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robot Operating System 2.0
  3. urdfdom

urdfdom

NOASSERTIONC++3.0.0

A C++ library for parsing URDF (Unified Robot Description Format) files, providing core data structures and XML parsing.

Visit WebsiteGitHubGitHub
132 stars151 forks0 contributors

What is urdfdom?

urdfdom is a core C++ library for parsing URDF (Unified Robot Description Format) files, which are XML-based descriptions of robot models. It provides essential data structures and a simple XML parser to populate these structures from URDF files, serving as a foundational component for robotics simulation and control systems.

Target Audience

Robotics software developers and researchers who need to programmatically load and interpret robot models defined in the standard URDF format, particularly those working with ROS (Robot Operating System) or other robotics frameworks.

Value Proposition

Developers choose urdfdom because it is a reliable, standards-compliant parser that handles URDF version evolution (supporting versions 1.0, 1.1, and 1.2) while maintaining backward compatibility, ensuring robotics applications can depend on consistent model interpretation.

Overview

URDF parser

Use Cases

Best For

  • Parsing URDF robot model files to populate in-memory data structures for simulation or control.
  • Handling URDF version compatibility, including newer features like quaternion orientations (version 1.1) and extended joint limits (version 1.2).
  • Integrating URDF parsing into robotics applications that require a lightweight, dedicated library separate from a full robotics framework.
  • Validating URDF files against version specifications to ensure correct interpretation and forward/backward compatibility.
  • Developing tools or plugins that need to read or manipulate standard URDF robot descriptions programmatically.
  • Working with capsule geometry primitives in URDF, as introduced in version 1.1.

Not Ideal For

  • Projects requiring full robot simulation, 3D visualization, or physics engines, as urdfdom only parses models into data structures.
  • Environments that avoid C++ or prefer higher-level languages like Python for rapid prototyping, due to its C++-only nature and limited bindings.
  • Teams using non-URDF robot description formats like SDF (Gazebo) or MJCF (MuJoCo), where format-specific parsers are more appropriate.
  • Applications needing real-time model manipulation or editing beyond parsing, as it lacks built-in tools for modification or serialization back to URDF.

Pros & Cons

Pros

Standards-Compliant Version Support

Supports URDF versions 1.0, 1.1, and 1.2 with backward compatibility and strict validation, ensuring reliable parsing based on version attributes, as detailed in the compatibility table.

Core URDF Data Structures

Provides essential in-memory classes for URDF elements like links, joints, and geometries, making it easy to integrate parsed models into robotics applications without reinventing the wheel.

Handles Version Evolution

Manages new features like quaternion orientation (version 1.1) and extended joint limits (version 1.2), allowing format updates while maintaining compatibility, as shown in the version-specific examples.

ROS Integration Ready

Designed to work seamlessly with ROS, with installation notes and release processes, though it can be used standalone, as indicated by the ROS-specific setup instructions.

Cons

Complex Source Installation

The README describes a hacky installation process that can break ABI compatibility with ROS updates, indicating poor documentation and risk for non-debian builds.

Parsing-Only Scope

It only parses URDF files into data structures; for simulation, visualization, or control, additional libraries like Gazebo or ROS are required, increasing dependency overhead.

Version Strictness

Rejects URDF files with unsupported versions (e.g., future 2.0) immediately, causing compatibility issues until library updates, and lacks flexibility for experimental formats.

Limited Documentation

Beyond version details, the README is sparse, lacking API examples, tutorials, or guidance for non-ROS use, making adoption harder for new developers.

Frequently Asked Questions

Quick Stats

Stars132
Forks151
Contributors0
Open Issues33
Last commit1 month ago
CreatedSince 2013

Tags

#robotics#urdf-parser#simulation#robot-modeling#c-plus-plus#xml-parser#kinematics#ros

Built With

C
CMake
X
XML
C
C++

Links & Resources

Website

Included in

Robot Operating System 2.02.1k
Auto-fetched 5 hours ago

Related Projects

Unity Robotics HubUnity Robotics Hub

Central repository for tools, tutorials, resources, and documentation for robotics simulation in Unity.

Stars2,544
Forks466
Last commit1 year ago
ROS2 For UnityROS2 For Unity

High-performance ROS2 solution for Unity3D

Stars628
Forks82
Last commit8 months ago
rvizrviz

ROS 3D Robot Visualizer

Stars472
Forks300
Last commit14 hours ago
rosbag2rosbag2

Rosbag2 is the native recording and playback tool for ROS 2 systems, serving as the successor to the original ROS rosbag. It enables efficient capture and replay of timestamped communication data between ROS nodes, which is essential for debugging, analysis, and simulation in robotics development. ## Key Features - **Efficient Recording** — Designed to support complex robotic systems in real time with minimal overhead. - **Flexible Playback** — Replays recorded data with options for rate control, topic filtering, and service-based remote control. - **File Splitting** — Automatically splits bag files based on maximum size or duration thresholds during recording. - **Compression Support** — Offers optional compression (e.g., zstd) to reduce storage footprint. - **Snapshot Mode** — Maintains an in-memory circular buffer to capture and save data only on demand, useful for triggered events. - **QoS Overrides** — Allows custom Quality of Service profiles per topic via YAML configuration. - **Storage Plugins** — Supports multiple storage backends like MCAP and SQLite3 via a plugin architecture. - **Composable Nodes** — Recorder and player can be run as composable C++ nodes to enable intra-process communication for higher performance. ## Philosophy Rosbag2 prioritizes efficiency and flexibility, aiming to handle real-time data flows in complex robotic systems while providing a modular, plugin-based architecture for storage and serialization formats.

Stars428
Forks320
Last commit18 hours ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub