# Robot-description-builder 🦀
> **A Rust Crate for create (valid) Robot descriptions**
[](https://github.com/emersion/stability-badges#unstable)
[](https://crates.io/crates/robot-description-builder)
[](https://crates.io/crates/robot-description-builder)
[](https://docs.rs/robot-description-builder)
[](https://github.com/SuperJappie08/robot-description-builder/blob/master/robot-description-builder/LICENSE)
<b title="Robot-description-builder for Rust 🦀">`robot-description-builder`</b> is a <b title="Rust 🦀">Rust crate</b> for creating **robot descriptions** in multiple formats, like **[URDF](http://wiki.ros.org/urdf)**, for use in various **robotics and simulation** applications such as ROS and Gazebo Simulator.
## Installation
<b title="Robot-description-builder for Rust 🦀">`robot-description-builder`</b> can be installed from [Crates.io](https://crates.io/crates/robot-description-builder) using the following command:
```shell
$ carge add robot-description-builder
```
## Features
- Support for the Full [URDF spec](http://wiki.ros.org/urdf/XML), 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` and `Mesh`.
- Mirroring of Kinematic chains.
- Easy cloning/renaming Kinematic chains by changing the `group_id`.
<pre align="center">🚧UNDER CONSTRUCTION: EXPAND FEATURE LIST🚧</pre>
### Compatibility chart
| [URDF](http://wiki.ros.org/urdf) | ✔/🔩 | Fully supported **TRANSMISIONS ARE CURRENTLY INCORRECT** |
| [URDF Gazebo](http://sdformat.org/tutorials?tut=sdformat_urdf_extensions&cat=specification&) | 🔩/❌ | Extension unsupported, Base URDF compatibility avaible |
| [SDF](http://sdformat.org/) | ❌ | Planned |
## Using <b title="robot-description-builder for Rust 🦀">`robot-description-builder`</b>
It is recommended to import only the items needed from the function or import the crate as `rdb`, since the crate name (<span title="robot-description-builder for Rust 🦀">`robot_description_builder`</span>) is quite long.
```rust
use robot_description_builder as rdb;
use rdb::prelude::*;
// TODO: EXPAND
```
<pre align="center">🚧UNDER CONSTRUCTION: EXAMPLE🚧</pre>
## Documentation
The documentation for this <span title="🦀📦">Rust Crate</span> can be found on [docs.rs](https://docs.rs/robot-description-builder/latest/robot_description_builder/index.html).
<pre align="center">🚧UNDER CONSTRUCTION: DOCUMENTATION IS UNFINISHED🚧</pre>
## Roadmap
- [ ] Improve documentation.
- [ ] Add shorthand [`Link`](https://docs.rs/robot-description-builder/latest/robot_description_builder/struct.Link.html) constructors.
- [ ] Add (partial) support for [SDFormat](http://sdformat.org/).
- [ ] Add support for the [Gazebo URDF extension](http://sdformat.org/tutorials?tut=sdformat_urdf_extensions&cat=specification&) support.
- [ ] \(Optional\) Add (partial) support for the [MIT Drake URDF extension](https://drake.mit.edu/doxygen_cxx/group__multibody__parsing.html#multibody_parsing_drake_extensions)
## Lessons
<pre align="center">🚧UNDER CONSTRUCTION: ADD LESSONS/DESIGN DECISIONS🚧</pre>
## License
<b title="Robot-description-builder for Rust 🦀">`robot-description-builder`</b> is licensed under the [MIT](https://github.com/SuperJappie08/robot-description-builder/blob/master/robot-description-builder/LICENSE) license.