Skip to content

TeleHuman/HumanoidSoccer

Repository files navigation

Learning Soccer Skills for Humanoid Robots

A Progressive Perception-Action Framework

Jipeng Kong*, Xinzhe Liu*, Yuhang Lin, Jinrui Han, Sören Schwertfeger, Chenjia Bai, Xuelong Li
* First Author    Corresponding Author

Project arXiv PDF Code

Overview

This repository contains the official implementation for **Learning Soccer Skills for Humanoid Robots: A Progressive Perception-Action Framework **.

Soccer is a challenging task for humanoid robots, requiring tightly integrated perception and whole-body control. We propose PAiD (Perception-Action integrated Decision-making), a progressive framework with three stages: motion-skill acquisition via human motion tracking, lightweight perception-action integration for positional generalization, and physics-aware sim-to-real transfer. Experiments on the Unitree G1 show robust, human-like kicking across static/rolling balls, varied positions, disturbances, and indoor/outdoor scenarios.

teaser

Codebase

This repository contains:

The kick motions used in our paper are publicly released in motions.

Installation

  • Install Isaac Lab v2.1.1 by following the installation guide. We recommend using the Pip installation.

  • Clone this repository:

# Option 1: SSH
git clone git@github.com:TeleHuman/HumanoidSoccer.git

# Option 2: HTTPS
git clone https://github.com/TeleHuman/HumanoidSoccer.git
  • Using a Python interpreter that has Isaac Lab installed, install the library
pip install -e source/whole_body_tracking

Training & Play Example

Training

Train the default rolling-ball soccer policy with the progressive helper:

bash shell/progressive_soccer_train_play.sh test

Play

python scripts/rsl_rl/play_multi.py --task Tracking-Flat-G1-SoccerMoving-RNN-v0 \
    --motion_path motions/soccer-standard \
    --load_run <run-name> \
    --num_envs 1  

Progressive Training & Play

Training

bash shell/progressive_soccer_train_play.sh test

This helper first trains the motion-tracking stage with run name test, then resumes it for the rolling-ball soccer stage. Override the defaults with RUN_NAME=..., LOAD_RUN=<run-name>, NUM_ENVS=..., or MIMIC_MAX_ITERATIONS=....

Play

python scripts/rsl_rl/play_multi.py --task Tracking-Flat-G1-SoccerMoving-RNN-v0 \
    --motion_path motions/soccer-standard \
    --load_run <run-name> \
    --num_envs 1  

MuJoCo Sim2Sim & Evaluation

Run a visualized MuJoCo sim2sim rollout:

python exp/mujoco_soccer_experiment.py \
    --policy ckp/policy_30000.onnx \
    --motion-path motions/soccer-standard \
    --num-trials 1 \
    --visualize

See exp/README.md for ONNX export, batch sim2sim evaluation, output files, and offline trajectory metrics.

TODO

  • Release PAiD training code
  • Release PAiD motion dataset
  • Release PAiD ckpt and sim2sim code
  • Release PAiD domain randomization code

Citation

If you find this work useful in your research, please consider citing:

@misc{kong2026learningsoccerskillshumanoid,
  title={Learning Soccer Skills for Humanoid Robots: A Progressive Perception-Action Framework},
  author={Jipeng Kong and Xinzhe Liu and Yuhang Lin and Jinrui Han and Sören Schwertfeger and Chenjia Bai and Xuelong Li},
  year={2026},
  eprint={2602.05310},
  archivePrefix={arXiv},
  primaryClass={cs.RO},
  url={https://arxiv.org/abs/2602.05310}
}

License

This codebase is under CC BY-NC 4.0 license. You may not use the material for commercial purposes, e.g., to make demos to advertise your commercial products.

Contact

For further collaborations or discussions, please feel free to reach out to:

About

Learning Soccer Skills for Humanoid Robots: A Progressive Perception-Action Framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages