Programming an Agent
There are virtually unlimited ways in which you could program an agent. Out-of-process agents communicate with the simulator via TCP, so any language on any platform that supports TCP socket communication is a candidate for your agent.
In order to learn how to programming an agent read the User Manual (especially the 4th and 6th chapters) and once you understand the system, take a look at some of the various libraries and existing agents listed below.
Running an agent as a SimSpark plugin
It is possible to run agents as plugins directly in the simulator process, with no network communication required. An example is given in the SoccerbotBehavior in rcssserver3d/plugin/soccer/agentintegration. This should also be interesting for machine learning and debugging purposes.
More information is in this PDF http://monicareggiani.net/simpar2008/RoboCupSimulators/SIMPAR_simspark.pdf
What kinds of challenges are involved in creating a soccer playing agent?
In order to act in a meaningful way on the playing field the first challenge is to localize your agent on the playing field. To support this the agents perceive their relative position to a set of fixed landmarks such as the flags and goals. Dynamic objects such as other players and the ball are also seen.
If an agent knows where it is and where it wants to be in the near future the next challenge is to walk there. The structure of the humanoid models are sufficiently realistic to make this mobility non trivial. The agent must also recover from falling over.
Another challenge is kicking the ball. As trivial this sounds to a human it is far from trivial for a robot to keep its dynamic balance when kicking and controlling the direction of the ball.
Agents that are able to move and kick the ball need to cooperate and form a team. Only the effective application of strategic and cooperative behaviors forms a successful team.
SimSpark & RoboCup 3D Libraries
Several libraries exist that take care of basic communication tasks and, in many cases, provide utility classes for geometry, localisation, etc...
|Zigorat||home||code||ohloh||C++||Well structured. Extensive documentation.|
|TinMan||home||code||ohloh||.NET (C#/VB.NET/F#/C++)||Extensive documentation and sample code.|
|libbats||home||code||ohloh||C++||Library supplying communication, gait generation, world model, agent model, localization, etc. Contains extensive documentation and sample agents.|
|tsubamegaeshi-base||home||code||C++||Basic library for server communication.|
|robo-cup-soccer3d-framework||home||code||Java||Lots of documentation on wiki. Site in Japanese.|
|RoboLog||home||code||ohloh||C / Prolog|
|Nakkaya||home||Clojure (JVM)||Some sample code demonstrating how to interoperate with the server from Clojure (a LISP for the JVM.)|
Sample Agent Source Code
The following teams have made their agent source code available.
|magmaOffenburg||home||code||Java||2011 RoboCup Entry. Support for multiple robot models.|
|FIIT||home||C++ / Java||Large body of code and documentation. Mostly in Slovakian. Uses scripted XML movement. Simple localisation via triangulation.|
|Little Green Bats||home||code||ohloh||C++||Need bzr to download code.|
|OPU_hana_3D||code||C++||Contains some LittleGreenBats code|
|opuCI_3D||code||C++||2010 RoboCup Entry. Based upon LittleGreenBats 2008.|
|Nao Team Humboldt||home||code||C++||The program is implemented as minimalistic as possible, it can serve as an inspiration for beginners and provide room for own experiments.|
|Delta3D||home_sourceforge||C++||participated in GermanOpen2010 .|
A rudimentary agent implementation in python is available here.
Agent Binaries from Previous Events
If you know of other archives, please extend this table.
|2015||RoboCup||Hefei - China|||
|2014||RoboCup||João Pessoa - Brazil|||
|2013||RoboCup||Eindhoven - Netherlands|||
|2012||RoboCup||Mexico City - Mexico|||
|2011||RoboCup||Istanbul - Turkey||files||||0.2.2 (with patches)||0.6.5 (with patches)|
|2011||IranOpen||Tehran - Iran||files||||0.2.2||0.6.5|
|2009||RoboCup||Graz - Austria||files|||
|2008||RoboCup||Suzhou - China||files||||0.5.6|
|2007||RoboCup||Atlanta - USA||files|
There is also a table of Log Files from previous events.