1 package nl
.ru
.des
.behaviours
;
3 import java
.util
.Random
;
5 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
6 import lejos
.robotics
.SampleProvider
;
7 import lejos
.robotics
.subsumption
.Behavior
;
8 import lejos
.utility
.Delay
;
10 public class AvoidHighObjectBehaviour
extends ReactiveBehaviour
implements Behavior
{
11 private static final long TURNTIME
= 250;
13 private EV3LargeRegulatedMotor leftMotor
;
14 private EV3LargeRegulatedMotor rightMotor
;
16 private Random random
;
18 public AvoidHighObjectBehaviour(EV3LargeRegulatedMotor leftMotor
, EV3LargeRegulatedMotor rightMotor
,
19 SampleProvider ultraSone
) {
21 this.leftMotor
= leftMotor
;
22 this.rightMotor
= rightMotor
;
26 random
= new Random();
30 public boolean takeControl() {
32 return samples
[0] < limit
;
36 public void action() {
38 int leftacc
= leftMotor
.getAcceleration();
39 int rightacc
= rightMotor
.getAcceleration();
40 leftMotor
.setAcceleration(10000);
41 rightMotor
.setAcceleration(10000);
42 if(random
.nextBoolean()){
46 rightMotor
.backward();
49 long time
= System
.currentTimeMillis();
50 while (!suppressed
&& System
.currentTimeMillis() - time
< TURNTIME
) {
54 rightMotor
.stop(true);
55 leftMotor
.setAcceleration(leftacc
);
56 rightMotor
.setAcceleration(rightacc
);