From 7f1622225c33b73770dc75117d799e04bcf98333 Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Mon, 8 Apr 2024 21:31:04 +0200 Subject: [PATCH] Refactpr `README` --- README.md | 129 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 109 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 300fa1b78..46d697075 100644 --- a/README.md +++ b/README.md @@ -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. + -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. -

- - -

+## 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. + + + +## 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. + + + +## 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: + +
+ +demo + +
+ +## 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 @@ -95,9 +140,37 @@ To stop your dataflow, you can use ctrl+c 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 @@ -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.