Skip to content

Commit

Permalink
Refactpr README
Browse files Browse the repository at this point in the history
  • Loading branch information
haixuanTao committed Apr 8, 2024
1 parent 9508fbb commit 7f16222
Showing 1 changed file with 109 additions and 20 deletions.
129 changes: 109 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,53 +33,98 @@

## Why dora-rs?

In 2023, AI is booming! Robotic framework however hasn't changed much in years... This is why we create dora-rs! dora-rs is a new robotic framework that brings modernity into robotic application.
In 2024, AI is booming! Robotic framework however hasn't changed much in years... This is why we create dora-rs! dora-rs main objectives is:

dora-rs can already show impressive performance, up to 17x speedup compared to ROS2 in Python! This is the result of using our own shared memory server and Apache Arrow to achieve zero copy!
- Make creation of robotic applications fast and simple
- Dead easy integration with latest technologies (e.g. DL models, Cloud, DBs ...)

Those performance improvements make a world of difference for beginners, AI practitioners, and weekend hobbyists who have been limited by the lack of support for Python in this field!
dora-rs is still experimental and you might experience bugs, but we're working very hard to make it stable as possible.

But, dora-rs is still experimental and we're still working on many features such as:
## Arrow Message Passing

- [dora-ros2-bridge](https://github.com/dora-rs/dora-ros2-bridge) to bridge dora and ros 2!
- dora-rs for Deep Learning applications, to make it easy to integrate state of the art DL model and hopefully train them within the framework.
<img align="center" src="https://github.com/dora-rs/dora-rs.github.io/blob/main/static/img/arrow.png?raw=true" width="600">

Feel free to reach out if you have any questions!
dora uses arrow message format as input and output so that you can easily pass your data to your favorite library.

<p align="center">
<img src="./docs/src/latency.png" width="600">

</p>
## Performance

dora-rs can already show impressive performance, up to 17x speedup compared to ROS2 in Python! This is the result of using our own shared memory server and Apache Arrow to achieve zero copy data passing.

<img src="./docs/src/latency.png" align="center" width="600">

## Opentelemetry

Observe all your data, logs, metrics, and traces using opentelemetry that is backend-agnostic, language-agnostic, and can link all those data under a same abstraction.

<img src="https://github.com/dora-rs/dora-rs.github.io/blob/main/static/img/opentelemetry.png?raw=true" align="center" width="600">

## Hot-Reloading

Hot-Reloading is a makes it possible to change code at runtime in Python while keeping state.

Combined with a Retrieval Augmented Generation (RAG), you can modify the robot source code using natural language at runtime:

<center>
<a href="http://www.youtube.com/watch?v=NvvTEP8Jak8">
<img alt="demo" src=http://img.youtube.com/vi/NvvTEP8Jak8/0.jpg>
</a>
</center>

## ROS2 Bridge

- Compilation Free Message passing to ROS 2
- Automatic conversion ROS 2 Message <-> Arrow Array

```python
import random
import pyarrow as pa

# Configuration Boilerplate...
turtle_twist_writer = ...

## Arrow Based ROS2 Twist Message
## which does not requires ROS2 import
message = pa.array([{
"linear": {
"x": 1,
},
"angular": {
"z": 1
},
}])

turtle_twist_writer.publish(message)
```

## Installation

Quickest way:

```bash
cargo install dora-cli # In case of issues, you can try to add `--locked`
cargo install dora-cli --locked
pip install dora-rs # For Python API

dora --help
```

For more installation guideline, check out our installation guide here: https://dora.carsmos.ai/docs/guides/Installation/installing
For more info on installation, check out [our guide](https://dora.carsmos.ai/docs/guides/Installation/installing).

## Getting Started

1. Install the example python dependencies:

```bash
pip install -r https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/requirements.txt
pip install -r raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/requirements.txt
```

2. Get some example operators:

```bash
wget https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/webcam.py
wget https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/plot.py
wget https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/utils.py
wget https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/object_detection.py
wget https://raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/dataflow.yml
wget raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/webcam.py
wget raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/plot.py
wget raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/utils.py
wget raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/object_detection.py
wget raw.githubusercontent.com/dora-rs/dora/v0.3.2/examples/python-operator-dataflow/dataflow.yml
```

3. Start the dataflow
Expand All @@ -95,9 +140,37 @@ To stop your dataflow, you can use <kbd>ctrl</kbd>+<kbd>c</kbd>

To go further, you can add a yolov8 operator, check out our getting started here: https://dora.carsmos.ai/docs/guides/getting-started/yolov8/

## Hardwares

This is a list of hardware if you want to get started with dora 🙋 We are not sponsored by hardware manufacturer:

- [DJI Robomaster (~500$)](https://www.dji.com/robomaster-s1)
- Our current project: [dora-robomaster](https://huggingface.co/datasets/dora-rs/dora-robomaster) about LLM on rover
- **Pros**:
- Good value
- Good Python SDK
- **Cons**: - Closed hardware - Can have weird bugs and requires break the sandbox that can be a bit technical

Current work in Progress:

- Drones (Planned): **DJI Tello**, **BitCraze Crazyflies**
- Robotic arms (Planned): [AlexanderKoch-Koch/low_cost_robot](https://github.com/AlexanderKoch-Koch/low_cost_robot), **DJI robomaster EP Core**
- Humanoids (Hoped for)
- Quadruplet (Hoped for)

## Simulators

- [Carla](https://carla.org/)
- Our current project: [dora-drives](https://github.com/dora-rs/dora-drives)
- Pros:
- Open source
- Featurefull
- Cons:
- autonomous driving has been hard due to the number of edge cases.

## Documentation

The full documentation is available on our website: https://dora.carsmos.ai
The full documentation is available on [our website](https://dora.carsmos.ai)

## Discussions

Expand All @@ -110,6 +183,22 @@ Feel free to reach out on any topic, issues or ideas.

We also have [a contributing guide](CONTRIBUTING.md).

## Support Matrix

| | dora-rs | Hoped for |
| --------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Tier 1 Support** | Python, Rust | C, C++, ROS 2 |
| **Tier 2 Support** | C, C++, ROS2 |
| **Hot-reloading** | Python | Rust (https://github.com/orgs/dora-rs/discussions/360) |
| **Message Format** | Arrow | Native |
| **Local Communication** | Shared Memory | Custom middleware, [zero-copy GPU IPC](https://arrow.apache.org/docs/python/api/cuda.html), intra-process channel communication |
| **Remote Communication** | TCP (See: https://github.com/dora-rs/dora/issues/459) | [Zenoh](https://zenoh.io/) |
| **Metrics, Tracing, and Logging** | Opentelemetry | Native logging libraries into opentelemetry |
| **Data archives** | Parquet ([dora-record](libraries/extensions/dora-record)) |
| **Supported Platforms (x86)** | Windows, macOS, Linux |
| **Supported Platforms (ARM)** | macOS, Linux |
| **Configuration** | YAML |

## License

This project is licensed under Apache-2.0. Check out [NOTICE.md](NOTICE.md) for more information.

0 comments on commit 7f16222

Please sign in to comment.