1 package nl
.ru
.des
.behaviours
;
3 import java
.util
.Random
;
5 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
6 import lejos
.robotics
.Color
;
7 import lejos
.robotics
.SampleProvider
;
8 import lejos
.robotics
.subsumption
.Behavior
;
10 public class StayInFieldBehaviour
extends ReactiveBehaviour
implements Behavior
{
11 public static final long BACKWARDSTIME
= 250;
12 public static final long TURNTIME
= 500;
14 private EV3LargeRegulatedMotor leftMotor
, rightMotor
;
15 private Random random
;
17 public StayInFieldBehaviour(SampleProvider color
, EV3LargeRegulatedMotor leftMotor
,
18 EV3LargeRegulatedMotor rightMotor
) {
20 this.leftMotor
= leftMotor
;
21 this.rightMotor
= rightMotor
;
22 random
= new Random();
26 public boolean takeControl() {
28 return samples
[0] == Color
.BLACK
;
32 public void action() {
34 int leftacc
= leftMotor
.getAcceleration();
35 int rightacc
= rightMotor
.getAcceleration();
36 leftMotor
.setAcceleration(10000);
37 rightMotor
.setAcceleration(10000);
39 rightMotor
.backward();
40 long time
= System
.currentTimeMillis();
41 while (!suppressed
&& System
.currentTimeMillis() - time
< BACKWARDSTIME
) {
45 if(random
.nextBoolean()){
49 rightMotor
.backward();
52 time
= System
.currentTimeMillis();
53 while (!suppressed
&& System
.currentTimeMillis() - time
< TURNTIME
) {
57 rightMotor
.stop(true);
58 leftMotor
.setAcceleration(leftacc
);
59 rightMotor
.setAcceleration(rightacc
);