The coordinator modifies the communication config by adding an randomly generated prefix to all topics on startup. This prefix is unique to the instance and not written back to the dataflow file. Since the runtime nodes need to use that exact same prefix, they need to be started using the modified communication config, instead of reading the original config from the dataflow file again.
This commit changes the argument passing to environment variables, which makes it possible to use the modified communication config. It also makes the runtime nodes more similar to custom nodes, which also get their arguments through env variables.
The library must provide a `dora_on_input` function, which the runtime invokes when it receives input for the operator. In addition to the input id and value, we pass a callback function for sending output.
By operating on single `(id, value)` pairs instead of sets of them, the operators stay flexible. They can define their own logic for input rules and send outputs as soon as they become available. The callback function design also limits allocations since output values can be be stack-allocated this way.
* Refactoring for multithreading
* Refactoring code in order to use MemoryView
* Resolving multi output by casting Python output type
* Adding Python example runner
* Adding Rayon ThreadPool for CPU bound multithreading
* Adding benches
* Small Refactoring of Python Binding
* Adding documentation to Pylot Demo
* Removing cloning states data using RwLock
* Refactoring Servers to pass messages through tokio channels
* Removing unwrap when possible
* Splitting Zenoh function into separate module
* Refactoring Zenoh into a struct
* Adding several Python fix
* Fix eyre issue
* Adding docker for ease of build
* Fixing docker problem
* Reduce the frequency of source
* Adding better Python Operator
* Improving carla visualisation capabilities
* Enabling better visualisation
* adding object trajectory
* Improving planning
* Refactoring Python
* Adding control operator
* Improving planning operator
* Better Control Operator
* Fixing Planning Errors linked to applying Speed Factor
* Fixing Docker Image Build issues
* Adding a timestamp to messages
* Fixing PID mutlithread errors
* Drop Push Send after Pull period
* Limiting the latency
* Adding InfluxDB
* Fixing Influxdb Naming and quota
* Adding positional data
* Making launching container command faster
* Removing Dora-Pylot
* Refactor Error Handling
* Refactoring Error dubgging function
Co-authored-by: haixuanTao <hai-xuan.tao@student.ecp.fr>
Make all operators send a message on special stop topic when dropped. Each operator listens on the stop topics of the operators it depends on. As soon as all operators are finished, return None from the `input` stream.
Creates a basic prototype for parsing dataflows delared in YAML files using `serde`/`serde_yaml`. The dataflow file format is just an example, we can adjust this however we like.
To visualize the parsed dataflow, the main executable outputs a flowchart in mermaid syntax. GitHub supports this format natively in markdown files, alternatively it can be converted to an image on <https://mermaid.live>.