Summary
The policy outputs only the 12 leg joints from a velocity command. The head and arms (10 joints) are driven from outside, by the teleoperator. To make the legs keep balance whatever the arms do, the arms are moved during training by a random motion generator over their whole range.
How
- Every 1–4 s each simulated robot picks a new arm motion: circles, sweeps, or jumps to a random pose. Frequency 0.2–1.5 Hz, amplitude 30–100% of half the joint range, ramped up over the first 1000 iterations. No motion dataset: the parameters are random.
- AMP keeps the walking style (legs-only discriminator, LAFAN walking clips, style weight 0.5).
- mjlab, PPO with the Muon optimizer, 4096 environments, 4000 iterations.
Results (simulation)
512 robots walking for 40 s while the arms move in circles over their full range:
| trained with | robots that fell |
|---|---|
| arms held still | 100% |
| arms at random poses near the default | 25% |
| the arm-motion generator | 0.7–2.5% |
In the booster_deploy MuJoCo check with the arms raised, the arm-motion policy keeps the trunk within 1–2° of upright; the random-pose one leans 16–18°.
The same policy in heel shoes: K1 Heel Walking.