Drive it
Keyboard: W S forward and back, A D sideways, Q E turn (or the arrows), Space jump. Otherwise the sliders set the command.
Policy: loading…
Jump uses the robot's own legs: it crouches and pushes straight up (the trunk rises about 30 cm), also while walking, following a hand-written sequence, because the network was never trained to jump; then the network lands it and walks on. A fixed sequence cannot correct its rotation in the air, so it sometimes falls, more often on rough ground: agile jumps are learned. Obstacle course, straight ahead: ramps, steps of 2–6 cm and bumps, then steps of 8, 10 and 12 cm. The network cannot see the ground, and on dev tests it cleared the first part every time and the 8 cm step two times in five.
Inside the network
The policy's live forward pass, 50 times a second (on a phone held upright it runs top to bottom). Left, the 48 sensor values grouped by what they measure (body velocity, turn rate, tilt, joint angles, joint speeds, last action, command); then three hidden layers of 512, 256 and 128 neurons, lit by their activations; right, the 12 joint targets, one row per leg (FR, FL, RR, RL: front or rear, right or left; hip sideways, hip, knee). Every connection is drawn, about 190,000, each as bright as its contribution to this step (positive, negative). During a jump the hand-written sequence drives the motors and the network dims. Drag to orbit.
What this is
The lab's applied side: unlike the experiments written from scratch, this one relies on established tools, and says so. The robot model is the Unitree Go1 from MuJoCo Menagerie. The network (48 sensor values → 512 → 256 → 128 → 12 joint targets, 50 times a second) is trained with PPO in MuJoCo Playground on a GPU, then runs here in plain TypeScript. The physics runs in this tab on DeepMind's MuJoCo WebAssembly build, about 90 times faster than real time on a laptop.
Status: feasibility tests done.
- The physics runs about 90× faster than real time in the browser.
- Training took 84 minutes on a free Colab T4 (the limit set was 60), and the policy walks.
- The policy runs here exactly as in JAX (within 2 × 10⁻⁷) and walks on flat and rough ground.
- A first GPU planner was too slow (173 ms per decision on a T4) and never improved on the policy.
Next: a better planner, then the System One / System Two study. The plan, criteria and results are in
the repository (docs/proposals/mujoco-quadruped.md).
Third-party: Unitree Go1 model © Unitree Robotics, BSD 3-Clause; MuJoCo and MuJoCo Playground © Google DeepMind, Apache 2.0; terrain texture from Poly Haven, CC0. Licence notices ship with the model files (NOTICE).