* Multithreaded Python API and Pylot Example (#18)
* 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>
* adding capnp metadata into messages
* Allowing Context to propagate throughout node
* Adding better tracing
* Refactoring opentelemetry mod
* Adding a degree parameter in messages
* Adding depth for better tracing
* Put a feature flag on tracing
* Removing unnecessary copy of the messages
* Small refactoring of messages
* Refactoring of context logging
* Adding opentelemetry metrics of system
* Adding process telemetry
* Commenting the build script
* Rename feature tracing
* Add documentation to module
* Adding message documentation
* Remove build script
* skip capnp generated file
* Reformating
* Reformating loop
* Testing example
* Removing zenoh dependencies in Python
* Improving example python api
* removing rayon that is appearing twice due to merge
* Simplifying python binding
* Create a separate crate for messages
* Moving `metrics` and `tracing` into separate crate
* Moving `python` into a separate crate and removing `main` crate
* Refactoring newly created crate
* Remove `depth` from the message `metadata`
* Add `capnp` installation within the CI
* Add `capnp` installation into CI `clippy` step
Co-authored-by: haixuanTao <hai-xuan.tao@student.ecp.fr>
Adds a `dora_init_operator` function that can initalize some operator-specific state. This state pointer is then passed on every `dora_on_input` call. The operator can this way keep custom state across calls.
To deallocate the state once the operator is finished, the runtime calls a `dora_drop_operator` function provided by the operator.
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>.