Summary
Motion tracking reproduces one clip. Adversarial motion priors instead learn a style: a discriminator scores how much the robot’s motion looks like a set of reference clips, and that score is added to the velocity-tracking reward. Here the references are two runway walks retargeted to the K1, so the robot walks wherever it is commanded, in a catwalk style.
Method
- Two 9.5 s catwalk clips generated from text with NVIDIA’s Kimodo motion diffusion model (for example: “A female fashion model walks quickly forward with very short, quick crossover steps and subtle hip sway…”), then retargeted to the K1 with GMR.
- Velocity task with AMP in mjlab (
booster_mjlab), PPO with the Muon optimizer, 4096 environments. - The stock setup shows the discriminator only the legs. I added the shoulders and elbows (46 features per frame instead of 30), and made the style weight, the upper-body posture penalty and the discriminator width configurable.
Results
With the discriminator on the legs only, the shoulders already swing with the gait, but the elbows stay almost frozen: about 15–18% of the reference elbow swing. Adding the arms to the discriminator, relaxing the upper-body posture penalty from −0.1 to −0.01 and raising the style weight to 0.7 brings the elbow swing to 0.91–1.10 of the reference, with the left–right arm phase correlation at +0.70 (reference +0.71). The −0.01 weight is the one that matches the arm motion measured on the reference clips; with no penalty at all, the arms swing wider but drift out of phase. The cost is about 20% worse velocity tracking.
I re-ran 12 trained catwalk policies under the same command (0.5 m/s forward, 12 s); none of them fell.
Next
- Full-body AMP: put the waist and head in the discriminator too.
- More turning in place in the data and the commands, so the policy learns turns better.
- Runway poses at the end of the walk.
- Hardware tests.