WrightEagle Base Code for RoboCup Soccer Simulation 2D
This is the code release of WrightEagleBASE, which serves as the basic framework of WrightEagle. A video from RoboCup 2015 final -- HELIOS2015 v.s. WrightEagle2015 -- is as follows.
WrightEagle has won 6 world champions and 5 runners-up in annual RoboCup Soccer Simulation 2D competitions since 2005. Detailed historical results from 2005 to 2013 can be found as follows:
WrightEagle/WrightEagleBASE is developed following the MAXQ-OP online planning algorithm for Markov Decision Processes. The MAXQ-OP task structure of the agent:
For latest WrightEagle binaries used in RoboCup Soccer Simulation 2D competitions, please refer to: https://wrighteagle2d.github.io/
Researchers are encouraged to cite the following selected publications when using WrightEagleBASE/WrightEagle codes/binaries/tools/materials in research.
sudo add-apt-repository ppa:gnurubuntu/rubuntu
sudo apt update
sudo apt install rcssserver rcssmonitor rcsslogplayer
git clone https://github.com/wrighteagle2d/wrighteaglebase
cd wrighteaglebase
make [debug]
for a debug version with debugging information and assertionsmake release
for a release versionA RoboCup Soccer 2D Simulator (as well as a monitor and a logplayer) is needed to run WrightEagleBASE. Please refer to https://wavepackage.wordpress.com/2013/06/07/how-to-install-the-robocup-soccer-server-2d/ and https://wavepackage.wordpress.com/2015/07/22/how-to-install-robocup-2d-simulation-server-on-ubuntu-14-04/ for installation instructions.
After installation,
rcssserver
to start a soccer server which simulates the gamercssmonitor
to start a soccer monitor which is used to display the game./start.sh
to start a team on the left side with default teamname WEBase
./start.sh -t [TEAMNAME]
to start a team on the right side with teamname [TEAMNAME]
After both teams are connected, send a KickOff
command to the server by hitting Ctrl+K
in the monitor to start the game!
void Player::Run
in src/Player.cpp
is the main loop consisting of sensing, decision-making and executingActiveBehavior DecisionTree::Search
in src/DecisionTree.cpp
is the main decision-making loopvoid Behavior*::Plan
in src/Behavior*.cpp
implement planning part of behavioursvoid Behavior*::Execute
in src/Behavior*.cpp
implement executing part of behavioursA good starting point to hack the team is digging into void Behavior*::Plan
functions.