package nl.ru.des.behaviours;
-import lejos.hardware.Button;
+import java.util.Random;
+
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.robotics.SampleProvider;
import lejos.robotics.subsumption.Behavior;
-import nl.ru.des.LCDPrinter;
+import lejos.utility.Delay;
public class AvoidHighObjectBehaviour extends ReactiveBehaviour implements Behavior {
private static final long TURNTIME = 250;
private EV3LargeRegulatedMotor leftMotor;
private EV3LargeRegulatedMotor rightMotor;
private float limit;
-
+ private Random random;
+
public AvoidHighObjectBehaviour(EV3LargeRegulatedMotor leftMotor, EV3LargeRegulatedMotor rightMotor,
SampleProvider ultraSone) {
super(ultraSone);
this.leftMotor = leftMotor;
this.rightMotor = rightMotor;
- LCDPrinter.print("Place object in turn radius and press a key");
- Button.waitForAnyPress();
+ Delay.msDelay(500);
fetchSample();
limit = samples[0];
+ random = new Random();
}
@Override
@Override
public void action() {
super.action();
- rightMotor.backward();
- leftMotor.forward();
+ int leftacc = leftMotor.getAcceleration();
+ int rightacc = rightMotor.getAcceleration();
+ leftMotor.setAcceleration(10000);
+ rightMotor.setAcceleration(10000);
+ if(random.nextBoolean()){
+ leftMotor.backward();
+ rightMotor.forward();
+ } else {
+ rightMotor.backward();
+ leftMotor.forward();
+ }
long time = System.currentTimeMillis();
- while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
+ while (!suppressed && System.currentTimeMillis() - time < TURNTIME) {
Thread.yield();
}
leftMotor.stop(true);
rightMotor.stop(true);
+ leftMotor.setAcceleration(leftacc);
+ rightMotor.setAcceleration(rightacc);
}
}
\ No newline at end of file