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

Bernhard Löwenstein on LEGO Mindstorm EV3

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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);