simspark  0.3.7
Loading...
Searching...
No Matches
Implementation

rcssserver3D is a physical simulation system. The primary purpose of this system is to provide a generic simulator for different kinds of simulations. In these simulations, agents can participate as external processes. To create specific simulations, important parts of the simulator are build as plugins that can be replaced for different simulations. The plugins can be exchanged at runtime. Things designed as plugins are for example parts of agents: agents can be using different actuators or perceptors. Other plugins are responsible for the simulator protocol or also for the rules of specific simulations.
Simulations for this simulator can be constructed to a great part by changing text files with no further recompilation. The soccer simulation makes not yet use of this feature, but changes towards this are already planned.

The simulation system was created with a specific simulation in mind, that is a 3D physical soccer simulation for RoboCup Simulation league. To this end, this distribution contains a set of plugins for RoboCup Soccer Simulation League. The soccer simulator can be found in the ./app/simulator/ subdirectory. The basic simulator concept was presented on the 2003 RoboCup Symposium in Padova [1].

For scientific simulations, it is useful to be able to keep track of the time used by different agents for thinking. A special plugin makes it possible to use the simulator together with SPADES, a middleware system for agent based simulations. SPADES was presented on the 2002 RoboCup Symposium in Fukuoka [2] (SPADES itself is not part of this package).

If you installed rcssserver3D-0.2.x or 0.1 before, make sure to clean the ~/.rcssserver3D/ directory prior to using the new version. Also better remove the old installed libraries in /usr/local/lib/rcssserver3D manually. Sorry for this inconvenience.

Overview

The different parts of this package are organized in different directories as follows:

./app/ Different applications. These applications are mostly tests of different subsystems of the simulator. Additionaly, there is
./app/simulator/ The soccer simulator.
./app/rcssmonitor3d/ A simple monitor that displays agents connected to the simulator.
./app/agenttest/ A 'hello world' agent (does nothing very useful, kick and run soccer).
./lib/ The main simulator parts as libraries. The simulator consists of these parts:
./lib/salt/ This library provides a collection of useful general purpose classes. It contains mostly math-and system-related functionality, such as a 3D Vector class, a Matrix class, a file I/O wrapper and an abstraction for loading/accessing shared libraries.
./lib/zeitgeist/ The Zeitgeist library provides two major features. It implements a mechanism to work with class objects in C++. A class object is just a factory of class instances. In addition to this mechanism, it also implements an object hierarchy. This hierarchy is essentially a virtual file system, where the 'directories' and 'files' are instances of C++ classes. These two concepts are quite intertwined with each other, as class objects can also live inside the object hierarchy. Objects within the hierarchy are identified with a unique name. On top of these two features, the Zeitgeist library also provides three very important 'built-in' services. Each basic service is usually represented by a 'server' class in our terminology. An instance of such a class provides the service to other parts of the system. The three services built into the Zeitgeist library are the LogServer, the FileServer, and the ScriptServer.
./lib/oxygen/ Oxygen is the actual engine which is used for the simulation. It is implemented on top of the Zeitgeist framework and provides a multitude of different services to a client application. It handles the physics aspect (PhysicsServer), the geometry aspect (PhysicsServer) and the agent aspect (AgentAspect, ControlAspect). Another important part of this library is performing the world simulation (SceneServer).
./lib/kerosin/ Kerosin handles the visualization aspect (ImageServer, FontServer, OpenGLServer, TextureServer, MaterialServer). The classes in the library also provide basic interfaces for receiving input in interactive simulations (InputServer) and for playing sounds (SoundServer). Currently, it is not used for the simulator.
./plugins/ directory containing plugins to extend the simulator

Problems

  • If during linking the compiler complains that it cannot find -lslang, set a symbolic link /usr/lib/libslang.so linking to /usr/lib/libslang.so.1.

Literature

[1] Marco Koegler and Oliver Obst. Simulation League: The Next Generation.
    In Daniel Polani, Andrea Bonarini, Brett Browning, and Kazuo
    Yoshida, editors, RoboCup 2003: Robot Soccer World Cup VII,
    Lecture Notes in Artificial Intelligence, Springer, Berlin,
    Heidelberg, New York, 2004.

[2] Patrick Riley. SPADES: Middleware for Parallel Agent Discrete
    Event Simulation. In Gal A. Kaminka, Pedro U. Lima, and Raul
    Rojas, editors, RoboCup-2002: Robot Soccer World Cup VI, Lecture
    Notes in Artificial Intelligence, pp. 162-178, Springer Verlag,
    Berlin, 2003.
Date
Wed May 12 CEST 2004 Last modified