Skip to content
wissem01chihaPublic

Latest commit

 

History

47 Commits

Folders and files

Repository files navigation

liburdf

CMake Bazel CodeFactor codecov pre-commit.ci status Codacy Badge GitHub License GitHub last commit

liburdf is a modern, opensource, 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, Unix dependencies, or small 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 with many limitations.

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.

Installing

If you're new, try our Getting-Started guide

You can install a prebuilt package or compile from source.

API Documentation Reference

Check our Wiki for detailed documentation and examples.

FAQ

Have a question? Want some tips? Feel free to join the discussions or open an issue on our issue tracker.

Changelog

See Changelog file for project API changes.

Support

I'm not planning to actively update the project on a regular basis, but if any critical fixes are contributed, I'll certainly try to review and integrate them.

For bugs, please report an issue, submit a pull request or catch me on email

Any contributions are greatly appreciated, see Contributing for some contribution guidelines.

Acknowledgments

Many thanks to everyone who has contributed to this project, whether by reporting issues, submitting pull requests, or providing other forms of support. In particular:

Security

For information on reporting security vulnerabilities in liburdf, see SECURITY.

License

Distributed under the MIT License, see LICENSE file for more information

Releases

Packages

Contributors

Languages