1 package nl
.ru
.des
.behaviours
;
3 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
4 import lejos
.robotics
.SampleProvider
;
5 import lejos
.robotics
.subsumption
.Behavior
;
7 public class AvoidLowObjectBehaviour
extends ReactiveBehaviour
implements Behavior
{
8 private static final long BACKWARDSTIME
= 250;
9 private static final long TURNTIME
= 500;
10 private boolean avoidDirection
;
11 private EV3LargeRegulatedMotor leftMotor
, rightMotor
;
13 public AvoidLowObjectBehaviour(EV3LargeRegulatedMotor leftMotor
, EV3LargeRegulatedMotor rightMotor
,
14 SampleProvider touch
) {
16 this.samples
= new float[touch
.sampleSize()];
17 this.leftMotor
= leftMotor
;
18 this.rightMotor
= rightMotor
;
22 public boolean takeControl() {
25 avoidDirection
= false;
29 avoidDirection
= true;
36 public void action() {
37 int leftacc
= leftMotor
.getAcceleration();
38 int rightacc
= rightMotor
.getAcceleration();
39 leftMotor
.setAcceleration(10000);
40 rightMotor
.setAcceleration(10000);
42 rightMotor
.backward();
43 long time
= System
.currentTimeMillis();
44 while (!suppressed
&& System
.currentTimeMillis() - time
< BACKWARDSTIME
) {
53 rightMotor
.backward();
55 time
= System
.currentTimeMillis();
56 while (!suppressed
&& System
.currentTimeMillis() - time
< TURNTIME
) {
61 leftMotor
.setAcceleration(leftacc
);
62 leftMotor
.setAcceleration(rightacc
);