---
type: slide
slideOptions:
theme: white
center: false
---
<style>
.reveal {
font-size: 2.5rem;
}
</style>
<p align="center">
<img src="https://raw.githubusercontent.com/dora-rs/dora/main/docs/src/logo.svg" width="400">
</p>
Low latency, distributed, and composable data flow framework.
[github.com/dora-rs/dora](https://github.com/dora-rs/dora/)
<br><br>
Xavier Tao, tao.xavier@outlook.com
Nov 17, 2022
---
## Objectif du projet
> If we were to rewrite ROS today, what would it look like?
- Introduire un nouveau framework de robotique avec:
- Minimiser la latence de communication
- Maximiser la composabilité
- Améliorer l'ergonomie par rapport ROS/ROS2
---
## COMMUNICATION
- Utilisation de `shared memories` pour les communications inter-process.
> tcp: Average duration: 44.391 us
> shared memory: Average duration: 0.238 us
> Message size: 128 bytes
> See: https://stackoverflow.com/questions/2854004/ipc-speed-and-compare
- Utilisation de `zenoh` pour les communications en système distribué
- Minimisation du nombre de copies des données
---
## COMPOSABILITE
- Utilisable sur Python, Rust, C, C++
- Réutilisation d'operateur existant similaire à dockerhub.
---
> Exemple de demo Python: https://github.com/mikel-brostrom/Yolov5_StrongSORT_OSNet/blob/master/track.py
---
```yaml
communication:
iceoryx:
app_name_prefix: dora-iceoryx-example
nodes:
- id: webcam
custom:
run: ../../physicals/webcam.py
inputs:
timer: dora/timer/millis/100
outputs:
- image
- id: yolov5
operator:
outputs:
- bbox
inputs:
image: webcam/image
python: ../../operators/yolov5_op.py
- id: strong_sort
operator:
outputs:
- obstacles_id
inputs:
image: webcam/image
obstacles_bbox: yolov5/bbox
python: ../../operators/strong_sort_op.py
- id: plot
operator:
python: ../../physicals/plot.py
inputs:
image: webcam/image
obstacles_bbox: yolov5/bbox
traffic_sign_bbox: traffic_sign/bbox
lanes: yolop/lanes
drivable_area: yolop/drivable_area
obstacles_id: strong_sort/obstacles_id
```
---
## Extensibilité
### Opentelemetry Tracing
Protocol de tracing en système distribué dans plusieurs langages.

> Opentelemtry: https://opentelemetry.io/docs/concepts/signals/traces/
> Jaeger: https://www.jaegertracing.io/docs/1.21/opentelemetry/
---
### Opentelemetry Metrics

---
### DB supportant opentelemetry
- Datadog
- Prometheus
- InfluxDB
- ...
> Future Cloud Native integration: AWS S3, IAM, HashiCorp Vault, Keycloack, Docker, Kubernetes, ...
---
## Ergonomy
Simple installation
```bash
wget https://github.com/.../dora-<version>-x86_64-Linux.zip
unzip dora-<version>-x86_64-Linux.zip
PATH=$PATH:$(pwd):$(pwd)/iceoryx
dora --help
```
Readable description
```yaml
communication:
zenoh:
prefix: /abc_project
nodes:
- id: webcam
operator:
python: https://raw.githubusercontent.com/dora-rs/dora-drives/main/operators/webcam.py
inputs:
tick: dora/timer/millis/100
outputs:
- image
- id: plot_window
operator:
python: https://raw.githubusercontent.com/dora-rs/dora-drives/main/physicals/plot.py
inputs:
image: op_1/image
```
Command line program
```bash
dora up
dora start dataflow.yml
```
---
### Questions?
---
### Comment pouvons nous avancer ensemble?
- Vous aider à accomplir des projets ambitieux.
- Développer le Campus de CentraleSupelec, l'infrastructure existente
- Créer des partenariats internationaux avec CentraleSupelec. Huawei, c'est 22 Milliard $ de Budget R&D. En comparaison Safran, c'est 1,2 Milliard $ de budget R&D.
---
### Projet d'une voiture autonome

---
### Essai IRL
https://www.instagram.com/p/CkquyYJJb4y/