* 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 an `api.h` header file that defines the dora functions in a C-compatible way. To showcase that C-operators can interact with Rust operators and custom nodes, we create a simple C operator and add it to our `mini-dataflow`. The operator reads the periodic timestamps, increments a counter, and sends the counter value out. The counter is kept across calls by storing it behind the context pointer.
The function derives the communication layer type from the config and handles all the initialization. This commit also updates the format of the communication config to better differentiate the different layer types.
To make the communication code more general, we also abstract away the topic prefixing into the communication layer. The publish and subscribe functions will now add the prefix automatically.
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.