3 import java
.util
.LinkedList
;
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
;
17 public class MarsRover
{
18 public static final float SAMPLERATE
= 100;
19 public static Arbitrator arb
;
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
));
29 LCDPrinter
.print("Loading keylistener...");
30 brick
.getKey("Escape").addKeyListener(new ButtonListener());
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
);
40 LCDPrinter
.print("Loading touch sensors...");
41 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
42 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S4")).getTouchMode();
44 LCDPrinter
.print("Loading color sensor...");
45 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S2")).getColorIDMode();
47 LCDPrinter
.print("Loading ultrasone sensor...");
48 SampleProvider ultraSonic
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
50 LCDPrinter
.print("Initializing behaviours...");
51 SensorCollector sensors
= new SensorCollector(ultraSonic
, color
, leftTouch
, rightTouch
);
53 LCDPrinter
.print("Initializing color collector...");
54 ColorMemory colorMemory
= new ColorMemory(color
);
57 LinkedList
<Mission
> 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
);