rcssserver3d-0.6 README

Please see doc/users/user-manual.pdf and NEWS.

*Note* The README is somewhat outdated and should be fixed after the
 competition in Atlanta. The main difference is that the SimSpark
 (app/simspark) simulator is now used for the official competitions. Also,
 SPADES is currently not used anymore. The general directory structure and
 concepts are still applicable though.

General Information

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

Package 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/            A simple monitor that displays agents connected to 
rcssmonitor3d/    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                                          
                                                                     

Known 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 Kögler 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. MPADES: 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.

---------------------------------------------------------------------

Oliver Obst
Last modified: Mo Feb 12 16:27:09 CEST 2007
