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
implements Behavior
{
8 private static final long BACKWARDSTIME
= 250;
9 private static final long TURNTIME
= 250;
10 private SampleProvider touch
;
11 private float[] samples
;
12 private boolean avoidDirection
;
13 private boolean suppressed
;
14 private EV3LargeRegulatedMotor leftMotor
, rightMotor
;
16 public AvoidLowObjectBehaviour(EV3LargeRegulatedMotor leftMotor
, EV3LargeRegulatedMotor rightMotor
,
17 SampleProvider touch
) {
19 this.samples
= new float[touch
.sampleSize()];
20 this.leftMotor
= leftMotor
;
21 this.rightMotor
= rightMotor
;
25 public boolean takeControl() {
26 touch
.fetchSample(samples
, 0);
28 avoidDirection
= false;
32 avoidDirection
= true;
39 public void action() {
41 int leftacc
= leftMotor
.getAcceleration();
42 int rightacc
= rightMotor
.getAcceleration();
43 leftMotor
.setAcceleration(10000);
44 rightMotor
.setAcceleration(10000);
46 rightMotor
.backward();
47 long time
= System
.currentTimeMillis();
48 while (!suppressed
&& System
.currentTimeMillis() - time
> BACKWARDSTIME
) {
57 rightMotor
.backward();
59 time
= System
.currentTimeMillis();
60 while (!suppressed
&& System
.currentTimeMillis() - time
> TURNTIME
) {
65 leftMotor
.setAcceleration(leftacc
);
66 leftMotor
.setAcceleration(rightacc
);
70 public void suppress() {