← Streetlight back to all nodes
node · 2026-06-11 investigation robot

robot-ooda-speed

Two axes from Jake's memo: cut time per loop · do more per loop. Timings below are measured from last night's run artifacts, not vibes.

You are here

[[robot-framework]] this node measures the loop, then ranks levers to tighten it / fatten it feeds the next live session's harness + the font pipeline

Measured: the live loop runs at 0.02 Hz — median 47–53s per step (n=105 real photo gaps, three 2026-06-10 sessions). Of each ~50s: camera ~0.8s, robot motion 1–5s, Fable thinking ~44s. The idle dash-pi gemini loop already does 3.7s/step (real transcripts) — 13× faster, parked since May.

0s10s20s 30s40s50s TODAY — Fable drives every step  (REAL: median 47–53s, n=105) orient + decide (Fable) ~44s — 88% of the loop act 1–5s ▲ observe 0.8s (cold camera open + 3 warmup frames, every call) ALREADY BUILT — dash-pi gemini-flash loop  (REAL: 3.7s/step, idle since 05-13) 2.7s model (incl. cold `pi` spawn per step) — parked only because it lacked calibration; calibration now exists in letters/ PROPOSED — batched round, telemetry-guarded  (EST: ~15s covers what 3 Fable steps = 150s cover today) plan 4s execute 3-cmd batch 9s verify 2s (yaw/prox first, photo only when it matters) → ~10× per round guards: expected yaw ±2° + prox checkpoints abort the batch · pen-lift makes mistakes inkless · phone-head 5Hz compass/accel = the guard sense observe orient+decide (frontier) orient+decide (fast model) act
#axisleverexpected savingeffortrisk
1timeDemote routine strokes to the fast loop — bake letters/ calibration into dash-pi/system.md; Fable = escalation only50s → ~5s per routine step (10×)MM — cheap model's camera calls can be overconfident (knock R5/R6); Fable keeps verify checkpoints
2timeTelemetry-first observe — /telemetry yaw (~100 units/°) + prox answer "did the turn land" in msskips whole 50s vision cyclesSL
3more/loopBatched stroke programs w/ guard conditions — one JSON per round (cmds + expected yaw/prox); server aborts on deviation. Knock rounds already converged to 3-command shape3–6× fewer model callsMM — deliberately deletes system.md's "no chains" rule
4more/loopDeterministic glyph executor + sim preview (Jake's memo idea) — LLM only at glyph boundaries; preview predicted ink in sim before inking~8min/glyph → ~40sML — pen-lift makes batch mistakes inkless
5timePersistent server-side camera + /record — kill cold open + 3 warmup frames per snapshot0.5–2s/loop + the thermal fixSL
6bothPhone-on-head sensors (BUILT tonight: phone-head/, web) — 5 Hz absolute compass + accel/gyro, ~1.4 fps POV cam, /history accel forensics = hit-vs-stall detectorturn-verify: 50s vision cycle → ~0.2s compass read; solves hit-vs-stallS (built)L
7timePersistent model session / prompt cache — stop cold-spawning `pi --no-session` per stepest 0.5–1.5s/step + costSL
8more/loopMacro-verbs — stroke(bearing,len), spotlight_then_shoot, pen_up/down; plan in maneuvers not motor packetsfewer, richer actionsSL
9more/loopThink-during-act pipelining — plan step n+1 during the 1–5s motion; diff-check prediction gates the prequeuehides motion time entirelyMM
10timeCrop to paper bbox before sending — cv2 diff-crop already specced in letters/07est 20–40% off vision latencySL

Prior art says split the brain, not shrink it: dual-system VLA robots run a 7–9 Hz VLM over a 200 Hz reactive policy, asynchronously (Figure Helix, async fast-slow VLA). Our analog: Fable = System 2, deterministic executor + phone IMU guards = System 1 — and the blown-up loop stays walkable: every round still emits photos, predictions, and a checkable plan.