A C++ library for parsing URDF (Unified Robot Description Format) files, providing core data structures and XML parsing.
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.
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.
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.
URDF parser
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.
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.
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.
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.
The README describes a hacky installation process that can break ABI compatibility with ROS updates, indicating poor documentation and risk for non-debian builds.
It only parses URDF files into data structures; for simulation, visualization, or control, additional libraries like Gazebo or ROS are required, increasing dependency overhead.
Rejects URDF files with unsupported versions (e.g., future 2.0) immediately, causing compatibility issues until library updates, and lacks flexibility for experimental formats.
Beyond version details, the README is sparse, lacking API examples, tutorials, or guidance for non-ROS use, making adoption harder for new developers.
Central repository for tools, tutorials, resources, and documentation for robotics simulation in Unity.
High-performance ROS2 solution for Unity3D
ROS 3D Robot Visualizer
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.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.