1Einleitung
Im Rahmen einer Robotik-AG an einer Grundschule sowie am Gymnasium und der Teilnahme an mehreren Roboter-Wettbewerben entstand die Idee für ein LEGO-Mindstorms-Buch, das sich an einer konkreten didaktischen Vorbereitung orientiert und neben den notwendigen Robotermodellen und Programmbeispielen auch unterschiedliche Programmiersprachen behandelt. Damit wird der Grundstein für eine professionelle Anwendungsentwicklung gelegt.
Die grafische Programmierung der LEGO-EV3-Software ist für Einsteiger ein perfektes Mittel, um die klassischen Programmierkonzepte zu erlernen und schnell Erfolge zu erzielen. Dies ist nicht zuletzt der Grund, warum LEGO Mindstorms vor allem an Bildungseinrichtungen ein großer Erfolg ist. Das gleiche Argument trifft auch auf Snatch-basierte Programmierumgebungen zu, die sich im Gegensatz zur EV3-Software (basierend auf LabVIEW) eher an Flussdiagrammen orientieren. RobertaLab ist dabei ein bekannter Vertreter für die grafische Programmierung, die auch im Browser eine simulierte Welt anbietet.
Die grafische Programmierung hat jedoch Limitierungen, sobald komplexere Lösungen umzusetzen sind. In der kommerziellen Softwareentwicklung hat sich die grafische Programmierung nie durchgesetzt, auch wenn dort Ansätze vorhanden waren (zum Beispiel mit Visual Age for Java). Somit kommt in der kommerziellen Softwareentwicklung textbasierte Programmierung mit unterschiedlichen Programmiersprachen zum Einsatz. Dieser Tatsache wird in diesem Buch Rechnung getragen, indem nicht eine Konzentration auf die grafische Programmierung erfolgt, sondern alle Übungen und Beispiele auch in Basic unter Einsatz von Microsoft Small Basic und Java unter Einsatz von leJOS gezeigt werden. Damit ist es möglich, sich entweder auf eine Programmiersprache zu konzentrieren oder aber die Unterschiede der Sprachen zu bearbeiten und darzustellen. Bei Konzentration auf eine Sprache ist es nicht notwendig, die Unterkapitel mit den Beispielumsetzungen und Lösungen der anderen Sprachen zu lesen. Im Hauptkapitel werden immer die generellen Aspekte erläutert und für jede Programmiersprache anschließend spezifisch vertieft.
Material zum Buch (Modelle, Anleitungen, Quellcode in den verschiedenen Programmiersprachen) kann über die Website des Verlags kostenfrei bezogen werden:
dpunkt.de/programmev3
Dieses Buch nutzt ein einfaches Robotermodell, das vollständig mit der LEGO EV3 Mindstorms Home Edition gebaut werden kann und für das Erlernen der Programmierelemente alle erforderlichen Komponenten berücksichtigt. Das Buch enthält keine komplexen oder ausgeklügelten Robotermodelle, wofür es sehr gute alternative Bücher gibt, die sich auch mit der Konstruktion von Robotern, Getrieben oder Ähnlichem beschäftigen.
Neben den verschiedenen Programmierelementen in den ersten Kapiteln wird in einem der späteren Kapitel die Umsetzung größerer Projekte thematisiert und darunter ein Spiel-Clone des bekannten Spiels Pong für den EV3 umgesetzt sowie ein Raumscanner, wie ihn Staubsaugerroboter nutzen, demonstriert. In diesen Kapiteln werden somit die Erkenntnisse der vorherigen Kapitel zusammengefasst genutzt.
Im Rahmen dieses Buchs werden die Umgebungen auf einem Windows-10-System installiert und konfiguriert. Sowohl leJOS als auch die LEGO-EV3-Software sind ebenso für andere Plattformen wie zum Beispiel macOS verfügbar. Auf die Unterschiede wird jedoch nicht explizit eingegangen. Microsoft Small Basic ist nur für Windows verfügbar.
Das Buch verwendet an verschiedenen Stellen der leichteren Lesbarkeit halber die maskuline Form. Dies impliziert jedoch keine Benachteiligung anderer Geschlechter, sondern ist im Sinne der sprachlichen Vereinfachung als geschlechtsneutral zu verstehen.
2Einführung in die Basiskomponenten
2.1Einführung LEGO MINDSTORMS
LEGO MINDSTORMS hat mittlerweile eine sehr lange Historie und wurde von LEGO 1998 auf den Markt gebracht. Es war ursprünglich als Marketingkanal für LEGO zur Kundenbindung angedacht, um eine »lebenslange Bindung« zu LEGO zu erzeugen und nicht nur Kinder anzusprechen. Mit LEGO Mindstorms hat LEGO eine programmierbare Plattform zur Steuerung von LEGO-Modellen geschaffen, die über Sensoren Werte einlesen, verarbeiten und über Motoren als Aktoren agieren kann.
Über mehrere Jahre erfolgte eine Evolution des Produkts, angefangen beim RCX 1998 über den NXT 2006 zum aktuellen Modell EV3 im Jahr 2013. Dabei kamen weitere Anschlüsse, die Unterstützung von USB, Bluetooth und WLAN sowie leistungsfähigere Prozessoren und Speicherkomponenten hinzu.
Vor allem im Bildungsbereich (Schulen, Universitäten) wird LEGO Mindstorms intensiv eingesetzt: in Robotik-Arbeitsgemeinschaften vieler Schulen, dem LEGO-Mindstorms-Labor im Deutschen Museum in München und der Fraunhofer-Initiative »Roberta – Lernen mit Robotern«1, um nur ein paar wenige Beispiele zu nennen.
LEGO liefert mit der Home Edition (31313) von EV3 verschiedene Motoren und Aktoren sowie Sensoren mit und bietet verschiedene weitere Komponenten zum Nachkauf an. Weiterhin existiert eine LEGO Mindstorms Education Edition (45544), die sich im Vergleich zur Home Edition durch eine Stapelbox sowie eine alternative Zusammenstellung von Sensoren (Ultraschall statt Infrarot, Kreiselsensor) sowie einen Akku auszeichnet.
Die folgende Tabelle gibt eine kurze Übersicht über die Unterschiede der verschiedenen Entwicklungsstufen von LEGO Mindstorms, angelehnt an die Darstellung in Wikipedia2.
Für die Programmierung stellt LEGO die LEGO-EV3-Software kostenfrei zur Verfügung. Für den Bildungsbereich (Education Edition) wird eine Fassung für Lehrer und Schüler angeboten, die um zusätzliche Beispiele sowie die Möglichkeit der zentralen Datenauswertung erweitert wurde.
Als Aktoren bezeichnet man Komponenten, über die eine Ausgabe oder Aktion erfolgen kann. Die folgenden sind dabei zu nennen, die alle in selbst erstellten Programmen genutzt werden können:
- 5 Tasten auf dem Brick direkt nutzbar
- LCD als Ausgabe für Text und Grafik
- LEDs der Tasten ansteuerbar (rot/gelb/grün)
- Lautsprecher zur Ausgabe von Tönen, Geräuschen und Musik
- Großer Motor – Nutzung meist zur Fortbewegung
- Mittlerer Motor – Nutzung meist für Roboterarmbewegungen
Sensoren liefern Werte für die weitere Verarbeitung und sind essenziell für einen Roboter, um mit der Umwelt zu interagieren. LEGO bietet derzeit für den EV3 folgende Sensoren an:
- Taster
- Licht-/Farbsensor
- Infrarotsensor für Entfernungsmessung und Ortung
- Ultraschallsensor für millimetergenaue Entfernungsmessung
- Kreiselsensor (Gyroskop) für Drehwinkelbestimmung (2-D)
Für den NXT sind noch weitere Sensoren offiziell verfügbar:
- Geräuschsensor (Messung in dB)
- Temperatursensor
Als Besonderheit der LEGO-Motoren ist dabei zu erwähnen, dass die Motoren auch als Sensoren eingesetzt werden können, da sie als Schrittmotoren die Drehung in Grad auslesbar zur Verfügung stellen. Damit lassen sich interessante Anwendungsfälle erzeugen, die später in Kapitel 6.1 noch behandelt werden.
An einem EV3-Brick können bis zu 4 Motoren als Aktoren sowie 4 Sensoren angeschlossen werden. Dabei sind sowohl EV3- als auch NXT-Komponenten anschließbar.
Es gibt noch weitere Sensoren von Fremdanbietern, wobei die meisten auch direkt Programmierblöcke für die LEGO-EV3-Software mitliefern. In anderen Programmiersprachen sind hier manchmal eigene Implementierungen der Schnittstellen zu erstellen.
Bekannte Hersteller sind HumaRobotics, Mindsensors, Dexter Industries, HiTechnic. Dabei ist zu beachten, dass diese Sensoren nicht bei allen Robotik-Wettbewerben zugelassen sind.
Des Weiteren sind auch Multiplexer für Sensor-Ports verfügbar, sodass mehr als 4 Sensoren verwendet werden können.
Folgende Auflistung stellt lediglich einen Auszug der verfügbaren Sensoren von Drittanbietern dar:
- Kamera
- Drucksensor
- Kompass-/Magnetfeldsensor
- Beschleunigungssensor
- 3-D-Lagesensor (Gyroskop)
- Playstation-2-Controller
- RFID
- Linienverfolgungssensor
- Licht-/Farbsensoren
- Temperatursensor
Zu guter Letzt sind auch Adapter für LEGO PowerFunctions verfügbar, um diese Komponenten an einem EV3 zu betreiben.
Der EV3-Brick kommuniziert mit seinen Aktoren und Sensoren über das I2C-Protokoll. Somit besteht auch die Möglichkeit, mit etwas Lötarbeit Fremdsensoren anzubinden.
Der EV3-Brick bietet erweiterte Kommunikationsmöglichkeiten, die in unterschiedlichen Szenarien zum Einsatz kommen können. Es können beispielsweise über den USB-Port mehrere EV3-Bricks zusammengeschlossen werden, sodass damit in einem Verbund n × 4 Motoren und n × 4 Sensoren angesprochen werden können. Alternativ dazu können mehrere EV3-Bricks untereinander über Bluetooth kommunizieren. Dieses etwas komplexere Thema wird in Kapitel 5.2 aufgegriffen.
2.2Einführung LEGO Digital Designer
Der LEGO Digital Designer ist ein von LEGO frei verfügbares Softwarepaket zum virtuellen Bauen von LEGO-Modellen. Dafür steht eine große Anzahl an LEGO-Bauteilen zur Verfügung, die in einer dreidimensionalen Bauarena zu Modellen verarbeitet werden können. In der Bauarena kann das Modell in allen drei Achsen gedreht und gezoomt werden, sodass die bestmögliche Bauposition gefunden werden kann. Neben klassischen Bauteilen stehen auch die LEGO-Technic- und die LEGO-Mindstorms-Teile zur Verfügung, sodass auch Technikmodelle erstellt werden können. Die Bauelemente können auf bestimmte LEGO-Bausätze reduziert werden, sodass zum Beispiel auch nur die Bauelemente des EV3-B...