add typed Arrow payloads and a dora-image-view dataflow
dora-image-view takes std/media/v1/Image, and dora's compatibility graph has no edge from std/core/v1/UInt8 to it, so wiring the two failed `dora validate` whatever the node actually sent. Its flat-buffer fallback would not have decoded these frames either: it reads width/height metadata, and this node only published shape. image and depth now go out as the Image struct, camera_info and point_cloud as Float32 arrays and camera_state as a string, all built against the Arrow C data interface in src/arrow so the node still links no Arrow C++. Shape, dtype and encoding metadata are dropped where the payload describes itself; intrinsics, frame_id and both timestamps are unchanged. tests/run.sh covers the packing without a camera or the SDK, round-tripping each array through pyarrow and rebuilding it under the sanitizers. Breaking: image_bgr is renamed to image and every payload changes shape. dataflow_plot.yml is replaced by dataflow_view.yml, which wires the viewer from a tag and repeats its contract in input_types so validate checks both sides of the wiring.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
# The camera into dora-image-view, and the worked example of wiring this node to
|
||||
# a consumer.
|
||||
#
|
||||
# dora has no cross-dataflow wiring, so the camera node is declared here too
|
||||
# rather than referenced — run this file or dataflow.yml, not both.
|
||||
#
|
||||
# Run it with `--uv`, which gives the viewer its own managed environment:
|
||||
#
|
||||
# dora run dataflow_view.yml --uv
|
||||
#
|
||||
# Fetching the viewer needs anonymous read access to its repository. dora-cli
|
||||
# 1.0.1 fetches through libgit2 with no credential callback, so ssh:// cannot
|
||||
# authenticate at all; on Gitea, marking the repository public is not enough
|
||||
# either, since a repository inside a private organization answers an anonymous
|
||||
# clone with 401.
|
||||
strict_types: true
|
||||
|
||||
nodes:
|
||||
- id: zed-camera
|
||||
path: bin/dora_zed
|
||||
build: scripts/build.sh
|
||||
inputs:
|
||||
tick: dora/timer/millis/100
|
||||
outputs:
|
||||
- image
|
||||
- depth
|
||||
- point_cloud
|
||||
- camera_info
|
||||
- camera_state
|
||||
|
||||
- id: view
|
||||
git: https://gitea.liria.cl/liria/dora-image-view.git
|
||||
tag: v0.1.0
|
||||
build: uv pip install .
|
||||
path: dora-image-view
|
||||
inputs:
|
||||
image: zed-camera/image
|
||||
depth: zed-camera/depth
|
||||
camera_info: zed-camera/camera_info
|
||||
# The viewer's own manifest says this, but a `git:` node's manifest is not
|
||||
# read at validate time — only at build. Repeating it here is what makes the
|
||||
# two contracts checked against each other now rather than at runtime.
|
||||
input_types:
|
||||
image: std/media/v1/Image
|
||||
depth: std/media/v1/Image
|
||||
camera_info: std/core/v1/Float32
|
||||
Reference in New Issue
Block a user