3 import lejos
.robotics
.RegulatedMotor
;
4 import lejos
.robotics
.subsumption
.Behavior
;
5 import nl
.ru
.des
.sensors
.SensorCollector
;
7 public abstract class BasicBehaviour
implements Behavior
{
8 protected enum SuppressedState
{
9 IDLE
, IN_ACTION
, SUPPRESSED
;
11 protected SuppressedState suppressed
;
12 protected RegulatedMotor leftMotor
, rightMotor
, measMotor
;
13 protected SensorCollector sensors
;
16 public BasicBehaviour(SensorCollector sensors
, RegulatedMotor leftMotor
,
17 RegulatedMotor rightMotor
, RegulatedMotor measMotor
){
18 this.leftMotor
= leftMotor
;
19 this.rightMotor
= rightMotor
;
20 this.measMotor
= measMotor
;
21 this.sensors
= sensors
;
24 protected void reset(){
25 rightMotor
.setSpeed(Constants
.speed
);
26 rightMotor
.setAcceleration(Constants
.acceleration
);
27 leftMotor
.setSpeed(Constants
.speed
);
28 leftMotor
.setAcceleration(Constants
.acceleration
);
29 rightMotor
.stop(true);
31 suppressed
= SuppressedState
.IDLE
;
34 protected void measure(){
36 while(!measMotor
.isStalled()){
40 while(!measMotor
.isStalled()){
47 protected void rightTurn(int angle
){
51 rightMotor
.backward();
53 while(suppressed
!= SuppressedState
.SUPPRESSED
&& Math
.abs(sensors
.gyro()) < angle
){
56 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
59 protected void leftTurn(int angle
){
65 while(suppressed
!= SuppressedState
.SUPPRESSED
&& Math
.abs(sensors
.gyro()) < angle
){
68 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
72 public void action() {
73 suppressed
= SuppressedState
.IN_ACTION
;
77 public void suppress() {
78 suppressed
= SuppressedState
.SUPPRESSED
;
81 @Override public boolean takeControl(){