X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FBasicBehaviour.java;h=455cbe23dc03729faee920b9eb458f9d903e8ea7;hb=ac44621696b120a5aec35edff6b7181a4aafa383;hp=9b7742b59211aaea353305b9b4b59069edaf0b57;hpb=16aef029cf49685c60c422d36b54d459355e832c;p=des2015.git diff --git a/dsl/runtime/src/nl/ru/des/BasicBehaviour.java b/dsl/runtime/src/nl/ru/des/BasicBehaviour.java index 9b7742b..455cbe2 100644 --- a/dsl/runtime/src/nl/ru/des/BasicBehaviour.java +++ b/dsl/runtime/src/nl/ru/des/BasicBehaviour.java @@ -5,7 +5,8 @@ import lejos.robotics.subsumption.Behavior; import nl.ru.des.sensors.SensorCollector; public abstract class BasicBehaviour implements Behavior{ - protected int suppressed; + protected boolean suppressed; + protected boolean finished; protected RegulatedMotor leftMotor, rightMotor, measMotor; protected SensorCollector sensors; protected long time; @@ -16,53 +17,138 @@ public abstract class BasicBehaviour implements Behavior{ this.rightMotor = rightMotor; this.measMotor = measMotor; this.sensors = sensors; + suppressed = false; + finished = true; } protected void reset(){ + finished = true; rightMotor.setSpeed(Constants.speed); rightMotor.setAcceleration(Constants.acceleration); leftMotor.setSpeed(Constants.speed); leftMotor.setAcceleration(Constants.acceleration); rightMotor.stop(true); leftMotor.stop(true); - suppressed = 0; + measMotor.stop(true); } - protected void rockMeasure(){ + protected void measureLake(){ + long time = System.currentTimeMillis(); + rightMotor.backward(); + leftMotor.backward(); + while(System.currentTimeMillis()-time < 250){ + Thread.yield(); + } + rightMotor.stop(true); + leftMotor.stop(true); + rightMotor.setSpeed(25); + leftMotor.setSpeed(25); + if(sensors.leftLight() && !sensors.rightLight()){ + leftTurn(15); + } else if (sensors.rightLight() && !sensors.leftLight()){ + rightTurn(15); + } + + rightMotor.stop(true); + leftMotor.stop(true); + + measMotor.backward(); + while(!suppressed && !measMotor.isStalled()){ + Thread.yield(); + } + measMotor.forward(); + while(!suppressed && !measMotor.isStalled()){ + Thread.yield(); + } + measMotor.stop(true); + + turnRandom(30, 45); } - protected void lakeMeasure(){ + protected void measureRock(){ + long time = System.currentTimeMillis(); + rightMotor.forward(); + leftMotor.forward(); + while(System.currentTimeMillis()-time<1500){ + Thread.yield(); + } + + rightMotor.stop(true); + leftMotor.stop(true); + + measMotor.backward(); + while(!suppressed && !measMotor.isStalled()){ + Thread.yield(); + } + measMotor.forward(); + while(!suppressed && !measMotor.isStalled()){ + Thread.yield(); + } + measMotor.stop(true); + turnRandom(30, 45); + } + + protected void turnRandom(int from, int to){ + int degrees = Marster.random.nextInt(to-from)+from; + if(Marster.random.nextBoolean()){ + rightTurn(degrees); + } else { + leftTurn(degrees); + } } protected void rightTurn(int angle){ - float init = sensors.gyro(); + rightMotor.stop(true); + leftMotor.stop(); + sensors.resetGyro(); rightMotor.backward(); leftMotor.forward(); - - while(suppressed != 2 && sensors.gyro()-90>init){ + while(!suppressed && Math.abs(sensors.gyro()) < angle){ Thread.yield(); } + rightMotor.stop(true); + leftMotor.stop(true); + LCDPrinter.print(Float.toString(sensors.gyro())); } protected void leftTurn(int angle){ - float init = sensors.gyro(); + rightMotor.stop(true); + leftMotor.stop(); + sensors.resetGyro(); leftMotor.backward(); rightMotor.forward(); - while(suppressed != 2 && sensors.gyro()+90