3 import lejos
.hardware
.Button
;
4 import lejos
.hardware
.ev3
.EV3
;
5 import lejos
.hardware
.ev3
.LocalEV3
;
6 import lejos
.hardware
.lcd
.Font
;
7 import lejos
.hardware
.lcd
.TextLCD
;
8 import lejos
.hardware
.motor
.EV3LargeRegulatedMotor
;
9 import lejos
.hardware
.port
.MotorPort
;
10 import lejos
.hardware
.sensor
.EV3ColorSensor
;
11 import lejos
.hardware
.sensor
.EV3TouchSensor
;
12 import lejos
.hardware
.sensor
.EV3UltrasonicSensor
;
13 import lejos
.robotics
.SampleProvider
;
14 import lejos
.robotics
.filter
.ConcatenationFilter
;
15 import lejos
.robotics
.filter
.MeanFilter
;
16 import lejos
.robotics
.subsumption
.Arbitrator
;
17 import lejos
.robotics
.subsumption
.Behavior
;
18 import nl
.ru
.des
.behaviours
.AvoidHighObjectBehaviour
;
19 import nl
.ru
.des
.behaviours
.AvoidLowObjectBehaviour
;
20 import nl
.ru
.des
.behaviours
.ShutdownBehaviour
;
21 import nl
.ru
.des
.behaviours
.StayInFieldBehaviour
;
22 import nl
.ru
.des
.behaviours
.WandererBehaviour
;
23 import nl
.ru
.des
.bluetooth
.BTController
;
24 import nl
.ru
.des
.bluetooth
.ColorMemory
;
26 public class MarsRover
{
27 public static final float SAMPLERATE
= 100;
29 @SuppressWarnings("resource")
30 public static void main(String
[] args
) {
31 EV3 brick
= LocalEV3
.get();
32 TextLCD tlcd
= brick
.getTextLCD(Font
.getSmallFont());
33 LCDPrinter
.startLCDPrinter(tlcd
);
34 System
.setOut(LCDPrinter
.getPrefixedPrintstream("out: ", tlcd
));
35 System
.setErr(LCDPrinter
.getPrefixedPrintstream("err: ", tlcd
));
37 ColorMemory mh
= new ColorMemory();
39 LCDPrinter
.print("Loading keylistener...");
40 brick
.getKey("Escape").addKeyListener(new ButtonListener());
42 BTController btController
;
43 LCDPrinter
.print("Trying to pair");
44 //btController = BTController.getBTMaster("Rover1", mh); // Master
45 btController
= BTController
.getBTSlave(mh
); // Slave
48 LCDPrinter
.print("Robots are connected");
50 LCDPrinter
.print("Loading motors...");
51 EV3LargeRegulatedMotor rightMotor
= new EV3LargeRegulatedMotor(MotorPort
.D
);
52 EV3LargeRegulatedMotor leftMotor
= new EV3LargeRegulatedMotor(MotorPort
.A
);
53 leftMotor
.setSpeed(300);
54 rightMotor
.setSpeed(300);
55 rightMotor
.setAcceleration(1000);
56 leftMotor
.setAcceleration(1000);
58 LCDPrinter
.print("Loading touch sensors...");
59 SampleProvider touch
= new ConcatenationFilter(
60 new EV3TouchSensor(brick
.getPort("S1")).getTouchMode(),
61 new EV3TouchSensor(brick
.getPort("S4")).getTouchMode());
62 LCDPrinter
.print("Loading color sensor...");
63 SampleProvider color
= new EV3ColorSensor(brick
.getPort("S2")).getColorIDMode();
65 LCDPrinter
.print("Loading ultrasone sensor...");
66 SampleProvider ultraSonic
= new MeanFilter(new EV3UltrasonicSensor(brick
.getPort("S3")).getDistanceMode(), 3);
68 LCDPrinter
.print("Initializing behaviours...");
69 Behavior
[] behaviorList
= new Behavior
[] {
70 new WandererBehaviour(color
, leftMotor
, rightMotor
, mh
),
71 new StayInFieldBehaviour(color
, leftMotor
, rightMotor
),
72 new AvoidLowObjectBehaviour(leftMotor
, rightMotor
, touch
),
73 new AvoidHighObjectBehaviour(leftMotor
, rightMotor
, ultraSonic
),
74 new ShutdownBehaviour(mh
)
77 LCDPrinter
.print("Initializing arbitrator...");
78 Arbitrator arbitrator
= new Arbitrator(behaviorList
);
79 LCDPrinter
.print("Press any button for takeoff!");
80 Button
.waitForAnyPress();
82 LCDPrinter
.print("Finish");