Optional LEJOS Lab

Use the LEJOS Navigator and Behavior interfaces to program a LEGO RCX robot with 
differential steering (i.e., can turn in place) to perform according to a subsumption 
behavior architecture that has four simple behaviors used to navigate a 1 meter 
square area.

The lowest priority behavior will cause the robot to randomly move from one place 
to another within the 1 meter square. At any time while the robot is moving to a 
point, if one of its bumpers hits an object it should react by backing up 10 
centimeters. After 25 seconds elapse, the robot should return to the point of origin 
and stop.

The Behavior descriptions are as follows:

Condition               Action                  Suppress                Priority
Always                  Move to random          Stop & update           Lowest
                        points inside square    coordinates
Left Bump               Back up 10 cm.          Stop                    Intermediate
Right Bump              Back up 10 cm.          Stop                    Intermediate
25 seconds elapsed      Seek point of origin    Stop                    Highest

You should use either the TimingNavigator or RotationNavigator class in your solution. 
In the latter case you will need to attach a rotation sensor to each motor and do the 
appropriate calibration. You will also need to use a timer.