A Python Package for create (valid) Robot descriptions
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.
robot-description-builder
can be installed from PyPi using the following command:
$ pip install robot-description-builder
- Support for the Full URDF spec, fully compatible starting at ROS Indigo. (
Transmission
s are different before ROS Indigo, other features should work)- Support for all base URDF geometry types:
Box
,Cylinder
,Sphere
andMesh
.
- Support for all base URDF geometry types:
- 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🚧
Spec | Support | State |
---|---|---|
URDF | ✔/🔩 WIP | Fully supported TRANSMISIONS ARE CURRENTLY INCORRECT |
URDF Gazebo | 🔩/❌ | Extension unsupported, Base URDF compatibility avaible |
SDF | ❌ | Planned |
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🚧
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🚧
- Add documentation pages.
- Add shorthand
Link
constructors. - Add (partial) support for SDFormat.
- Add support for the Gazebo URDF extension support.
- (Optional) Add (partial) support for the MIT Drake URDF extension
- Add
SmartJointBuilder
, similar to the Rust versionIt would need to be a dynamic class with function injection, (ASSUMPTION) which would not work with IntelliSense making.
🚧UNDER CONSTRUCTION: ADD LESSONS/DESIGN DECISIONS🚧
robot-description-builder
is licensed under the MIT license.
Footnotes
-
Famous last words. ↩