Data from: Learning vision-driven reactive soccer skills for humanoid robots
Data files
Jul 27, 2026 version files 122.35 MB
-
3a_success_rate_real.csv
120 B
-
3a_success_rate_sim.csv
1.52 KB
-
4b_occlusion.npy
180.35 KB
-
4c_proposed.npy
32.77 MB
-
4c_wo_head_reward.npy
32.77 MB
-
4d_proposed.npy
24.58 MB
-
4d_wo_decoder.npy
24.58 MB
-
5_joint_trajectory.csv
5.30 MB
-
6a_time.csv
1.22 KB
-
6b_ang_vel.csv
1.85 KB
-
7c_rolling_real.csv
554 B
-
7c_rolling_sim.npy
2.16 MB
-
plot_3a_success_rate.py
2.69 KB
-
plot_4b_occlusion.py
550 B
-
plot_4c_face_ball.py
1.54 KB
-
plot_4d_error.py
1.99 KB
-
plot_5_umap.py
1.80 KB
-
plot_6a_time.py
1.84 KB
-
plot_6b_ang_vel.py
1.85 KB
-
plot_7c_rolling.py
2.10 KB
-
README.md
3.66 KB
Abstract
Humanoid soccer poses a representative challenge for embodied intelligence, requiring robots to coordinate agile locomotion with unreliable visual perception in dynamic environments. However, existing systems typically rely on modular pipelines that separate perception from control or assume ideal sensing, making it difficult to achieve coherent and reactive behavior under real-world perceptual limitations. In this work, we present a unified reinforcement learning-based controller that enables humanoid robots to learn vision-driven reactive soccer skills by directly coupling visual perception with locomotion control. The robot is trained in simulation to acquire soccer behaviors, while Adversarial Motion Priors guide policy learning toward natural motion patterns. To support robust performance under imperfect sensing, we introduce an encoder-decoder architecture together with a virtual perception system that models key characteristics of onboard vision, exposing the policy to perceptual noise and detection failures during training. This design encourages the policy to internalize perceptual uncertainty and continuously adapt its motion in a closed loop. The resulting controller produces coordinated soccer behaviors using only onboard vision, including ball searching, chasing, and multi-directional kicking. It reduces ball position estimation error by 46 % and shortens time-to-kick by up to 64 % compared with a rule-based baseline, achieving around 90 % kicking success in frontfield positions. Experiments across diverse environments and dynamic scenarios, including real RoboCup competitions, further demonstrate the robust performance of the controller. These results highlight the practical effectiveness of integrating perceptual uncertainty directly into policy learning for achieving reliable vision-driven behaviors in humanoid robots operating under real-world conditions.
This repository contains the code and data required to reproduce the results presented in the paper Learning Vision-Driven Reactive Soccer Skills for Humanoid Robots.
Source Code
code.zip: Source code and pretrained model weights for this study.
Experimental Data
Figure 3A: Success rate at different initial ball positions
- Script:
plot_3a_success_rate.py - Data:
3a_success_rate_sim.csv,3a_success_rate_real.csv - Description: These files contain success counts at different initial ball positions, aggregated over 8192 simulation trials and 10 real-world trials. Ball positions are represented by the field coordinates
(x, y)and are measured in meters.
Figure 4B: Kicking performance under visual occlusion
- Script:
plot_4b_occlusion.py - Data:
4b_occlusion.npy - Description: This file contains binary kick and goal outcomes under visual occlusion of varying durations.
- Axis 0: Occlusion duration (0.0 to 1.0 s).
- Axis 1: Sample index.
- Axis 2:
[kick_flag, goal_flag].
Figure 4C: Angular offset of the ball from the camera center
- Script:
plot_4c_face_ball.py - Data:
4c_proposed.npy,4c_wo_head_reward.npy - Description: These files contain pitch and yaw angular errors between the ball position and the camera center from the proposed policy and the policy trained without the head-orientation reward. Errors are measured in radians.
- Axis 0: Sample index.
- Axis 1: Frame index.
- Axis 2:
[pitch_error, yaw_error].
Figure 4D: Ball perception and estimation error during kicking
- Script:
plot_4d_error.py - Data:
4d_proposed.npy,4d_wo_decoder.npy - Description: These files contain ball detection state, perception error, and estimation error for individual frames during kicking trials from the proposed policy and the policy trained without the decoder. Errors are measured in meters.
- Axis 0: Sample index.
- Axis 1: Frame index.
- Axis 2:
[detection_flag, perception_error, estimation_error].
Figure 5: Joint-space trajectory visualization
- Script:
plot_5_umap.py - Data:
5_joint_trajectory.csv - Description: This file contains joint-space trajectory frames generated by the policy. Joint angles are measured in radians.
Figure 6A: Time-to-kick at different approach angles
- Script:
plot_6a_time.py - Data:
6a_time.csv - Description: This file contains time-to-kick for the learned policy and the rule-based strategy at different approach angles. Approach angles are measured in degrees, and time is measured in seconds.
Figure 6B: Maximum robot angular velocity at different approach angles
- Script:
plot_6b_ang_vel.py - Data:
6b_ang_vel.csv - Description: This file contains maximum robot angular velocity for the learned policy and the rule-based strategy at different approach angles. Approach angles are measured in degrees, and angular velocity is measured in radians per second.
Figure 7C: Kicking performance for rolling balls at different velocities
- Script:
plot_7c_rolling.py - Data:
7c_rolling_sim.npy,7c_rolling_real.csv - Description: These files contain binary kick outcomes, binary goal outcomes, and time-to-kick for balls rolling at different velocities. Ball velocity is measured in meters per second, and time is measured in seconds.
- Axis 0: Rolling velocity (0.0 to 1.0 m/s).
- Axis 1: Sample index.
- Axis 2:
[kick_flag, goal_flag, kick_time].
