A desktop robot arm reaching for a wooden block, its shadow long across the bench.

N° 06For robotics

Teach it in simulation. Run it on the arm.

Arms are devices with channels. Trials run in the simulator first, every run is recorded, and any moment of any run can become the start of the next one.

Plate 15 · A desktop arm mid-reach, its shadow long across the bench

Arms

One channel model, many arms.

The servo bus is a channel. Drivers speak it directly:

  • Feetech STS/SCS — the SO-100 and SO-101 arms.
  • Dynamixel Protocol 2.0 — Koch v1.1 and WidowX.
  • UFACTORY xArm and Lite 6 over TCP.
  • The CommandAGI ESP32 arm, polling its host over the LAN.

USB arms connect straight from the browser over WebSerial — the port opens only when you pick it.

Many faint copies of one robot arm reaching for the same target.

Plate 16 · Forty reaches, one target, overlaid in the simulator

Try it a hundred times before the first real one.

A trials file sweeps a parameter — a target, a gain, a mass — across many simulated runs and records every one. Compare them on one time bar, keep the best, and move on.

A hand on a trackpad, with a robot gripper out of focus behind.

Force dragging

Push it with your mouse. It's recorded.

Grab any body in a simulation world and drag it. The force you applied is written into the run with your name on it, so a disturbance you added by hand replays exactly like everything else.

Plate 17 · A hand on a trackpad, nudging a simulated gripper

Every run, replayable and forkable.

A run is a folder of streams, on one clock. Scrub it, replay it at a quarter speed, or fork it at any moment into a new simulation run that starts exactly there.

runs/reach-tuning/streams/arm-1.servoexample records · simulation
00:00:04.020 note    agent:tuner: run_program reach.trials.json #17
00:00:04.031 command goal j1=31.0 j2=-22.0 j3=64.5 j4=10.0
00:00:04.540 state   j1=30.9 j2=-22.1 j3=64.4 j4=10.0
00:00:05.002 event   person:ana: drag gripper f=(0.0, 1.8, 0.0) N
00:00:05.300 state   j1=31.4 j2=-20.8 j3=63.2 j4=10.0
00:00:06.100 note    person:ana: fork @ 00:00:05.002

Authority

An agent at the controls, inside your bounds.

Give an agent a standing grant on one arm, in one world, for one afternoon. It arms the arm and sends goals in real time. An armed arm that sits idle for five minutes disarms itself, and stop and torque-off are always allowed.

Verification

Tested against the protocol. Not yet on your bench.

The arm drivers are verified at loopback: against faithful software fakes of each servo protocol. None has been commissioned on a real arm yet. When one has, its driver will say so — and not a moment before.

Start with a simulation world.

Open the workbench, open a simulation world with an arm in it, and drag it around. No hardware, no grant needed.