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
;
15 public class MarsRover
{
16 public static final float SAMPLERATE
= 100;
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
));
26 LCDPrinter
.print("Loading keylistener...");
27 brick
.getKey("Escape").addKeyListener(new ButtonListener());
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
);
37 LCDPrinter
.print("Loading touch sensors...");
38 SampleProvider leftTouch
= new EV3TouchSensor(brick
.getPort("S1")).getTouchMode();
39 SampleProvider rightTouch
= new EV3TouchSensor(brick
.getPort("S4")).getTouchMode();
41 LCDPrinter
.print("Loading color sensor...");
42 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S2")).getColorIDMode();
44 LCDPrinter
.print("Loading ultrasone sensor...");
45 SampleProvider ultraSonic
= new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode();
47 LCDPrinter
.print("Initializing behaviours...");
48 SensorCollector sensors
= new SensorCollector(ultraSonic
, color
, leftTouch
, rightTouch
);
50 LCDPrinter
.print("Initializing color collector...");
51 ColorMemory colorMemory
= new ColorMemory(color
);
54 for(Mission m
: Missions
.getMissions(sensors
, rightMotor
, leftMotor
, colorMemory
)){
55 LCDPrinter
.print("Start " + m
.name
+ " mission...");
56 a
= new Arbitrator(m
.behaviours
);