fix the node manifest and make the example dataflow self-contained
Two problems, both found by the validate job once it could finally run. categories named `teleop` and `input`, neither of which dora defines. The set is fixed — sensor, actuator, robot, transform, filter, ml-inference, llm, speech, communication, recorder, visualization, simulator, debug — and an unknown variant makes the whole manifest unparseable, so every type annotation in it was being ignored. dataflow.yml spanned three repositories through sibling paths, which meant dora could not resolve the other nodes' manifests and reported their typed outputs as unannotated. It also could not be validated in CI, which clones one repo. The house pattern is a self-contained dataflow, and this now follows it: teleop plus a bench stand-in for the arm and the browser, both from this checkout. The real three-node wiring moves to README.md, where a consumer would look for it. The bench answers every service, publishes plausible telemetry, and prints the velocities it is sent, so the node can be driven from a real gamepad with no robot in the room. It is not a simulator and must not become one: it never integrates a velocity or moves a pose.
This commit is contained in:
@@ -152,7 +152,7 @@ stops the node at startup rather than the first time somebody picks up the pad.
|
||||
|
||||
## Usage
|
||||
|
||||
See `dataflow.yml` for the whole stack wired together. The short version:
|
||||
The real stack is three nodes: this one, the WebSocket bridge and the arm.
|
||||
|
||||
```yaml
|
||||
- id: teleop
|
||||
@@ -172,12 +172,34 @@ See `dataflow.yml` for the whole stack wired together. The short version:
|
||||
outputs: [jog, request, ui_state]
|
||||
```
|
||||
|
||||
Point `ws-transceiver`'s `data_in` at `teleop/ui_state` and its `STATIC_DIR` at this
|
||||
repo's `web/`, and wire `ulite6`'s `request` and `jog` from this node.
|
||||
|
||||
**Requirements:** dora 1.0+ (verified with `dora-cli 1.0.1`), Python 3.11+, `uv`, and a
|
||||
gamepad if you want one — the node starts without and says so.
|
||||
|
||||
### Running it with no arm and no browser
|
||||
|
||||
`dataflow.yml` in this repo is **not** that stack. It is this node plus a bench stand-in,
|
||||
so you can drive the real thing from a real gamepad with no robot in the room:
|
||||
|
||||
```bash
|
||||
dora run dataflow.yml --uv
|
||||
```
|
||||
|
||||
**Requirements:** dora 1.0+ (verified with `dora-cli 1.0.1`), Python 3.11+, `uv`, and a
|
||||
gamepad if you want one — the node starts without and says so.
|
||||
The bench answers every service, publishes plausible telemetry, and prints each velocity
|
||||
it is sent:
|
||||
|
||||
```text
|
||||
jog 1 [ +38.89, +23.53, +0.00, +0.00, +0.00, +0.00]
|
||||
jog 2 [ +38.89, +23.53, +0.00, +0.00, +0.00, +0.00]
|
||||
jog 3 [ +0.00, +0.00, +0.00, +0.00, +0.00, +0.00] <- stop
|
||||
```
|
||||
|
||||
It is **not a simulator**: it never integrates the velocity or moves the pose, and a jog
|
||||
is printed and forgotten. It closes the loop so this node's behaviour can be watched —
|
||||
the lease changing hands, the deadman firing when you let go — not so the arm can be
|
||||
pretended at.
|
||||
|
||||
## Development
|
||||
|
||||
|
||||
Reference in New Issue
Block a user