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