← all tasks

humanoid-fast-handoff

Humanoid (MuJoCo Humanoid-v5) · solved 7 of 9 agent attempts pass

The task. Same gate as humanoid-fast, but the starter is the humanoid-brisk oracle (1.0 m/s, 14.7 m, fast on 55 % of seeds, PARAMS and PARAM_BOUNDS declared), i.e.

more

the previous rung's solution. The missing 10 % of speed came, for the oracle, from re-tuning the PD gains and stance timer that the brisk design had kept fixed, then the gait again: a structure-preserving step a gait engineer would take. A/B against humanoid-fast.

Gate. per-seed success is the `fast` rung of this benchmark's ladder ['alive', 'forward', 'brisk', 'fast'] (`--success-mode fast`), 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:fast_15m, handoff:brisk-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.

Best attemptFable 5.1 (claude-code, 35 min) · standard_v0

Graded on the held-out seeds: passes every gate on the grader's held-out seeds.

criteriongradedneeded
base:fast1.000≥ 0.900

How the agent got there: 35 min · 38 tool calls · 0 edit-tool edits · 29 runs of its own Python (tests, experiments, rewrites) · repository tuner 5× · official verifier 4× (success rates in order: 0.40, 1.00, 1.00, 1.00).

The agent's final message

`/app/work/controller.py` now clears the `fast` gate: the official evaluator passes 20 of 20 visible seeds, and my own in-process sweep passes 599 of 600 seeds (0–599), with the single miss at 14.99 m. **What was wrong with the inherited walker.** Its gait is a high-cadence shuffle whose limit cycle already runs at about 1.2 m/s, but it took 4 to 6 s to reach that speed, and the start-up time varied chaotically with the 1 cm initial noise. Mean distance was 15.0 m, so half the seeds landed just under the line. Every attempt to raise the terminal speed (higher target speed, more lean, speed-scheduled offsets, step timing, swing-knee flexion, abdomen assist, torso-priority torque allocation) toppled the robot, because both hips saturate at 120 N m on every swing and any extra demand cancels the stance hip's torso-pitch authority. **What I changed.** No structure, only five gains, each validated on 144 to 336 fresh seeds before being kept: | Gain | Before | After | Effect | |---|---|---|---| | `kp_t` / `kd_t` (torso pitch PD) | 394 / 48.5 | 250 / 47 | softer loop frees hip torque, faster start-up | | `pitch_d` | 0.0075 | 0.02 rad | slight forward lean | | `cd` with `v_d` | 0.41 / 0.69 | 0.52 / 0.71 | stronger offset feedback permits a higher speed offset | | `cv_lat` | 0.34 | 0.30 | removed the remaining lateral trips | Mean distance went from 15.0 m to 15.8 m and the minimum over 600 seeds from 14.1 m to 14.99 m. The docstring documents the gait's limits and the role of eac…

Controller family: SIMBICON

A SIMBICON walker alternates stance legs on swing-foot touchdown or timeout, uses PD joint tracking, regulates torso attitude via the stance hip, and places the swing foot with COM position/velocity feedback at a fast 0.15 s step cadence.

Shown: public seed 0 (standard_v0); this episode passes the fast rung. This episode: episode_steps 1000, x_final 16, min_height 1.27, max_abs_pitch 0.0635, n_steps 196, total_reward 6101.

controller.py · agent transcript · trial humanoid-fast-handoff__t9XMGFK

FailureSonnet 5.5 (claude-code, 53 min) · standard_v0

Graded on the held-out seeds: misses the main gate narrowly (success rate between 0.5 and the gate).

criteriongradedneeded
base:fast0.875≥ 0.900

How the agent got there: 53 min · 37 tool calls · 0 edit-tool edits · 11 runs of its own Python (tests, experiments, rewrites) · repository tuner 3× · official verifier 9× (success rates in order: 0.40, ?, ?, 0.83, 0.42, 0.96, 0.60, 0.83, 0.96).

The agent's final message

The controller in `/app/work/controller.py` probably does not meet the 0.9 gate. On three sets of 24 held-out seeds it passed `fast` on 83%, 96% and 96% of seeds, about 92% on average. The stated gate needs 0.9 on the grader's seeds, so a pass is possible but not certain. I'm stopping because the 60-minute budget is nearly spent by `date`. **What I changed:** only the numbers in `PARAMS`. The inherited controller reached about 14.8 m in 15 s, just short of the 15 m `fast` threshold. The built-in tuner scored every candidate `fast` or not `fast`, so it found nothing. I wrote my own random local search, `search.py`, that scores on distance travelled instead. That found parameters that clear 15 m on most seeds. The control law is unchanged. **What went wrong:** - The remaining failures are early falls at roughly step 40, where the robot pitches forward by about 1 rad. - I tuned on seeds 0–7. A second set of parameters, tuned on seeds 100–123, did no better on average, so I kept the first. I only ran the nominal scenario (`standard_v0`) and did not test the perturbation scenarios. The original controller was 40–42% on `fast`, with most failures just under 15 m.

Controller family: SIMBICON

A two-state SIMBICON gait machine switches stance leg on swing-foot contact or timeout, with the stance hip applying a torso attitude PD torque, the swing hip placing the foot by COM position/velocity feedback, and PD servos on knees and other joints.

Shown: public seed 16 (standard_v0); this episode fails the fast rung. This episode: episode_steps 1000, x_final 14.9, min_height 1.26, max_abs_pitch 0.0677, n_steps 193, total_reward 6015. It was the first failing one of 17 public seeds tried.

controller.py · agent transcript · trial humanoid-fast-handoff__U45bbhr