Skip to content

Latest commit

 

History

History
81 lines (67 loc) · 6.23 KB

File metadata and controls

81 lines (67 loc) · 6.23 KB

Robot-description-builder 🐍

A Python Package for create (valid) Robot descriptions

PyPI - Status PyPI PyPI - Implementation PyPI - Python Version PyPI - License Code style: black

robot-description-builder is a Python library for creating robot descriptions in multiple formats, like URDF, for use in various robotics and simulation applications such as ROS and Gazebo Simulator.

The Python version of robot-description-builder is written in Rust using PyO3 by wrapping the robot-description-builder Rust crate. This has been done for the following reasons:

  • Using Rust prevented memory leaks, which would occur in a full Python implementation. (I had not heard of the weakref module, yet.)
  • Using Rust also allows for interesting compile time validation, which is only available in the Rust Language. Resulting in the SmartJointBuilder (Only available in the Rust version).
  • Creating a Rust library and wrapping it in Python creates two libraries with little or no extra work1.

Installation

robot-description-builder can be installed from PyPi using the following command:

$ pip install robot-description-builder

Features

  • Support for the Full URDF spec, fully compatible starting at ROS Indigo. (Transmissions are different before ROS Indigo, other features should work)
    • Support for all base URDF geometry types: Box, Cylinder, Sphere and Mesh.
  • Mirroring of Kinematic chains.
  • Easy cloning/renaming Kinematic chains by changing the group_id.
  • ROS independent, can be run on any machine using Python 3.8 and above.
🚧UNDER CONSTRUCTION: EXPAND FEATURE LIST🚧

Compatibility chart

Spec Support State
URDF ✔/🔩 WIP Fully supported TRANSMISIONS ARE CURRENTLY INCORRECT
URDF Gazebo 🔩/❌ Extension unsupported, Base URDF compatibility avaible
SDF Planned

Using robot-description-builder

It is recommended to import only the classes needed from the package or import the module as rdb, since the package name (robot_description_builder) is quite long.

import robot_description_builder as rdb
# TODO: EXPAND
🚧UNDER CONSTRUCTION: EXPAND EXAMPLE🚧

Documentation

This Python Package has typing support and comes fully equiped with docstrings and stub files. Documentation pages comming soon(ish).

🚧UNDER CONSTRUCTION: CREATE DOCUMENTATION PAGES🚧

Roadmap

Interesting ideas with questionable feasibility

  • Add SmartJointBuilder, similar to the Rust version

    It would need to be a dynamic class with function injection, (ASSUMPTION) which would not work with IntelliSense making.

Lessons

🚧UNDER CONSTRUCTION: ADD LESSONS/DESIGN DECISIONS🚧

License

robot-description-builder is licensed under the MIT license.

Footnotes

  1. Famous last words.