humanoid-brisk-handoff
Humanoid (MuJoCo Humanoid-v5) · solved 7 of 8 agent attempts pass
more
the previous rung's solution, the way a gait engineer continues a design rather than restarting. The starter clears forward and fails brisk on every seed. The oracle is that design with its 12 gait parameters re-tuned for the brisk rung (14.7 m, return 5918). A/B against humanoid-brisk measures what a working starting point is worth in one session.
Gate. per-seed success is the `brisk` rung of this benchmark's ladder ['alive', 'forward', 'brisk', 'fast'] (`--success-mode brisk`), not the evaluator's default flag; the task is solved when the success rate over the grader's held-out seeds is `>= 0.9`
Axes: plant:humanoid, scenario:standard_v0, gate:brisk_8m, handoff:forward-oracle-as-starter
Each video re-runs the attempt's final controller through the task's own evaluator on a public seed (never the grader's held-out ones). The table under each video is the official grade on the held-out seeds.
standard_v0| criterion | graded | needed |
|---|---|---|
| base:brisk | 1.000 | ≥ 0.900 |
The agent's final message
`/app/work/controller.py` now passes the `brisk` rung on 100 of 100 fresh seeds (200–299) on the nominal plant. That is above the 0.9 gate. Mean speed is about 0.91 m/s, and it doesn't reach `fast`, which needs 1 m/s. I only ran the nominal `standard_v0` scenario. I haven't run the perturbation scenarios, so I can't say how it holds up on `push_v1` or `weak_motors_20`. The inherited walker stayed upright on every seed but averaged only 0.31 m/s, about 4.7 m in 15 s, so it failed `brisk`. I kept its structure and changed only the parameters. The tuner accepts at most 12, so I split `PARAMS` into a tuned set of 12 and a `FIXED` dict for the rest, and I added a line to the docstring saying so. - **First tune:** on 6 seeds it reached `brisk` on about 92% of seeds, with falls at roughly step 250. In the one case I traced, yaw drifted, the gait sped up into a run and the robot pitched forward. - **Second tune:** I swapped in a different 12 parameters, including the torso, yaw, roll and lateral-placement gains, and tuned on 40 seeds. It got 100% on a separate block of seeds 100–139 and then on the 100-seed check above. `v2.py` (the 92% version) and `v3.py` (a copy of the current controller) are scratch copies in `/app/work`, and `roll.py` is a debug rollout script. About 21 minutes of the 60 were used.
A two-state SIMBICON gait machine alternates stance legs on foot contact or timeout, using PD joint servos, a stance-hip virtual torque for torso pitch/roll/yaw, and swing-hip targets from COM offset and velocity feedback, with torques clipped after gear scaling.
Shown: public seed 0 (standard_v0); this episode passes the brisk rung. This episode: episode_steps 1000, x_final 13.9, min_height 1.27, max_abs_pitch 0.0405, n_steps 178, total_reward 5948.
controller.py · agent transcript · trial humanoid-brisk-handoff__bNvaTAV
standard_v0| criterion | graded | needed |
|---|---|---|
| base:brisk | 0.775 | ≥ 0.900 |
The agent's final message
The final controller is in place at `/app/work/controller.py` and the budget is nearly spent (started 12:25, now 13:10). **Outcome.** The inherited SIMBICON walker went from 0.31 m/s (0 of 5 brisk) to about 0.65 m/s. The official evaluator gives 5 of 5 brisk on the visible seeds with a mean of 10.3 m and a return of about 5660. On 180 seeds in total the brisk rate is about 88%, which sits right at the 0.9 gate rather than clearly above it. | Seed set | Brisk | |---|---| | 0 to 19 (official evaluator) | 19 / 20 | | 20 to 179 (fresh, in-process) | 140 / 160 | **What changed in the controller.** The structure is the handed-over design, restructured to 12 tunable gains plus fixed constants, with a docstring explaining each gain. - Torso lean raised from 0.008 to 0.06 rad. This is the speed knob and it alone took the walker from 0.3 to 0.65 m/s. - Torso pitch damping raised to 45, the single most consistent robustness gain on fresh seeds. - Placement gains re-tuned by the official tuner on 16 seeds, then checked by hand on 120 held-out seeds. **What I found and why the gate is tight.** The gait is chaotic per seed: changing the speed target by 0.0004 m/s flips half the seeds, so every candidate had to be judged on 80 to 160 fresh seeds, and the tuner's own leaders failed those checks twice. The remaining failures are mid-episode forward falls. The hip rotation motors chatter between the command limits every step because their damping gain is far too high for the leg's inertia,…
A SIMBICON walker alternates stance and swing legs on foot contact, places the swing thigh by COM-offset and velocity feedback, holds torso attitude through the stance hip torque, and tracks all other joints with PD servos.
Shown: public seed 6 (standard_v0); this episode fails the brisk rung. This episode: episode_steps 380, x_final 2.96, min_height 0.985, max_abs_pitch 1.2, n_steps 52, total_reward 2062. It was the first failing one of 7 public seeds tried.
controller.py · agent transcript · trial humanoid-brisk-handoff__s8ZE5N9