Playing Soccer Like Humans Do: Learning Versatile and Agile Humanoid Soccer via Latent Motion Priors
TL;DR SoccerBot trains one skill-conditioned RL policy that moves, dribbles, traps and kicks a ball on a Unitree G1, acting as a residual on a latent motion prior distilled from human soccer motion capture. In simulation it kicks successfully 97.0% of the time and dribbles 89.9%, and it transfers zero-shot to the real robot with motion-capture ball tracking.
What they do
Earlier humanoid soccer systems cover only some skills, chain separate controllers with a state machine, or learn without human motion data and move unnaturally. SoccerBot learns moving, dribbling, trapping and kicking in a single skill-conditioned policy built on a latent motion prior from human soccer data, then deploys it zero-shot on a Unitree G1.
How it works
- Motion tracker. Human soccer clips from Soccer-X are retargeted to the G1, and segments that cannot be tracked under hardware torque limits are dropped, leaving about 2.5 h. An RL tracking policy learns to imitate them.
- Latent motion prior. The tracker is distilled, DAgger-style, into an encoder, a state-conditioned prior and a decoder. The prior and decoder are then frozen.
- Soccer policy. PPO learns a residual on the prior’s latent from a skill one-hot, a velocity command, the ball state and proprioception. Transition state initialization starts some episodes from the end states of other skills, so the policy learns to switch skills.
- Sim-to-real. Training randomizes friction, restitution, ball mass and damping, latency and pushes, and adds observation noise. On hardware, motion capture tracks the ball.
Results
- Simulation (2,500 episodes per skill): 97.04% kicking and 89.88% dribbling success, the highest of all methods. PPO never dribbles, AMP traps 23.08% of passes, and ASE neither kicks nor dribbles.
- Trapping is weaker (83.08%, below PPO and both ablations): the policy often blocks fast passes with an extended leg and the ball rebounds too far.
- Transition initialization raises Dribble→Kick from 78.0% to 87.5% and Move→Dribble from 71.5% to 78.5%.
- Real robot (20 trials per skill): moving speed error barely changes (19.14% in sim, 21.53% real), but kick speed error grows from 8.12% to 47.38% and a trapped ball travels 1.07 m instead of 0.31 m.
Limitations
The sim-to-real gap is large for dribbling, trapping and kick speed, which the authors partly attribute to the rigid simulated ball. Deployment needs external motion capture, the policy has only four skills, and there is no multi-robot play.
Videos
Figures



Abstract
Humanoid soccer requires a robot to seamlessly combine agile locomotion, ball manipulation, and impact-rich contact dynamics across a continuous, dynamic behavioral spectrum. Yet existing approaches either cover only a limited set of skills, or forego motion priors entirely and produce unnatural behaviors, leaving the combination of a unified skill set and human-like motion quality unaddressed. We present soccerbot, a hierarchical reinforcement learning framework that resolves both limitations through a structured latent motion prior distilled from large-scale human soccer motion capture data. By constraining policy learning within this dynamically plausible motion manifold, a single skill-conditioned policy naturally learns to perform moving, dribbling, trapping, and kicking in a unified formulation, while inherently producing human-like motion and fluid transitions during commanded skill switching. Augmented by robustness-oriented simulation design, soccerbot transfers zero-shot to the Unitree G1 humanoid robot, demonstrating agile, natural, and robust execution of the full soccer skill repertoire under real-world conditions.
Summaries are written automatically from each paper's text. Figures and videos come from the paper and its project page; all credit goes to the authors.
