when you compile and run the "Controller", you see a scena with robot moving in a closed room
- the robot is equipped with:
    the bump sensor: the block Bump - Boolean - corresponds to hitting an obstacle or not
	twelve sonar sensors for distance measurement:
	block Sonar - double[12] - corresponds to distances in relative directions 0, 30, 60, 90, ... degrees clockwise
	exactly as watch so [6] is backward, [9] left, [3] right
	further with actuator for turning 
	Turn - Integer - corresponds to turning: -1..counterclockwise, 1..clockwise, 0..no turn
	(value represent speed: how many degrees per 100 ms)
	and with straight movement actuator
	Forward - Float - corresponds to speed: 0..stop, >0..forward <0..backward, standard speed: 1.0
	finally, with compass providing 0..6,28 - absolute orientation in radians
	the base tact of sensors and actuators is 10Hz
	
- use arrows for the robot control, (you have to repeat key pressing, not just keep)
  (the original situation can be got back by the key r.)
  notice the influence of the robot movement to the values of sensors typed on the console. 
  (the rolling of the typed output can be stopped by Ctrl-s and released by Ctrl-q)
	
- the robot control is implemented by MAS with indirect communication (Agent-Space)
  The primitives of space which agents can call are the following:
  read(blockname, default)
  write(blockname, value)
  write(blockname, value, validity)
	write(blockname, value, validity, priority)
  and during initialization:
  attachTrigger(mask)  // name pr regex expression
  attachTimer(ms)
  ...
  we define agent by overriding init() and senseSelectAct()
  
Tasks:

- watch the video\behaviour1.avi and modify code of the AgentColide.java
  so it behaves accordingly
  
- watch the video\behaviour2.avi and code the AgentRecover.java
  so it implements the seen behavior
  (you have to adjust also Starter.java to avoid launching the Collide and to launch the Recover instead of it)
  Employ priority and time validity
   
- try to think about the robot behavior which emerges from combination of the two behaviors
  
- adjust Starter.java to launch both the behaviors

- replace the two agents with one which produce the same behavior

advanced task:
- code a new set of agents, which implements that the robot will move 
  alone walls (e.g. via the right hand rule) and get out through doors
  It is important to comprehend that controling robot by commands like 
  "close eyes and go 5 steps forward and two to the left" is not only universal
  but even more difficult than "go until you hit wall than go alone it and when 
  you meet doors go through". The sequence of bahaviors has to be generated 
  from interaction of constantly and permanently operating agents.

homework:  
- when agent gets out of the room and it is too far (e.g. 9 from 11 sensors measure infinity)
  let the robot returns back into the room

