lejos.robotics.subsumption
Interface Behavior


public interface Behavior

The Behavior interface represents an object embodying a specific behavior belonging to a robot. Each behavior must define three things:
1) The circumstances to make this behavior seize control of the robot. e.g. When the touch sensor determines the robot has collided with an object.
2) The action to perform when this behavior takes control. e.g. Back up and turn.
3) The tasks to perform when another behavior has seized control from this behavior, including interrupting it. S e.g. Stop the current movement and update coordinates.
These are represented by defining the methods takeControl(), action(), and suppress() respectively.
A behavior control system has one or more Behavior objects. When you have defined these objects, create an array of them and use that array to initialize an Arbitrator object.

Version:
0.7 28 Dec-2008
See Also:
Arbitrator

Method Summary
 void action()
          The code in action() represents the tasks the robot performs when this behavior becomes active.
 void suppress()
          The code in suppress() should stop the current behavior.
 boolean takeControl()
          The boolean return indicates if this behavior should seize control of the robot.
 

Method Detail

takeControl

boolean takeControl()
The boolean return indicates if this behavior should seize control of the robot. For example, a robot that reacts if a touch sensor is pressed:
public boolean takeControl() {
return touch.isPressed();
}

Returns:
boolean Indicates if this Behavior should seize control.

action

void action()
The code in action() represents the tasks the robot performs when this behavior becomes active. It can be as complex as navigating around a room, or as simple as playing a tune.
The contract for implementing this method is:
Any action can be started in this method. If the action is complete, the method should return. It must return when the suppress() method is called, even if it runs a separate thread.


suppress

void suppress()
The code in suppress() should stop the current behavior. This can include stopping motors, or even calling methods to update internal data (such as navigational coordinates).
The contract for implementing this method is:
This method will stop the action running in this Behavior class and cause action() to exit promptly. If action() is not running, this method should leave the robot in a safe state for any other Behavior to run.