update dataflow-gamepad to drive the arm instead of the bench
It now runs joy, teleop and dora-ulite6 with the probe declared and the console shut, so a pad can be checked against the arm that will actually move. ROBOT_IP in both arm dataflows points at the bench arm. The run recipe drops dora up + dora start: dora 1.0.1 refuses to start a dataflow holding git: nodes from a coordinator, reporting that no build was run straight after one that succeeded. That costs the file dora topic, which needs a coordinator to read the wire. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+57
-26
@@ -1,23 +1,29 @@
|
||||
# The same bench, with a real gamepad and a probe.
|
||||
# The pad, a real arm and the probe. No bench and no browser.
|
||||
#
|
||||
# `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.
|
||||
# This file is the other half. It needs the network on first build, a pad, and
|
||||
# an arm.
|
||||
#
|
||||
# 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.
|
||||
# It is `dataflow-robot.yml` with the probe attached and the console shut, for
|
||||
# the one job the probe exists for: checking that the pad in your hands has the
|
||||
# layout `mapping.py` assumes, against the arm that will actually move. Use
|
||||
# `dataflow-robot.yml` for ordinary driving.
|
||||
#
|
||||
# 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:
|
||||
# source .venv/bin/activate # not --uv; README.md says why
|
||||
# dora build dataflow-gamepad.yml
|
||||
# dora run dataflow-gamepad.yml
|
||||
#
|
||||
# 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
|
||||
# `dora run`, not `dora up` + `dora start`: dora 1.0.1 refuses to start a
|
||||
# dataflow holding `git:` nodes from a coordinator — "node joy has git source,
|
||||
# but no `dora build` was run yet", straight after a build that succeeded. It is
|
||||
# the same shape of gap as the `--uv` one above, and it costs this file
|
||||
# `dora topic`, which needs a coordinator to read the wire.
|
||||
#
|
||||
# ROBOT_IP and TOOL_TYPE below name the arm in front of you: the bench arm at
|
||||
# 192.168.1.162, with a vacuum tool. Read
|
||||
# `The gamepad` in README.md before picking it up — Back is the E-STOP.
|
||||
|
||||
strict_types: true
|
||||
|
||||
@@ -47,10 +53,11 @@ nodes:
|
||||
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
|
||||
response: ulite6/response
|
||||
motion_state: ulite6/motion_state
|
||||
robot_state: ulite6/robot_state
|
||||
tcp_pose: ulite6/tcp_pose
|
||||
joint_pose: ulite6/joint_pose
|
||||
outputs:
|
||||
- twist
|
||||
- command
|
||||
@@ -60,8 +67,13 @@ nodes:
|
||||
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.
|
||||
# Keep the deadman layers ordered: JOY_TTL_S < JOG_TTL_S < the arm's own
|
||||
# VELOCITY_COMMAND_TTL_S, which is 0.5 s below. Each backs up the one
|
||||
# inside it, and a backstop that fires first backs up nothing.
|
||||
JOY_TTL_S: "0.2"
|
||||
JOG_TTL_S: "0.4"
|
||||
# This one is about the pad, so the console stays shut and no port is
|
||||
# opened. `dataflow-robot.yml` is the one that serves it.
|
||||
WEB_PORT: "0"
|
||||
|
||||
# Declared, not spawned: `dora-teleop-probe` attaches to this id when you run
|
||||
@@ -71,15 +83,34 @@ nodes:
|
||||
inputs:
|
||||
joy: joy/joy
|
||||
|
||||
- id: bench
|
||||
path: examples/bench.py
|
||||
- id: ulite6
|
||||
git: https://gitea.liria.cl/liria/dora-ulite6.git
|
||||
tag: v0.3.1
|
||||
build: pip install .
|
||||
path: dora-ulite6
|
||||
inputs:
|
||||
tick: dora/timer/millis/200
|
||||
jog: teleop/jog
|
||||
tick: dora/timer/millis/100
|
||||
request: teleop/request
|
||||
ui_state: teleop/ui_state
|
||||
jog: teleop/jog
|
||||
outputs:
|
||||
- response
|
||||
- robot_state
|
||||
- tcp_pose
|
||||
- motion_state
|
||||
- joint_pose
|
||||
- tcp_pose
|
||||
- robot_state
|
||||
# dora type-checks before it fetches a `git:` source, so it cannot read the
|
||||
# arm's own manifest from here. These three repeat what `dora-ulite6`
|
||||
# v0.3.1 annotates; `response` and `motion_state` stay untyped there and so
|
||||
# stay untyped here. Re-check them when moving to a new tag.
|
||||
output_types:
|
||||
joint_pose: std/core/v1/Float32
|
||||
tcp_pose: std/core/v1/Float32
|
||||
robot_state: std/core/v1/String
|
||||
env:
|
||||
ROBOT_IP: "192.168.1.162"
|
||||
TOOL_TYPE: "vacuum"
|
||||
# The outermost deadman, enforced by the controller whether or not any of
|
||||
# this is alive. Every timer above must stay below it.
|
||||
VELOCITY_COMMAND_TTL_S: "0.5"
|
||||
# The pad does not home. Nothing moves until somebody pushes a stick.
|
||||
INIT_MODE: "none"
|
||||
|
||||
Reference in New Issue
Block a user