push
[des2015.git] / dsl / runtime / src / nl / ru / des / Marster.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.motor.EV3MediumRegulatedMotor;
11 import lejos.hardware.port.MotorPort;
12 import lejos.hardware.sensor.EV3ColorSensor;
13 import lejos.hardware.sensor.EV3GyroSensor;
14 import lejos.hardware.sensor.EV3TouchSensor;
15 import lejos.hardware.sensor.EV3UltrasonicSensor;
16 import lejos.hardware.sensor.NXTLightSensor;
17 import lejos.robotics.RegulatedMotor;
18 import lejos.robotics.SampleProvider;
19 import lejos.robotics.subsumption.Arbitrator;
20 import nl.ru.des.sensors.BTController;
21 import nl.ru.des.sensors.RemoteSensors;
22 import nl.ru.des.sensors.SensorCollector;
23
24 public class Marster {
25 public static Arbitrator arb;
26
27 @SuppressWarnings("resource")
28 public static void main(String[] args) {
29 EV3 brick = LocalEV3.get();
30 TextLCD tlcd = brick.getTextLCD(Font.getSmallFont());
31 LCDPrinter.startLCDPrinter(tlcd);
32 System.setOut(LCDPrinter.getPrefixedPrintstream("out: ", tlcd));
33 System.setErr(LCDPrinter.getPrefixedPrintstream("err: ", tlcd));
34
35 LCDPrinter.print("Loading keylistener...");
36 brick.getKey("Escape").addKeyListener(new ButtonListener());
37
38 if(brick.getName().equalsIgnoreCase("Rover6") || brick.getName().equalsIgnoreCase("Rover8")){
39 LCDPrinter.print("Starting as a slave...");
40 LCDPrinter.print("My name is " + brick.getName());
41 LCDPrinter.print("Loading touch sensors...");
42 SampleProvider leftTouch = new EV3TouchSensor(brick.getPort("S1")).getTouchMode();
43 SampleProvider rightTouch = new EV3TouchSensor(brick.getPort("S2")).getTouchMode();
44
45 LCDPrinter.print("Loading ultrasone sensor...");
46 SampleProvider frontUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
47
48 LCDPrinter.print("Loading color sensors...");
49 SampleProvider color = new EV3ColorSensor(brick.getPort("S4")).getColorIDMode();
50 RemoteSensors rs = new RemoteSensors(leftTouch, rightTouch, frontUltra, color);
51
52 BTController.startSlave();
53 rs.start(BTController.buf);
54 } else {
55 String slave = brick.getName().equalsIgnoreCase("Rover5") ? "Rover6" : "Rover8";
56 LCDPrinter.print("Starting as as master...");
57 LCDPrinter.print("My name is " + brick.getName());
58 LCDPrinter.print("Going to connect to: " + slave);
59 LCDPrinter.print("Loading motors...");
60 RegulatedMotor rightMotor = new EV3LargeRegulatedMotor(MotorPort.A);
61 RegulatedMotor leftMotor = new EV3LargeRegulatedMotor(MotorPort.B);
62 RegulatedMotor measMotor = new EV3MediumRegulatedMotor(MotorPort.C);
63 leftMotor.setSpeed(Constants.speed);
64 rightMotor.setSpeed(Constants.speed);
65 measMotor.setSpeed(100);
66 rightMotor.setAcceleration(Constants.acceleration);
67 leftMotor.setAcceleration(Constants.acceleration);
68 measMotor.setAcceleration(100);
69
70 LCDPrinter.print("Loading touch sensors...");
71 SampleProvider leftLight = new NXTLightSensor(brick.getPort("S1")).getRedMode();
72 SampleProvider rightLight = new NXTLightSensor(brick.getPort("S2")).getRedMode();
73
74 LCDPrinter.print("Loading ultrasone sensor...");
75 SampleProvider backUltra = new EV3UltrasonicSensor(brick.getPort("S3")).getDistanceMode();
76
77 LCDPrinter.print("Loading gyro sensor...");
78 SampleProvider gyro = new EV3GyroSensor(brick.getPort("S4")).getAngleAndRateMode();
79
80 SensorCollector sc = new SensorCollector(backUltra, leftLight, rightLight, gyro);
81 BTController.startMaster(slave, sc);
82 LCDPrinter.print("Finished loading");
83 LinkedList<Mission> missions = Missions.getMissions(sc, rightMotor, leftMotor, measMotor);
84 for(Mission m : missions){
85 LCDPrinter.print("Start " + m.name + " mission...");
86 arb = new Arbitrator(m.behaviours);
87 arb.start();
88 }
89 }
90 }
91 }