Lego Mindstorms EV3 Education Kit

Typ, Ausstattung, Fähigkeiten, kurze Beschreibung

Das EV3 ist ein Set der Lego Mindstorms-Reihe. Durch das Lego-Baukastensystem lässt sich eine sehr vielfältige Auswahl an verschiedensten Robotern zusammenstellen. Programmiert wird dieser Roboter über den EV3-Baustein und die Lego Mindstorm Software (LMS) via Blocksprache oder über Java for Lego Mindstorms (LeJOS).

Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

 

  • ARM 9 Prozessor – TI Sitara AM1808 (ARM926EJ-S core) 300 MHz
  • 16 MB Flash-Speicher
  • mit einer SD-Karte erweiterbar (Micro SDHC bis 32 GB)
  • 64 MB Arbeitsspeicher – Ram
  • Unterstützung eines USB-Host-Mode USB 1.1 bis zu 12 Mbit/s und Anschluss von WLAN-Dongles oder USB 2.0 bis 480 Mbit/s
  • Bluetooth 2.1
  • Monochromes LCD, bzw. Schwarz-Weiß Matrix-Display (178 × 128 Pixel)
  • Bedientasten des EV3-Steins (vier Richtungs-, eine Auswahl-, eine Einschalt-/Ausschalttaste)
  • ein 50cm, zwei 35cm und vier 25 cm lange Anschluss-Kabel für die Motoren und Sensoren mit Stecker vom Typ RJ12
  • Sechs AA-Batterien oder ein wieder aufladbarer Akku mit 2050 mAh, der Ladevorgang des Akkus dauert im Allgemeinen drei bis vier Stunden und erfolgt über ein 10 V Gleichstromnetzteil, die sechs AA-Batterien wiegen insgesamt mehr als der Akku und mit montiertem Akku ist der EV3 Stein größer als mit eingelegten AA-Batterien
  • Anschlussbuchsen für vier Sensoren und vier für Motoren
    • Anschluss 1: Berührungssensor
    • Anschluss 2: Kreiselsensor/Temperatursensor
    • Anschluss 3: Farbsensor
    • Anschluss 4: Ultraschallsensor/Infrarotsensor
    • Anschluss A: Mittlerer Motor
    • Anschluss B & C: Zwei Große Motoren
  • 2 x große Servomotoren: 20 N/cm Drehmoment, 40 N/cm Kippmoment (langsamer aber stärker als der kleine Servomotor) und ein Winkelsensor mit einer Präzision von unter 1 Grad. Höchstgeschwindigkeit beträgt 160 bzw. 170 U/min
  • 1 x mittlerer Servomotor: 8 N/cm Drehmoment, 12 N/cmm Kippmoment, Höchstgeschwindigkeit beträgt 240 bzw. 250 U/min
  • 1 x Ultraschallsensor: verwendet reflektierte Schallwellen, um die Distanz zwischen dem Sensor und Objekten zu messen, die sich vor dem Sensor befinden. Diese Messung wird vorgenommen, indem hochfrequente Schallwellen ausgestrahlt werden und indem dann die Zeit gemessen wird bis die reflektierte Schallwelle wieder beim Sensor eintritt. Die Distanz zu einem Objekt kann in Zoll oder Zentimeter gemessen werden. Bei Verwendung der Maßeinheit „Zentimeter“ (cm) liegt die erkennbare Distanz zwischen 3 und 250 cm (bei einer Messgenauigkeit von +/- 1 cm). Bei Verwendung der Maßeinheit „Zoll“ liegt die messbare Distanz zwischen 1 und 99 Zoll (bei einer Messgenauigkeit von +/- 0,394 Zoll). Der Sensor kann auch einfach als Sender für Ultraschallwellen verwendet werden, um einem anderen Sensor Informationen zu schicken. Ebenso kann er auch nur als Empfänger eingesetzt werden, um Nachrichten zu empfangen, welche von einem anderen Ultraschallsensor ausgesendet wurden. Der Sensor besitzt eingebaute LEDs, welche mit einem Leuchten anzeigen, wenn gesendet wird oder Blinken, wenn der Sensor empfängt.
  • 1 x Farbsensor bzw. Lichtsensor: der Sensor kann in drei verschiedenen Modi verwendet werden: Farbmodus, Modus Stärke des reflektierten Lichts und Modus Stärke des Umgebungslichts. Im Farbmodus erkennt der Farbsensor sieben Farben: Schwarz, Blau, Grün, Gelb, Rot, Weiß, Braun sowie keine Farbe. Der Farbsensor arbeitet mit einer Erfassungsrate von 1 kHz. Im Modus Stärke des reflektierten Lichts misst der Farbsensor die Stärke des reflektierten Lichts, das von einer Rotlichtlampe ausgestrahlt und dann von Objekten wiedergespiegelt wird. Der Sensor arbeitet mit einer Skala von 0 (sehr dunkel) bis 100 (sehr hell). Im Modus Stärke des Umgebungslichts misst der Farbsensor die Stärke des Lichts, das aus der Umgebung durch das Fenster des Sensors dringt. Hierbei könnte es sich um Sonnenstrahlen oder den Lichtkegel einer Taschenlampe handeln. Der Sensor arbeitet mit einer Skala von 0 (sehr dunkel) bis 100 (sehr hell).
  • 1 x Kreiselsensor bzw. Gyroskopsensor: zur Ermittlung der Winkelposition und der Rotationsgeschwindigkeit des Roboters. Der Sensor kann eine maximale Drehrate von 440 Grad pro Sekunde messen. Die Genauigkeit liegt dabei bei +/- 3 Grad bei einer 90 Grad Drehung. Anhand der Drehrate kann festgestellt werden, ob sich ein Teil des Roboters dreht oder erkannt werden, wann der Roboter umkippt. Die Aktualisierungsrate des Sensors beträgt 1 kHz.
  • 2 x Berührungssensoren bzw. Tastsensoren: der Sensor erkennt drei verschiedene Zustände – gedrückt (berührt), ausgelassen und angestoßen (gedrückt und wieder ausgelassen), der Sensor kann entweder zur Hindernisdetektion verwendet werden oder damit der Roboter weiß, wann er etwas in seinen Greifzangen hat.
Basisfunktionen

Mit der EV3 kannst du deinen eigenen Wunsch Roboter erstellen, da dieser mit Legosteinen kompatibel ist. Er lässt sich mit der Lego Mindstorm Software per Blockprogrammierung oder mit Java programmieren. Die EV3 Steuereinheit lässt sich mit Bluetooth verbinden. Über ein Display können die aufgespielten Programme ausgewählt werden.

Preis: EV3 Home Edition (275€), EV3 Education Kit (400€)

Programmierung und IDE

Programmiert wird dieser Roboter über den EV3-Baustein und die Lego Mindstorm Software (LMS) via Blocksprache oder über Java for Lego Mindstorms (LeJOS).

 

Programmierung in EV3

Die EV3-Programmierumgebung mit der gleichnamigen Programmiersprache basiert auf LabVIEW. Diese zielt auf Kinder und Erwachsene ohne jegliche Programmiererfahrung ab. Dabei wird kein Programmcode selbst geschrieben, sondern das Programm wird mittels Zusammenklicken erstellt. Durch das Verschieben und Verbinden der einzelnen Programmierblöcke entsteht nach und nach das gewünschte Programm. Neben Variablen gibt es auch die klassischen Kontrollstrukturen wie bspw. Schleifen und Verzweigungen. Zusätzlich kann auf Ereignisse reagiert werden und mit Hilfe von Datenleitungen können Daten zwischen den einzelnen Blöcken ausgetauscht werden.

Das Programm wird im Stile eines klassischen Ablaufdiagramms aus einzelnen, miteinander verbundenen Programmierblöcken zusammengesetzt, die dann nach dem Transfer des Programms auf den EV3-Stein und dem Programmstart in der gegebenen Reihenfolge abgearbeitet werden. Ein Programmierblock kann im Grunde als eine Funktion angesehen werden, der bestimmte Eingangsparameter übergeben werden und die bestimmte Ausgangsparameter zurückliefern kann.


Den ersten Block seines Programms muss der Entwickler mit dem standardmäßig vorhandenen Startblock verbinden. Das Programm endet, wenn ein Block ohne Nachfolger erreicht wird. Das gewünschte Verhalten eines jeden Blocks lässt sich über dessen Eigenschaften einstellen. Neben den klassischen Kontrollstrukturen stehen dem Programmierer auch Motorsteuerungsblöcke, Warteblöcke etc. zur Verfügung. Letztere warten mit der Ausführung eines Programmabschnitts so lange, bis eine bestimmte Bedingung eingetreten ist. Auch zur Abfrage von Sensoren existieren diverse Blöcke, die die Messdaten über entsprechende Ausgangsparameter bereitstellen. Des Weiteren ist es dem Entwickler möglich, eigene Programmblöcke zu erstellen.

 

 

Programmierung in JAVA

Zur Programmierung der MINDSTORMS-Roboter in der Programmiersprache Java muss zunächst das kostenlose und Open Source bereitgestellte Softwarepaket leJOS EV3 von der zugehörigen Website heruntergeladen und installiert werden. Es ist für Windows, Linux und Mac OS X verfügbar. Mithilfe des EV3 SD Card Creators wird eine bootbare SD-Karte mit einem Linux-Betriebssystem inkl. einer Java-SE-Embedded 7-Laufzeitumgebung erzeugt. Nach nur wenigen Sekunden steht die SD-Karte, die anschließend in den Micro-SD-Kartenleser eingelegt wird, bereit. Als DIE sollte Eclipse Kepler verwendet werden, da dafür ein passendes leJOS-EV3-Plug-in bereitsteht.

Nach dem Erstellen eines Projekts ist das Ansprechen der Hardware denkbar einfach. Für jedes Bauteil gibt es eine zugehörige Java-Klasse, über die sich der jeweilige Aktor bzw. Sensor steuern bzw. abfragen lässt. Um einen Motor anzusprechen, ist im ersten Schritt ein entsprechendes Objekt zu instanziieren. Dem Konstruktor ist dabei der Port zu übergeben, an dem der Motor hängt. Über das erzeugte Objekt erfolgen anschließend die gewünschten Methodenaufrufe.

forward() und backward() stellen wohl die wichtigsten Methoden dar. Sie werden nicht blockierend ausgeführt – bewirken also, dass der Motor in die gewählte Richtung losgedreht wird und setzten unmittelbar danach mit der Programmausführung fort. Erst ein Aufruf von stop() hält den Motor wieder an. Mit rotate() steht zur Motorsteuerung auch eine blockierende Variante zur Verfügung. Hier ist als Aufrufargument der Drehwinkel zu übergeben. Weiterhin können die Motoren auch direkt über die bereitgestellten statischen Objekte angesprochen werden. Neben der Programmierung in Java kann EV3 auch in Python, C# oder RobotC programmiert werden, allerdings nicht so komfortabel wie mit Java.

 

B.O.T. Challenge

Line Follower Algorithmus – Flussdiagramm

Die oberen Bilder sind lizenziert unter einer Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

Beispielcode EV3

Hier kannst du Beispielcode für EV3, sowohl für LMS als auch für LeJOS downloaden.

Der hier veröffentlichte Code ist unter der Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen 4.0 International Lizenz lizenziert.

Dokumentation und Tutorials
Allgemein

EV3 Programierung mit LMS (Blocksprache)

Installationsanleitung LMS IDE

Dieses Tutorial zeigt wo die Lego Mindstorm Software (LMS) zu downloaden ist und wie diese installiert wird. Ebenfalls werden nützliche Links zur Verfügung gestellt.

zum Dokument

Ein erstes Programm mit der LMS IDE

Dieses Tutorial zeigt einen funktionierender Line-Follower Code. Weiterhin wird gezeigt wie Programme auf den EV3 übertragen werden können. Auch wird die Funktionsweise der Programmiersprache erklärt.

zum Dokument

EV3 Java-Programierung mit LeJOS

Installationsanleitung LeJOS

Dieses Tutorial beinhaltet alle Schritte die benötigt werden um EV3 mit Java programmieren zu können. Dabei wird nur auf die Installation der benötigten Komponenten eingegangen.

zum Dokument

Erste Schritte mit LeJOS

Dieses Tutorial beinhaltet die ersten Schritte um mit der Java-Programmierung des EV3 mithilfe von eclipse zu beginnen.

zum Dokument

Ein erstes Programm ausführen

Dieses Tutorial beinhaltet einen Beispielcode zum Kopieren. Es wird gezeigt wie dieser auf den EV3 übertragen und ausgeführt wird.

zum Dokument

 

LEGO® MINDSTORMS® Education EV3 Benutzerhandbuch (PDF Download)

 

FAQ, Videos, Einsatz in Projekten, Foren und Support (allgemein)
Zusammenfassung: Vorteile für den Einsatz im AK Smart Machines

Durch das Lego-Baukastensystem lässt sich eine sehr vielfältige Auswahl an verschiedensten Robotern zusammenstellen. Programmiert wird dieser Roboter über den EV3-Baustein und die Lego Mindstorm Software (LMS) via Blocksprache oder über Java for Lego Mindstorms (LeJOS).

  • Preis/Leistung – relativ teuer
  • Die EV3-Programmierumgebung mit der gleichnamigen Programmiersprache basiert auf LabVIEW. Diese zielt auf Kinder und Erwachsene ohne jegliche Programmiererfahrung ab. Dabei wird kein Programmcode selbst geschrieben, sondern das Programm wird mittels Zusammenklicken erstellt.
  • Die die grafische Programmierung ist einfach erlernbar und trotzdem leistungsfähig.
  • Bei Verwendung von LeJOS: ausgefeilte Parallelverarbeitung durch Multithreading inklusive aller Java-Bordmittel (synchronize, das Paket java.util.concurrent)
  • einfache Möglichkeit, den Source-Code mit Versionskontroll-Systemen zu versionieren
  • Robotik-API: behavior-based robotic, Steuerungsmodelle für Lenk- und Kettenantriebs-Roboter, abstrakte Navigations-Klassen
  • In Sachen Java-Programmierung stellt das API zum Steuern bzw. Abfragen der Aktoren bzw. Sensoren passende Klassen bereit, dank derer das Ansprechen der Hardwareteile ebenfalls einfach möglich wird.