Evaluate current checkpoints
Choose a measured controller, select terrain and a starting situation, then explore movement, poses and recovery. Compare live behavior with the checkpoint’s recorded results.
Run recovery, speed and pose trials
Run recovery, speed, radial-heading and pose trials on the selected checkpoint and ground. Inspect movement, contacts and tracking in the live simulation. The seeded generalist suite records acceptance evidence.
Loading trial controls…
Loading performer records…
Engineering read-out
These are the numbers the HUD keeps out of the way: the achieved tick rate against the 50 Hz target, the hub's height and position, the contact count, and the raw commanded and achieved twist components. hub z is the height of the body's centre above the floor; con is the number of contacts MuJoCo is solving this step.
No demonstration running
Measured.
Where it is weak.
Where every number came from
Every number on a card is a substitution from a file named above: a training-side eval (uv run stumblebug eval, twelve seeds), a campaign record, an open-loop ceiling record, or what node tests/demos.mjs measured driving this same demo through this same tick under node. The catalogue (assets/demos.json) is generated by uv run stumblebug demos and records each number beside its source; the bars listed decide the card's status. The bounds a caption rests on are in the demo's own expect list and are checked by tests/demos.mjs; a demo that fails one is barred from the unattended showcase loop.
This net's identity
The artifact-lifecycle contract: a checkpoint carries its own identity and no consumer guesses it from a path (docs/artifact-lifecycle.md). The capability record below it is derived by uv run stumblebug ship from the run's identity card, and it is what decides which controls the page draws.
This net's limb wiring
Read-only: what the six limb brains were trained with, in the vocabulary src/limbnet/spec.py prints (LimbNetSpec.describe). The bus is a property of the trained configuration, not a dial — latency and dropout at play time need a bus in the page itself (docs/limbnet-web.md W7). Kill a limb in the deck and read it against this: a net whose peers are none has nothing to lose when limb 2 goes.
Compare against another net
Two plants on the same ground, built from the same seed, driven by the one command stream — the keyboard, the pad, the auto-walk or a demonstration — and killed the same limbs. The stage splits: the net in the slot on the left, this one on the right. Both nets' achieved body-frame vx and whether each is still on its feet are in the status strip over the scene.
Log
Session record
off — nothing is recorded, nothing leaves this browser
Off by default, and nothing is sent anywhere either way. Turned on, every command, goal, pose, shove, demonstration and net or ground change you make is kept in this tab's memory, stamped with the net's identity (id, campaign, checkpoint) and the sim clock. The only way out is the download button: no upload, no cookie, no storage, and closing the tab discards it. It is the seam for a consented data path (docs/research-agenda.md §8) that does not exist yet; a ● rec pill sits in the bar while it is on.
Help
Demonstrations. Selecting a checkpoint starts a captioned demonstration on the recommended terrain. Playback repeats the selected checkpoint and scenario. Use Stop demonstration for manual exploration, or Replay scenario to restart the selected sequence.
Movement controls. Buttons send target movement and pose commands to the selected policy. Compare each command with the live response. The turning row reads target → actual in radians per second; values near zero in the actual reading show little rotation. Response varies by checkpoint, pose and terrain.
Checkpoint evidence. Each checkpoint carries training ranges, pose inputs and recorded task results. Available controls follow the input contract; measured results describe demonstrated performance. Forward speed, turning, recovery and pose tracking require their respective evaluations. Results shows the recorded measurements for the selected checkpoint.
Speeds. Both units are the eval's: metres per second, and body lengths per second over the stand stance's 0.4893 m foot-to-foot diameter (evaluate.py STANCE_DIAMETER_M).
Who drives. Policy runs the trained ONNX. Gait is the scripted tripod (kits/gait.py) with a hub-height and attitude regulator — at the servo's honest 1.9 N·m ceiling it no longer walks. Puppet lets you drag a foot: grab the ring drawn on a foot and that leg's IK tracks the ghost.
Ground. Explore seven surfaces: the marked track, rough, rocks, steps, gaps, mixed and climb. The track adds lane markers and adjacent obstacles around a level running lane. The HUD identifies the selected ground and the checkpoint's training terrain. Recorded evaluations retain their original scenes.
Shove. Push on the robot. Put a pointer on the body and drag: the arrow is where it will go, how far you drag is how hard, and letting go fires it. The direction is taken onto the ground through the camera's own azimuth, so it means what it looks like whatever way you have orbited the view, and the magnitude can only scale anomaly.py's own range down, never past it. The dial at the bottom right is the same gesture for a keyboard: arrow keys aim, Enter fires. With no aim at all the direction is sampled the way the training term samples it. push is the velocity task's ±0.3 m/s planar kick, shove the measured 6-DoF one (±25 rad/s roll/pitch, which tips this body about one time in three), tumble and invert drop it from clear of its own reach. Every magnitude is mjlab_stumblebug/anomaly.py's.
Keys. ↑↓←→ drive · QE turn · Space stop · M mode · T policy slot · P pause · R reset · C camera follow · ZXBV disturb · 1–9FSI poses · [ deck · ? this drawer. Drag the view to orbit, wheel to zoom.