# The same bench, with a real gamepad and a probe. # # `dataflow.yml` is what CI validates, and it deliberately has no pad in it: the # pad is `dora-joy`, another repo, and pulling it in by `git:` would cost that # file its one property — that it resolves and runs from this checkout alone. # This file is the other half. It needs the network on first build, and a pad. # # The bench answers services and publishes telemetry but never moves anything. # What this is for is watching the node decide: the lease changing hands, the # deadman firing when you let go, and the arm being stopped when the pad — or # the node reading it — goes away. # # Run it under a coordinator rather than `dora run`, so `dora topic` can read the # wire and so the probe has something to attach to: # # dora up # dora start dataflow-gamepad.yml --uv --name teleop-bench # dora-teleop-probe # in another terminal # dora topic echo -d teleop-bench teleop/jog # dora stop --name teleop-bench && dora down strict_types: true debug: enable_debug_inspection: true nodes: - id: joy git: https://gitea.liria.cl/liria/dora-joy.git tag: v0.1.1 build: pip install . path: dora-joy inputs: tick: dora/timer/millis/20 outputs: - joy - id: teleop path: dora-teleop build: pip install . inputs: tick: dora/timer/millis/50 # queue_size 1: joy ticks at 20 ms and this node at 50, so without it the # loop would work through a backlog of readings that have already been # overtaken. An arm should be driven by the newest one or by none. joy: source: joy/joy queue_size: 1 queue_policy: drop_oldest response: bench/response robot_state: bench/robot_state tcp_pose: bench/tcp_pose joint_pose: bench/joint_pose outputs: - twist - command - jog - request - ui_state env: SPEED_MM_S: "60" SPEED_DEG_S: "30" # This one is about the pad, so the console stays shut. Set a port to # bring it up alongside and watch the lease move between the two. WEB_PORT: "0" # Declared, not spawned: `dora-teleop-probe` attaches to this id when you run # it, and the dataflow runs perfectly well when nobody does. - id: teleop-probe path: dynamic inputs: joy: joy/joy - id: bench path: examples/bench.py inputs: tick: dora/timer/millis/200 jog: teleop/jog request: teleop/request ui_state: teleop/ui_state outputs: - response - robot_state - tcp_pose - joint_pose