Slide 1

Slide 1 text

Lego Mindstorms EV3-Roboter mit Java programmieren eJUG Austria 10. März 2015 Bernhard Löwenstein Institut zur Förderung des IT-Nachwuchses http://www.facebook.com/ifit.org [email protected]

Slide 2

Slide 2 text

Zu meiner Person • Diplomstudium Informatik und Magisterstudium Informatikmanagement – TU Wien • Java Enterprise-Entwickler – Intervista AG Deutschland (bis September 2012) • IT-Trainer und Consultant – Begabtenakademie NÖ, Enterprise Training Center, FH Technikum Wien, javatraining.at, Talentehaus MINT, TU Wien, WIFI NÖ, … • Fachautor – iX, Entwickler Magazin, Java Magazin, JavaSPEKTRUM, … • Konferenzsprecher – IBM DeveloperWorks, JAX, W-JAX, … • Gründer und Obmann – Institut zur Förderung des IT-Nachwuchses (http://www.facebook.com/ifit.org)

Slide 3

Slide 3 text

Agenda • Motivation • Lego Mindstorms EV3 im Überblick • leJOS EV3 im Überblick • leJOS EV3 API • Live-Demo!

Slide 4

Slide 4 text

Motivation • Roboter faszinieren Menschen und sind real angreifbar  stark motivierende Wirkung • direktes Feedback an Lernende  Programmieren und Testen macht Spaß • Hardware und Software im direkten Zusammenspiel erlebbar • Bedeutung von Sensoren für Maschinen demonstrierbar • Robotik als interdisziplinare Herausforderung • skalierbares Medium o Stellgrößen - Umgebungen und Sprachen - Aufgaben o Heterogenität - Alter (ab 5 Jahre) - Begabung - Gender - Lerngeschwindigkeit

Slide 5

Slide 5 text

Lego Mindstorms EV3 im Überblick • Baukastenserie der dänischen Firma Lego • basiert auf Idee von Logo-Erfinder Seymour Papert • EV3 seit 2013 erhältlich, davor NXT 2.0 • Home Edition bei ca. € 320, Education Edition bei ca. € 430 • Hardware o programmierbarer EV3-Stein - ARM9-Prozessor, 64 MB RAM und 16 MB Flashspeicher - USB 2.0-Anschluss (z. B. für WiFi-Dongle) - Micro-SD-Kartenleser - 4 Motoren- und 4 Sensorenanschlüsse o Servomotoren o Farb-, Gyro-, Infrarot- inkl. Fernsteuerung, Tast- und Ultraschallsensoren o unzählige Lego-Technic-Elemente • Software o Linux als Betriebssystem o EV3 Software für ikonische Programmierung o leJOS EV3 für textuelle Programmierung mit Eclipse / Java

Slide 6

Slide 6 text

leJOS EV3 im Überblick • Java API zur Programmierung von Lego Mindstorms EV3 • Open Source, kostenlos erhältlich und nutzbar • Plug-In ermöglicht nahtlose Integration in Eclipse o neues "LeJOS EV3 Project" erstellen  fügt entsprechende Bibliotheken zu Projekt hinzu o Hauptklasse als "LeJOS EV3 Program" ausführen  lädt Programm auf EV3-Stein und startet es (auch Debugging möglich) • Installation o Java SE 7 (wichtig: 32-Bit-Version!) o Eclipse Kepler (wichtig: 32-Bit-Version!) o leJOS EV3 o leJOS EV3 Eclipse Plugin o EV3 SD Card Creator  erzeugt bootbare SD-Karte mit Java SE Embedded 7-Laufzeitumgebung o RNDIS/Ethernet Gadget (nur für USB-Kommunikation erforderlich) • Programmierung o entsprechende Klassen kapseln Hardwarebauteile o Kommunikation via USB, WiFi und Bluetooth möglich

Slide 7

Slide 7 text

leJOS EV3 API – Motoren RegulatedMotor motor = new EV3LargeRegulatedMotor(MotorPort.A); motor.forward(); // ... do something! motor.stop(); RegulatedMotor motor = new EV3MediumRegulatedMotor(MotorPort.A); motor.forward(); // ... do something! motor.stop(); Motor.A.forward(); // ... do something! Motor.A.stop();

Slide 8

Slide 8 text

leJOS EV3 API – Pilot RegulatedMotor motorB = new EV3LargeRegulatedMotor(MotorPort.B); RegulatedMotor motorC = new EV3LargeRegulatedMotor(MotorPort.C); DifferentialPilot pilot = new DifferentialPilot(3.5, 18.0, motorB, motorC); pilot.forward(); // ... do something! pilot.stop();

Slide 9

Slide 9 text

leJOS EV3 API – Sensoren SensorModes sensor = new EV3UltrasonicSensor(SensorPort.S1); SampleProvider distance = sensor.getMode("Distance"); float[] sample = new float[distance.sampleSize()]; distance.fetchSample(sample, 0); // sample[0] contains distance ... do something! EV3UltrasonicSensor sensor = new EV3UltrasonicSensor(SensorPort.S1); float[] sample = new float[1]; sensor.getDistanceMode().fetchSample(sample, 0); // sample[0] contains distance ... do something! • Weitere Sensorklassen o EV3ColorSensor o EV3IRSensor o EV3TouchSensor o …

Slide 10

Slide 10 text

leJOS EV3 API – Filter EV3UltrasonicSensor sensor = new EV3UltrasonicSensor(SensorPort.S1); SampleProvider average = new MeanFilter(sensor.getDistanceMode(), 5); float[] sample = new float[average.sampleSize()]; average.fetchSample(sample, 0); // sample[0] contains average of last 5 distances ... do something! • Weitere Filterklassen o LowPassFilter o MaximumFilter o MedianFilter o MinimumFilter o …

Slide 11

Slide 11 text

leJOS EV3 API – Remote RemoteEV3 ev3 = new RemoteEV3("192.168.0.123"); Audio audio = ev3.getAudio(); audio.systemSound(0); // ... do something! BrickInfo[] bricks = BrickFinder.discover(); for (BrickInfo brick : bricks) { RemoteEV3 ev3 = new RemoteEV3(brick.getIPAddress()); // ... do something! } RemoteEV3 ev3 = new RemoteEV3("192.168.0.123"); RMIRegulatedMotor motor = ev3.createRegulatedMotor("A"); // ... do something! RemoteEV3 ev3 = new RemoteEV3("192.168.0.123"); RMISampleProvider distance = ev3.createSampleProvider( "S1", "lejos.hardware.sensor.EV3IRSensor", "distance" ); // ... do something!

Slide 12

Slide 12 text

leJOS EV3 API – Sonstiges Sound.beep(); LCD.drawString("Hello World!", 0, 0); Button.ENTER.waitForPressAndRelease(); Delay.msDelay(1000);

Slide 13

Slide 13 text

Live-Demo!