Repository navigation
Home
liburdf is a modern, cross‑platform C++17 library for reading and writing urdf model files. It is designed to be lightweight, dependency‑free, and available with multiple language bindings.
liburdf is the successor of the tinyurdf project, a lightweight C++17 library for reading and processing urdf model files. I started working on tinyurdf back in 2024 with the goal of providing a replacement for traditional urdf manipulation tools, which rely heavily on the ros runtime, and thus unix posix dependencies, or small unmaintained python libraries, during that time, I faced many issues with closed kinematics tree structures, which existing tools did not handle well. Visualization and graphical debugging of such models was very painful, and generating them from mesh or CAD files often required licensed software and can be very tricky, with many limitations that these tools have with handling advanced features of multibody chains, and frames.
The main goal of liburdf was to provide a free, cross‑platform, lightweight library with multiple language bindings to read, write, generate, and visualize kinematics trees in a hierarchical xml-based representation and convert them back to mesh files.
However, this required a huge amount of work. I re‑uploaded the tinyurdf code under the same license terms with a few enhancements and fixes, hoping it would be useful to some people. The 3D visualization features, which relied heavily on VTK, were removed. The focus shifted toward parsing and generation features.
The project was originally derived from urdf-api and still follows the listed specifications of the URDF file format. However, in upcoming releases, liburdf may introduce additional features, such as additional xml tags for material specifications, constraints, and others. These will be documented in detail. These features may not be fully compatible or supported by tools like RViz. liburdf < 1.x.x maintains support for a fallback compatibility with traditional urdf files used by ros. For example, a file generated or written for ros-based software can be parsed successfully with liburdf, and a file generated by liburdf can also be used in ros.