RoboCup is an international competition aimed at advancing autonomous robotics and AI through tasks like soccer and rescue. The RoboCup Soccer Simulation 2D league focuses on developing intelligent agents that play soccer in a simulated 2D environment. This league is ideal for testing and developing AI and ML algorithms, including reinforcement learning and multi-agent systems. more details
To run a game in the RoboCup Soccer Simulation 2D, you need to operate the rcssserver for hosting games, rcssmonitor to display them, and engage 12 agents (11 players and a coach) per team. Each cycle, agents receive data from the server and must execute actions such as dash and kick. Developing a team can be complex due to the environment's intricacy, typically necessitating C++ programming. However, our framework allows for Python development, leveraging the helios-base features. It introduces the playmaker-server, a Python-implemented server that interacts with the rcssserver via a proxy, managing environment states and agent actions based on the WorldModel from helios-base. Our defined protobuf schema ensures all environmental data is comprehensively covered, facilitating smooth communication between the playmaker server and the rcssserver.
To find more information about the framework, you can visit the CLSFramework Wiki Pages
To run a game by using the playmaker-server, you need to run rcssserver, rcssmonitor, soccer-simulation-proxy team, and the playmaker-server. To run each of them there some different solutions, you can find more information about them in the following list:
In this page, we will show the simplest way to start a game.
git clone git@github.com:CLSFramework/playmaker-server-python.git
cd playmaker-server-python
sudo apt-get install fuse
python3 -m pip install -r requirements.txt
chmod 777 download-server-proxy.sh
./download-server-proxy.sh
These commands will download the rcssserver and soccer-simulation-proxy AppImages. The rcssserver app-image is available in rcssserver directory and the soccer-simulation-proxy app-image is available in soccer-simulation-proxy directory. You can download the AppImages manually from the following links:
You can also build them from source code. You can find more information about building the rcssserver and the soccer-simulation-proxy in the following links:
The server should be run before the soccer-simulation-proxy agents.
cd rcssserver
./rcssserver-x86_64.AppImage
It would be better to run the Playmaker-Server in a separate terminal and before running the soccer-simulation-proxy agents.
python3 server.py
cd soccer-simulation-proxy
./start.sh
Note that if you want to use the debug tools of the soccerwindow2
, you have to run the ./start-debug.sh
instead of the ./start.sh
.
./start-team.sh
Note: In the competition, the competition manager will use the start-team.sh
to run the server and the agents. Also each player has to connecte to a different playermaker-server
.
The soccer-simulation-proxy is a base that acts as an intermediate connection between the RCSSServer and the playmaker-server
. The soccer-simulation-proxy receives the observation and the information of the field from the RCSSServer and send them to the playmaker-server
. The playmaker-server
receives the observation and the information of the field as a WorldModel
class in the protobuf
from the Proxy base and sends the action to the Proxy base. The Proxy base receives the action from the playmaker-server
and sends it to the RCSSServer, and this happens in each cycle of the game.
Also you can find some useful examples in the following repositories: