Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Bernhard Löwenstein on LEGO Mindstorm EV3

Bernhard Löwenstein on LEGO Mindstorm EV3

More Decks by Enterprise Java User Group Austria

Other Decks in Technology

Transcript

  1. 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]
  2. 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)
  3. Agenda • Motivation • Lego Mindstorms EV3 im Überblick •

    leJOS EV3 im Überblick • leJOS EV3 API • Live-Demo!
  4. 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
  5. 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
  6. 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
  7. 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();
  8. 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();
  9. 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 …
  10. 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 …
  11. 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!
  12. leJOS EV3 API – Sonstiges Sound.beep(); LCD.drawString("Hello World!", 0, 0);

    Button.ENTER.waitForPressAndRelease(); Delay.msDelay(1000);