No source package is shared between node repositories, so the manifest and its type URNs are the only contract a consumer has. Declaring them makes a wiring mistake fail at validate time with the producer and consumer URNs, instead of at runtime. Every payload this node sends is a raw buffer whose shape and dtype live in the metadata rather than an Arrow struct, so the URNs name the element type: UInt8 for image_bgr, Float32 for depth, camera_info and point_cloud, String for camera_state. tick is UInt64, matching how dora types timer inputs. dataflow.yml now builds the node from the checkout with path: + build:. A git:-sourced node does not pick up an adjacent manifest, so validating the previous form checked nothing; with path: the CLI reports "injected 6 contract type(s)" and a deliberately mismatched annotation exits non-zero under strict_types. The README keeps the tag: form for consumers. The workflow needs no camera and no ZED SDK, since validation never runs the node. Also ignores the git/ and out/ working directories dora build creates, and drops the ignore rules for the deleted test assets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Y7g2cBJ5e3r15ZbJ9WZn8c
40 lines
1.4 KiB
YAML
40 lines
1.4 KiB
YAML
# Node manifest: the typed contract a consumer wires against.
|
|
#
|
|
# No source package is shared between node repositories, so this file and its
|
|
# type URNs are the only contract a consumer has. `dora validate` checks a
|
|
# dataflow against it without running the node, so CI needs no camera and no
|
|
# ZED SDK.
|
|
apiVersion: 1
|
|
name: dora-zed
|
|
namespace: liria
|
|
description: ZED stereo camera source publishing a BGR image, a depth map, intrinsics and an optional point cloud
|
|
categories: [sensor]
|
|
keywords: [zed, stereolabs, camera, depth, stereo, jetson]
|
|
|
|
runtime: cpp
|
|
entrypoint: bin/dora_zed
|
|
build: scripts/build.sh
|
|
|
|
inputs:
|
|
tick:
|
|
type: std/core/v1/UInt64
|
|
required: true
|
|
description: Each tick triggers one camera grab. Connect to dora/timer/millis/N.
|
|
|
|
outputs:
|
|
image_bgr:
|
|
type: std/core/v1/UInt8
|
|
description: BGR image bytes, [H, W, 3]. Shape and encoding are in the metadata.
|
|
depth:
|
|
type: std/core/v1/Float32
|
|
description: Per-pixel depth in millimetres, [H, W]. Missing depth is 0, never inf or nan.
|
|
camera_info:
|
|
type: std/core/v1/Float32
|
|
description: Intrinsics [fx, fy, cx, cy], distortion in the metadata. Published once per camera session.
|
|
point_cloud:
|
|
type: std/core/v1/Float32
|
|
description: XYZRGBA point cloud. Published only when ZED_POINT_CLOUD is on.
|
|
camera_state:
|
|
type: std/core/v1/String
|
|
description: One of opening, streaming, recovering. Published on every change.
|