import lejos.robotics.SampleProvider;
import lejos.robotics.subsumption.Behavior;
-public class AvoidLowObjectBehaviour implements Behavior {
+public class AvoidLowObjectBehaviour extends ReactiveBehaviour implements Behavior {
private static final long BACKWARDSTIME = 250;
- private static final long TURNTIME = 250;
- private SampleProvider touch;
- private float[] samples;
+ private static final long TURNTIME = 500;
private boolean avoidDirection;
- private boolean suppressed;
private EV3LargeRegulatedMotor leftMotor, rightMotor;
public AvoidLowObjectBehaviour(EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor,
SampleProvider touch) {
- this.touch = touch;
+ super(touch);
this.samples = new float[touch.sampleSize()];
this.leftMotor = leftMotor;
this.rightMotor = rightMotor;
@Override
public boolean takeControl() {
- touch.fetchSample(samples, 0);
+ fetchSample();
if(samples[0]>0){
avoidDirection = false;
return true;
@Override
public void action() {
- suppressed = false;
int leftacc = leftMotor.getAcceleration();
int rightacc = rightMotor.getAcceleration();
leftMotor.setAcceleration(10000);
leftMotor.backward();
rightMotor.backward();
long time = System.currentTimeMillis();
- while (!suppressed && System.currentTimeMillis() - time > BACKWARDSTIME) {
+ while (!suppressed && System.currentTimeMillis() - time < BACKWARDSTIME) {
Thread.yield();
}
rightMotor.backward();
}
time = System.currentTimeMillis();
- while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
+ while (!suppressed && System.currentTimeMillis() - time < TURNTIME) {
Thread.yield();
}
leftMotor.stop(true);
leftMotor.setAcceleration(leftacc);
leftMotor.setAcceleration(rightacc);
}
-
- @Override
- public void suppress() {
- suppressed = true;
- }
}
\ No newline at end of file