X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=dsl%2Fruntime%2Fsrc%2Fnl%2Fru%2Fdes%2FMarsRover.java;h=41a5f902abc6124a8a12ae1ec6d49c775b95d8c0;hb=d9e24efc7491c75496d20fbfd1e48954605ea301;hp=c2890e4bd651fe10b7a77e2eb9c7078cd2965e72;hpb=e880e959fed2d3506a790d3b361a2ed4aa49a95f;p=des2015.git diff --git a/dsl/runtime/src/nl/ru/des/MarsRover.java b/dsl/runtime/src/nl/ru/des/MarsRover.java index c2890e4..41a5f90 100644 --- a/dsl/runtime/src/nl/ru/des/MarsRover.java +++ b/dsl/runtime/src/nl/ru/des/MarsRover.java @@ -1,5 +1,7 @@ package nl.ru.des; +import java.util.LinkedList; + import lejos.hardware.ev3.EV3; import lejos.hardware.ev3.LocalEV3; import lejos.hardware.lcd.Font; @@ -10,10 +12,11 @@ import lejos.hardware.sensor.EV3ColorSensor; import lejos.hardware.sensor.EV3TouchSensor; import lejos.hardware.sensor.EV3UltrasonicSensor; import lejos.robotics.SampleProvider; -import nl.ru.des.dsl.Constants; +import lejos.robotics.subsumption.Arbitrator; public class MarsRover { public static final float SAMPLERATE = 100; + public static LinkedList missions = new LinkedList(); @SuppressWarnings("resource") public static void main(String[] args) { @@ -29,10 +32,10 @@ public class MarsRover { LCDPrinter.print("Loading motors..."); EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.D); EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.A); - leftMotor.setSpeed(Constants.defaultSpeed); - rightMotor.setSpeed(Constants.defaultSpeed); - rightMotor.setAcceleration(Constants.defaultAcceleration); - leftMotor.setAcceleration(Constants.defaultAcceleration); + leftMotor.setSpeed(Constants.speed); + rightMotor.setSpeed(Constants.speed); + rightMotor.setAcceleration(Constants.acceleration); + leftMotor.setAcceleration(Constants.acceleration); LCDPrinter.print("Loading touch sensors..."); SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode(); @@ -45,6 +48,25 @@ public class MarsRover { SampleProvider ultraSonic = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode(); LCDPrinter.print("Initializing behaviours..."); - Sensors sensors = new Sensors(ultraSonic, color, leftTouch, rightTouch); + SensorCollector sensors = new SensorCollector(ultraSonic, color, leftTouch, rightTouch); + + LCDPrinter.print("Initializing color collector..."); + ColorMemory colorMemory = new ColorMemory(color); + + Arbitrator a; + missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory); + for(Mission m : missions){ + LCDPrinter.print("Start " + m.name + " mission..."); + a = new Arbitrator(m.behaviours); + m.SetArbitrator(a); + a.start(); + } + } + + public static void FinishMission(String missionName){ + Mission m = missions.stream().filter(o -> o.name.equalsIgnoreCase(missionName)).findFirst().get(); + if(m != null){ + m.arbitrator.stop(); + } } } \ No newline at end of file