<!-- .slide: data-background="https://hackmd.io/_uploads/HJaiXwgya.jpg" --> <style> .reveal a code { color: var(--r-link-color); } .reveal blockquote { font-size: 2rem; } .mermaid { text-align: center !important; } table { font-size: 2rem; } .reveal pre code { max-height: 800px; font-size: 2rem; } #left { left:-8.33%; text-align: left; float: left; width:50%; z-index:-10; } #right { top: 75px; float: right; z-index:-10; width:50%; } </style> #### dora-rs, fast and simple dataflows for robotic applications <div class="avatar margin-bottom--sm"><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/haixuantao" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Haixuan Xavier Tao</span></a></div><small class="avatar__subtitle" itemprop="description">Maintainer of dora-rs</small></div></div> --- <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> In 2023, AI is booming! Open source robotic framework however hasn't changed much in years... --- <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ## ROS2 > Honestly, I don't even get what ROS is about? **ros2 seems an "amalgamation" of tools and scripts to create a general API with some ideas of robotics application in mind.** > [name=HN First Comment ] > From my perspective as a generalist software engineer who isn't a low-level robotics expert – as an ecosystem, **[ros2] seems to have adopted every bad practice available and invented some more of its own**. [...]. **Many of the architectural design decisions are frankly baffling**, although I appreciate that this is in part down to age, legacy, and the open nature of the platform. > [name=HN Second Comment ] --- <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ## dora-rs - Radically simplify APIs, 5min to get started - 100% Ready for AI, training and inference - Backward-compatible from legacy software --- ## Is it fast? <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ![](https://hackmd.io/_uploads/By36lqxka.png =500x450) --- ## dora: Carla Simulator <div> <div id="left"> <img src=https://hackmd.io/_uploads/HJgQIzPJ6.jpg width=650/> </div> <div id="right"> - Simulating Lidar, Radar, Camera, Pedestrians, Cars, Towns... - Trying out AI Models, planning models, localisations - Carla Simulator </div> </div> <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> --- ## dora-rover <div> <div id="left"> <img src=https://hackmd.io/_uploads/rJk6Hzwyp.jpg width=350/> </div> <div id="right"> - Lidar - GNSS, IMU - Camera - NVIDIA Orin </div> </div> <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ## dora-car <div> <div id="left"> <img src=https://hackmd.io/_uploads/B1aS9zwJp.jpg width=550/> </div> <div id="right"> - Chinese Lidar - GNSS, IMU - 6 Cameras - Chinese ARM Computers </div> </div> --- --- # h1fe ```mermaid graph TD Rust(<img src='https://cdn.icon-icons.com/icons2/2699/PNG/512/rust_lang_logo_icon_170766.png' width='100' height='' />) Python(<img src='https://upload.wikimedia.org/wikipedia/commons/f/f8/Python_logo_and_wordmark.svg' width='100' height='' />) c++(<img src='https://upload.wikimedia.org/wikipedia/commons/1/18/ISO_C%2B%2B_Logo.svg' width='30' height='' />) c(<img src='https://upload.wikimedia.org/wikipedia/commons/1/18/C_Programming_Language.svg' width='30' height='' />) Python --> C c --> C c++ --> C Rust --> C[<img src='https://arrow.apache.org/docs/_static/arrow.png' width='80' height='' />] C --> D[<img src='https://upload.wikimedia.org/wikipedia/commons/3/31/NumPy_logo_2020.svg' width='80' height='' />] C --> E[<img src='https://raw.githubusercontent.com/pandas-dev/pandas/main/web/pandas/static/img/pandas.svg' width='80' height='' />] C --> F[<img src='https://pytorch.org/assets/images/logo-dark.svg' width='80' height='' />] C --> G[<img src='https://upload.wikimedia.org/wikipedia/commons/3/32/OpenCV_Logo_with_text_svg_version.svg' width='40' height='' />] ``` --- # r2 ```mermaid graph TD Traces(Traces) Logs(Logs) Metrics(Metrics) Logs --> C Traces --> C Metrics --> C[<img src='https://opentelemetry.io/img/logos/opentelemetry-horizontal-color.svg' width='100' height='50' />] C --> D[<img src='https://www.jaegertracing.io/img/jaeger-logo.png' width='100' height='30' />] C --> E[<img src='https://upload.wikimedia.org/wikipedia/commons/a/a1/Grafana_logo.svg' width='80' height='' />] C --> F[<img src='https://upload.wikimedia.org/wikipedia/en/7/7e/Datadog_logo.svg' width='80' height='' />] C --> G[<img src='https://upload.wikimedia.org/wikipedia/commons/f/f4/Elasticsearch_logo.svg' width='170' height='' />] Data --> H(<img src='https://arrow.apache.org/docs/_static/arrow.png' width='120' height='' />) --> Storage ``` --- ## Partner University <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ![](https://upload.wikimedia.org/wikipedia/fr/8/86/Logo_CentraleSup%C3%A9lec.svg =150x) ![](https://upload.wikimedia.org/wikipedia/commons/3/3d/Logo_Universit%C3%A9_Paris-Saclay.svg =200x) ![](https://irp-gmi.cnrs.fr/wp-content/uploads/2021/11/ntu.png =200x) ![](https://www.logo.wine/a/logo/University_of_Cambridge/University_of_Cambridge-Logo.wine.svg =300x) ![](https://upload.wikimedia.org/wikipedia/en/3/3c/Logo_of_University_of_Science_and_Technology_of_China.svg =150x) <!-- ![](https://upload.wikimedia.org/wikipedia/commons/e/ec/Tsinghua_University_Logo.svg =150x) --> --- ## Backward Compatibility <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> ```mermaid graph TD dora --> |Arrow| C[dora-ros2-bridge] C --> |ros2|D[ros2 node] --> Sensors D --> P[Project] C --> |ros2|F[Custom Message] C --> |ros2|E[Tooling: rosbag, rviz] ``` --- ## Fast Prototyping <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> - `dora-rs` can do real-time programming by using Python interpreter. - Removing the need to resetting and recompiling robots/autonomous vehicle at every change. e.g.: This can takes couple of minutes in ROS2 - Saving time for student and phd candidates --- ## Roadmap ```mermaid graph LR; A[<b>dora-rs 0.2</b><br/>Rust, Python, C/C++ API<br/>Arrow<br/>Opentelemetry<br/>ros2-bridge] C[<b>dora-rs 0.3</b><br/>Data Log & Replay<br/>Data Visualization<br/>Time Constraints<br/>Deadline<br/>Fault tolerance<br/>Cloud Native Integration] D[<b>dora-rs 0.4</b><br/>Fault tolerance<br/>Redundancy<br/>Elastic Resources<br/>Dynamic Dataflow] E[<b>dora-rs 0.5</b><br/>Fleet Management<br/>Fleet Support<br/>Mission Scheduling] A --> C --> D --> E ``` > Open for proposal of additional feature <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> --- Annex | Features | ROS2 | Dora - Arrow | |------------------------------|------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| | Shared Memory API | Complex API | same API | | Mesage type | Custom ROS messages requiring ser/deserialization | Apache Arrow format | | Computation | No optimization for compute | Optimized for CPU and GPU workload | | Compiler-free | Complex Build System | Native language build system | | Observability | MCAP | OpenTelemetry used by Prometheus, InfluxDB, Datadog... | | Prototyping | Need to recompile the whole project for each change | Live development with hot-reloading | <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> --- ## Best practices <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" --> - YAML Dataflow description similar to `Kubernetes`, `docker` - Native package manager `cargo`, `pip` --- ## Distributed <!-- .slide: data-background="https://hackmd.io/_uploads/BktKQDlyp.png" -->
{"description":"Rust-Python FFI & multilanguage system debugging!","title":"Dora elevator pitch","slideOptions":"{\"theme\":\"white\"}","contributors":"[{\"id\":\"dcd8580f-6041-4708-8c3f-3f0de43b5626\",\"add\":30920,\"del\":21776}]"}
    412 views