Code Monkey home page Code Monkey logo

dora-autoware-localization-demo's Introduction

Dataflow Oriented Robotic Architecture โšก


dora goal is to be a low latency, composable, and distributed data flow.

This project is in early development, and many features have yet to be implemented with breaking changes. Please don't take for granted the current design.

dora primary support is with Linux ( Ubuntu 20.04 and Ubuntu 22.04 ) as it is the primary OS for both Cloud and small computers. If you wish to use dora with another OS, please compile from source.


๐Ÿ“– Documentation

The documentation can be found here: https://dora-rs.github.io/dora/


Getting started

  1. Install dora binaries from GitHub releases

For linux

wget https://github.com/dora-rs/dora/releases/download/<version>/dora-<version>-x86_64-Linux.zip
unzip dora-<version>-x86_64-Linux.zip
python3 -m pip install dora-rs==<version>
PATH=$PATH:$(pwd):$(pwd)/iceoryx
dora --help

This is x86_64 only for the moment.

  1. Create a new dataflow
dora new abc_project --lang python
cd abc_project

This creates the following abc_project directory

.
โ”œโ”€โ”€ dataflow.yml
โ”œโ”€โ”€ node_1
โ”‚   โ””โ”€โ”€ node_1.py
โ”œโ”€โ”€ op_1
โ”‚   โ””โ”€โ”€ op_1.py
โ””โ”€โ”€ op_2
    โ””โ”€โ”€ op_2.py
  1. Start dora-coordinator in a separate terminal window
# New terminal window
dora up 
  1. Start your dataflow
# Other window
dora start dataflow.yml
# Output: c95d118b-cded-4531-a0e4-cd85b7c3916c

The output is the unique ID of the dataflow instance, which can be used to control it through the dora CLI.

  1. You will see in your dora-coordinator window operators receiving ticks.
Received input tick, with data: b''
Received input tick, with data: b''
Received input tick, with data: b''
...
  1. Stop your dataflow
dora stop c95d118b-cded-4531-a0e4-cd85b7c3916c

(Pass the ID returned by dora start here.)

  1. You can then add or modify operators or nodes. For adding nodes easily, you can use the dora CLI again:
  • Run dora new --kind operator --lang Rust <name> to create a new Rust operator named <name>.
  • Run dora new --kind custom-node --lang Rust <name> to create a new custom node named <name>.

You need to add the created operators/nodes to your dataflow YAML file.

  1. You can also download already implemented operators by putting links in the dataflow. This example will launch a webcam plot stream.
communication:
  zenoh:
    prefix: /abc_project

nodes:
  - id: op_1
    operator:
      python: https://raw.githubusercontent.com/dora-rs/dora-drives/main/operators/webcam.py
      inputs:
        tick: dora/timer/millis/100
      outputs:
        - image
  - id: op_2
    operator:
      python: https://raw.githubusercontent.com/dora-rs/dora-drives/main/physicals/plot.py
      inputs:
        image: op_1/image 

Make sure to have a webcam and cv2 install via: pip install opencv-python


โœจ Features

Composability as:

  • YAML declarative programming
  • language-agnostic:
    • Rust
    • C
    • C++
    • Python
  • Isolated operators and custom nodes that can be reused.

Low latency as:

  • written in ...Cough...blazingly fast ...Cough... Rust.
  • PubSub communication with iceoryx

Distributed as:


๐Ÿ Further reading

  • Check out dora-drives for a template of an autonomous vehicle within a simulation.

โš–๏ธ LICENSE

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

dora-autoware-localization-demo's People

Contributors

haixuantao avatar heyong4725 avatar messense avatar phil-opp avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.