From Simspark
Jump to: navigation, search


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.

Control and data flow of the simulator

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

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...

Library Language(s) Features/Comments
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.
AUT home code
tsubamegaeshi-base home code C++ Basic library for server communication.
UIAI code
robo-cup-soccer3d-framework home code Java Lots of documentation on wiki. Site in Japanese.
JZUbase home C++
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.)
node-simspark home code JavaScript (Node) Basic node.js library for server communication.

Sample Agent Source Code

The following teams have made their agent source code available.

Team Language(s) Features/Comments
Apollo3D home C++
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.

Year Event Location Files Mirrors simspark rcssserver3d
2015 RoboCup Hefei - China [1]
2014 RoboCup João Pessoa - Brazil [1]
2013 RoboCup Eindhoven - Netherlands [1]
2012 RoboCup Mexico City - Mexico [1]
2011 RoboCup Istanbul - Turkey files [1] 0.2.2 (with patches) 0.6.5 (with patches)
2011 IranOpen Tehran - Iran files [1] 0.2.2 0.6.5
2010 RoboCup Singapore files [1] 0.2.1 0.6.4
2009 RoboCup Graz - Austria files [1]
2008 RoboCup Suzhou - China files [1] 0.5.6
2007 RoboCup Atlanta - USA files

There is also a table of Log Files from previous events.

Personal tools