This PR makes it possible to use command line argument as custom node source.
This is very useful when the program is dependant on some environment variable
to be run. Exemples are: ROS/setup.bash and Python/Conda activate.
Custom node source can now be:
- a path: `./target/debut/abcd`
- a program in path: `rosrun`
- a url: `https://github.com/dora-rs/dora/releases/download/v0.0.0-test.4/rust-dataflow-example-node`
- or at the last resort a command line program: `source setup.bash && roslaunch velodyne_pointcloud VLP16_points.launch`
All those sources can have arguments `args` passed through the `args` field of the node. This args field
is recommanded when using a path as it will better manage the different OS.
* Remove automatic `capnp build` of messages ser/de
Removing Capnproto default build removes the risk of compilation errors due to missing capnproto dependencies and removes a step in the installation of dora.
Ultimately if someone wants to update the capnproto schema, he/she will build the script once.
* Changing capnp build output to src to be commited
* Add documentation of disabled build
* Enable passing Env variables to Runtime and single operators node
This changes add the capacity to pass env variables to runtime and single operators node
with the same logic as custom nodes.
i.e.:
```yaml
- id: plot
operator:
python: plot.py
inputs:
image: webcam/image
bbox: object_detection/bbox
env:
ENV_1: variable_1
ENV_2: variable_2
```
and:
```yaml
- id: plot
runtime:
operators:
python: plot.py
inputs:
image: webcam/image
bbox: object_detection/bbox
env:
ENV_1: variable_1
ENV_2: variable_2
```
* Unify `env` declarations in `Node` struct (#125)
Instead of duplicating them in the sub-structs. This change also allows us to keep the `serde(transparent)` attribute on `RuntimeNode`, which is required for parsing our existing YAML format.
Co-authored-by: Philipp Oppermann <dev@phil-opp.com>
Makes it possible to set an URL as operator source. The `dora-runtime` will then try to download the operator from the given URL when the dataflow is started.
Changes the message format from raw data bytes to a higher-level `Message` struct serialized with capnproto. In addition to the raw data, which is sent as a byte array as before, the `Message` struct features `metadata` field. This metadata field can be used to pass open telemetry contexts, deadlines, etc.