/wrighteaglebase

WrightEagle Base Code for RoboCup Soccer Simulation 2D

Primary LanguageC++BSD 2-Clause "Simplified" LicenseBSD-2-Clause

wrighteaglebase

Build Status

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.

RoboCup 2015 Final Video

Highlights

  • 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: data/results.png

  • WrightEagle/WrightEagleBASE is developed following the MAXQ-OP online planning algorithm for Markov Decision Processes. The MAXQ-OP task structure of the agent:
    data/wrighteagle.png

Binaries

For latest WrightEagle binaries used in RoboCup Soccer Simulation 2D competitions, please refer to: https://wrighteagle2d.github.io/

References

Researchers are encouraged to cite the following selected publications when using WrightEagleBASE/WrightEagle codes/binaries/tools/materials in research.

  • Online planning for large Markov decision processes with hierarchical decomposition, Aijun Bai, Feng Wu, and Xiaoping Chen, ACM Transactions on Intelligent Systems and Technology (ACM TIST),6(4):45:1–45:28, July 2015. [pdf] [appendix] [bib]
  • Towards a Principled Solution to Simulated Robot Soccer, Aijun Bai, Feng Wu, and Xiaoping Chen, RoboCup-2012: Robot Soccer World Cup XVI, Lecture Notes in Artificial Intelligence, Vol. 7500, Springer Verlag, Berlin, 2013. [pdf] [bib] [slides]
  • Online Planning for Large MDPs with MAXQ Decomposition (Extended Abstract), Aijun Bai, Feng Wu, and Xiaoping Chen, Proceedings of the 11th International Conference on Autonomous Agents and Multiagent Systems (AAMAS), Valencia, Spain, June 2012. [pdf] [bib] [code]
  • WrightEagle and UT Austin Villa: RoboCup 2011 Simulation League Champions, Aijun Bai, Xiaoping Chen, Patrick MacAlpine, Daniel Urieli, Samuel Barrett, and Peter Stone, RoboCup-2011: Robot Soccer World Cup XV, Lecture Notes in Artificial Intelligence, Vol. 7416, Springer Verlag, Berlin, 2012. [pdf] [code]
  • Bounded Incremental Real-Time Dynamic Programming, Changjie Fan, and Xiaoping Chen, IEEE Proceedings Frontiers in the Convergence of Bioscience and Information Technologies of 2007 (FBIT), Jeju Island, Korea, 2007. [pdf]
  • Solving Large-Scale and Sparse-Reward DEC-POMDPs with Correlation-MDPs, Feng Wu, and Xiaoping Chen, Proceedings of RoboCup Symposium 2007. Atlanta, America, July 2007. [pdf]

Videos

Install

  • sudo add-apt-repository ppa:gnurubuntu/rubuntu
  • sudo apt update
  • sudo apt install rcssserver rcssmonitor rcsslogplayer
  • git clone https://github.com/wrighteagle2d/wrighteaglebase

Compiling

  • cd wrighteaglebase
  • Run make [debug] for a debug version with debugging information and assertions
  • Run make release for a release version

Usages

A 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,

  • Run rcssserver to start a soccer server which simulates the game
  • Run rcssmonitor to start a soccer monitor which is used to display the game
  • Run ./start.sh to start a team on the left side with default teamname WEBase
  • Run ./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!

Tutorials

Hacks

  • void Player::Run in src/Player.cpp is the main loop consisting of sensing, decision-making and executing
  • ActiveBehavior DecisionTree::Search in src/DecisionTree.cpp is the main decision-making loop
  • void Behavior*::Plan in src/Behavior*.cpp implement planning part of behaviours
  • void Behavior*::Execute in src/Behavior*.cpp implement executing part of behaviours

A good starting point to hack the team is digging into void Behavior*::Plan functions.

Related Project