This file describes how to set up the (new) simulation environment for
the EyeBot. The current version is a _very_ preliminary, possible buggy
one.

The Linux system on which this program has been developed, is running
GNU/Debian 3.0 (testing). Unfortunately we were not yet able to
properly compile the program under the current Red Hat distribution
(7.2). So, best (if any :-)) results will probably be made with a
Debian system.


What you need to compile user programs:
- GCC ( should work with >= 2.95.x, but not with >= 3.0 )

To compile the simulator I use the following libraries and versions,
other version may work as well:
- Coin (1.0.1) (www.coin3d.org)
- SoQt (I got it from the cvs
	(:pserver:cvs@cvs.coin3d.org:/export/cvsroot, module SoQt,
	password is "cvs" (I guess)))
- GNU CommonC++ (1.9) (www.gnu.org, is available as Debian package)
	needs libxml2 and Linux-Threads (pthreads), this should be
	part of most distributions
- Qt (2.3.1) (www.trolltech.com, is available as Debian package)
	has to be compiled with OpenGL-support like QGLWidget, the
	Debian package is libqt2-gl and libqt-gl-dev
- GNU zlib (standard library)
- GCC (2.95.4) (www.gnu.org, bet there is package...)

To make your own VRML-model for the robots, you have to make a VRML
1.0 or OpenInventor file. For example the program ac3d (www.ac3d.org)
could be used for that. (this is not supported yet)


INSTALLATION:
(if you have an executable of the simulator (sim), you can skip steps 1-3)

1) untar the sources (sim.tgz)

2) Since there is no configure script available, you probably have to
   modify the Makefile by hand to set up some paths like the COIN and
   SOQT path.

3) make sim

4) edit the simulation files:
	- test.sim : the description of the simulation
	- eyebot.p : the description of the eyebot configuration
	- test.wld/test.maz : the description of the environment/world

5) compile your robi program with the gccsim script
   e.g.: > gccsim test.c -o dummy.so

6) add the current directory (".") to the environment variable
   LD_LIBRARY_PATH (to enable the simulator to find the program, here
   "dummy.so")

7) start the simulation with the path to the simulation description
   file as the parameter (e.g.: > ./sim test.sim)

8) stop the simulation by pressing CTRL-C in the console window


TODO:
+ radio communication simulation
- proper user interface
- simulation of a dynamic passive object (ball)
- selection of robis inside the gui
- implementation of a proper console (with key-input)
- build a proper VRML model for the robots
- improve the dynamic model by introducing speed ramps
+ implementing a proper collision handling, where the robots "touch" the
	obstacle, instead of stopping at their last valid position
- implement cpu speed factor measurement and find better cpu time clock
- sensor error model (%) [0..1]
- image error model (%) [0..1] [salt/pepper] 
- implement new Camera Interface
+ function property table (timing, timer-irq, ...)

TODO (but won't be done):
- infrared and bumper sensors
- implementation of process instead of thread based simulation
	-> distributed simulation


BUGS:
- a lot (especially everywhere where you find the string "//BUG:" in the
	source code)
- there seems to be a bug in Qt/SoQt that leads to weird error messages
	on the console, telling something about QTimer or the display simply
	does not react anymore but the simulation core is actually still
	running