41a5f902abc6124a8a12ae1ec6d49c775b95d8c0
[des2015.git] / dsl / runtime / src / nl / ru / des / MarsRover.java
1 package nl.ru.des;
2
3 import java.util.LinkedList;
4
5 import lejos.hardware.ev3.EV3;
6 import lejos.hardware.ev3.LocalEV3;
7 import lejos.hardware.lcd.Font;
8 import lejos.hardware.lcd.TextLCD;
9 import lejos.hardware.motor.EV3LargeRegulatedMotor;
10 import lejos.hardware.port.MotorPort;
11 import lejos.hardware.sensor.EV3ColorSensor;
12 import lejos.hardware.sensor.EV3TouchSensor;
13 import lejos.hardware.sensor.EV3UltrasonicSensor;
14 import lejos.robotics.SampleProvider;
15 import lejos.robotics.subsumption.Arbitrator;
16
17 public class MarsRover {
18 public static final float SAMPLERATE = 100;
19 public static LinkedList<Mission> missions = new LinkedList<Mission>();
20
21 @SuppressWarnings("resource")
22 public static void main(String[] args) {
23 EV3 brick = LocalEV3.get();
24 TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
25 LCDPrinter.startLCDPrinter(tlcd);
26 System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
27 System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
28
29 LCDPrinter.print("Loading keylistener...");
30 brick.getKey("Escape").addKeyListener(new ButtonListener());
31
32 LCDPrinter.print("Loading motors...");
33 EV3LargeRegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.D);
34 EV3LargeRegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.A);
35 leftMotor.setSpeed(Constants.speed);
36 rightMotor.setSpeed(Constants.speed);
37 rightMotor.setAcceleration(Constants.acceleration);
38 leftMotor.setAcceleration(Constants.acceleration);
39
40 LCDPrinter.print("Loading touch sensors...");
41 SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
42 SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S4")).getTouchMode();
43
44 LCDPrinter.print("Loading color sensor...");
45 SampleProvider color = new EV3ColorSensor(brick.getPort("S2")).getColorIDMode();
46
47 LCDPrinter.print("Loading ultrasone sensor...");
48 SampleProvider ultraSonic = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
49
50 LCDPrinter.print("Initializing behaviours...");
51 SensorCollector sensors = new SensorCollector(ultraSonic, color, leftTouch, rightTouch);
52
53 LCDPrinter.print("Initializing color collector...");
54 ColorMemory colorMemory = new ColorMemory(color);
55
56 Arbitrator a;
57 missions = Missions.getMissions(sensors, rightMotor, leftMotor, colorMemory);
58 for(Mission m : missions){
59 LCDPrinter.print("Start " + m.name + " mission...");
60 a = new Arbitrator(m.behaviours);
61 m.SetArbitrator(a);
62 a.start();
63 }
64 }
65
66 public static void FinishMission(String missionName){
67 Mission m = missions.stream().filter(o -> o.name.equalsIgnoreCase(missionName)).findFirst().get();
68 if(m != null){
69 m.arbitrator.stop();
70 }
71 }
72 }