TinyURDF 1.0.0
Loading...
Searching...
No Matches
Contribution Guide

Due to time constraints, I am unable to maintain this project constantly. However, the work is in progress, and any contributions are greatly appreciated.
Please refer to the following guidelines for areas where help is needed:

General Guidelines

  • Use the minimal header includes as possible.
  • Follow file naming conventions .h for headers and .cc for implementations
  • The common/ folder should contain only interfaces or shared code.
  • Try to be highly modular with a focus on polymorphism.
  • Avoid using Boost libraries wherever possible.

Notes

  • The current version parses and renders model joints, links, and visual elements. Other elements like transmissions and sensors will be supported in future releases.
  • Physical consistency verification (e.g., inertia values) is not activated by default.
  • A scaling issue may occur during rendering due to element marker sizes.
  • The COLLADA file format for links' visual or collision meshes is not yet supported. Only STL files, STEP will be handled, other CAD file format, will be added progressivlly
  • Multi-model handling, model interactions, and world parsing are not yet supported.
  • File paths should be absolute. Relative paths are not currently supported.

Style

We generally follow the Google Style Guide. Currently, there is no automated checking pipeline for this, but I will personally review the code. Contributions to add such a pipeline would be highly appreciated.


Current Tasks

Here are some key tasks where contributions are needed:

  • [ ] Complete the implementation of the urdf-graphiz interface.
  • [ ] Complete the development of core modules:
  • [ ] Add support for transmission parsing.
  • [ ] Enhance the model to support graph construction for complex robots.
    We can rely on:
    • std::map or std::unordered_map for a simple implementation.
    • Complete the implementation of internal_graph module
    • An external graph library like CXXGraph for advanced graph representation is allowed to use.
  • [ ] Add Collada file support using the collada-dom library.
  • [ ] Ensure each implementation is tested in the test folder.
  • [ ] Add graph computation functions (e.g., computing model roots, leaves, etc.).
  • [ ] Implement utility functions for inertial, volume, and collision computations, such as:
    • Total mass
    • Center of inertia
    • Total volume of the model
    • Density, and more
    • Precomputed Forward Kinematics
    • Bounding Volume Hierarchy (BVH) for fast collision detection

Additional Features

These additional features would improve the library:

  • [ ] Add a custom project logo.
  • [ ] Create a pipeline to deploy the library upon each release to vcpkg package manager.
  • [ ] Check/test the docker pipeline build status and create a custom workflow.

If you have any questions or need clarification, feel free to email me.

Thank you for contributing!