package nl.ru.des;
+import java.util.LinkedList;
+
import lejos.hardware.ev3.EV3;
import lejos.hardware.ev3.LocalEV3;
import lejos.hardware.lcd.Font;
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<Mission> missions = new LinkedList<Mission>();
@SuppressWarnings("resource")
public static void main(String[] args) {
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();
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