Programmieren mit LEGO® MIND-STORMS® 51515 und SPIKE® Prime - Alexander Schulze - E-Book

Programmieren mit LEGO® MIND-STORMS® 51515 und SPIKE® Prime E-Book

Alexander Schulze

0,0

Beschreibung

Scratch und Python mit der neuen LEGO-Roboter-Generation

  • Programmieren lernen leicht gemacht: Steuerungsbefehle schreiben und real mit LEGO-Robotern ausführen
  • Beispiele in Scratch und Python
  • für die neue LEGO-Mindstorms-Generation "Robot Inventor" und den kompatible Spike Prime

Programmieren lernen muss nicht theoretisch sein: Zusammen mit den LEGO-Modellreihen Mindstorms Robot Inventor 51515 oder dem kompatiblen Spike Prime können Sie Ihre Programmzeilen direkt mit selbstgebauten Modellen ausprobieren. Die Code-Beispielen in diesem Buch erklären Schritt für Schritt, was gutes und effizientes Programmieren ausmacht. Die direkte Ausführung mit einem Roboter macht mehr Spaß als Befehlebüffeln und führt auf praktische Weise zum Lernerfolg.
Das Buch bietet einen methodisch sinnvollen Weg, die zwei Sprachen zu erlernen, die LEGO für die Modellreihen vorsieht. Leserinnen und Leser können die Lösungen zu Programmier-Aufgabenstellungen jeweils in beiden Sprachen verfolgen und lernen dabei ihre Unterschiede und Stärken kennen:
- Scratch, das mit grafischen Textblöcken arbeitet, eignet sich besonders gut für Einsteigerinnen und Einsteiger.
- Python dient als einfacher Zugang zur textbasierten Programmierung und ermöglicht auch komplizierte Abläufe.
- Experimente und intuitives Lernen mit dem exklusiven Beispielroboter, der aus Teilen der Sets gebaut werden kann.
Das Robotermodell lässt sich aus Teilen des Sets LEGO Mindstorms Robot Inventor 51515 bzw. dem
LEGO-Education-Spike-Prime-Set 45678 aufbauen.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 254

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Alexander Schulze blickt auf eine 35-jährige Erfahrung im Umgang mit Computern und Programmierung zurück und hat sein Hobby nach dem Studium der Technischen Informatik (Berufsakademie) zum Beruf gemacht. Mit mehr als 20 Jahren Erfahrung in der Java-Programmierung arbeitet er als Senior-IT-Architekt in Projekten für Großkunden.

Seine LEGO-begeisterten Kinder haben ihn zu LEGO Mindstorms geführt und die Leidenschaft für die Programmierung von Robotern entfacht.

Verschiedene Workshops an einer Grundschule sowie die Unterstützung der Robotik-AG an einem Gymnasium im Unterallgäu legten den Grundstein für das Buch »LEGO Mindstorms programmieren – Robotikprogrammierung mit grafischen Blöcken, Basic und Java für LEGO EV3« für den LEGO Mindstorms EV3 und für dieses Buch. Dabei stand von Beginn an die Teilnahme an verschiedenen Wettbewerben mit den Schülern im Vordergrund, um mit ihnen auf ein konkretes Ziel hinzuarbeiten.

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.plus

Alexander Schulze

Programmieren mitLEGO® MINDSTORMS® 51515und SPIKE® Prime

Scratch und Python für Einsteiger und Fortgeschrittene

Alexander Schulze

Lektorat: Gabriel Neumann

Lektoratsassistenz: Anja Weimer

Copy-Editing: Petra Kienle, Fürstenfeldbruck

Satz: Ulrich Borstelmann, www.borstelmann.de, Veronika Schnabel

Herstellung: Stefanie Weidner, Frank Heidt

Umschlaggestaltung: Helmut Kraus, www.exclam.de, unter Verwendung eines Fotos von Veronika Schnabel

Bildnachweis: Bilder Seite 8 (untere Reihe), 49 und 62, Veronika Schnabel

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print      978-3-86490-856-9

PDF       978-3-96910-555-9

ePub     978-3-96910-556-6

mobi     978-3-96910-557-3

1. Auflage 2021

Copyright © 2021 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Hinweis:Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.

Schreiben Sie uns:Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

LEGO, LEGO-Figuren und LEGO-Bausteine sind Warenzeichen der LEGO-Gruppe.

Dieses Buch ist von der LEGO-Gruppe weder unterstützt noch autorisiert worden.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

Danksagung

Mein besonderer Dank geht an Herrn Ronny Kröhne als Kollegen und Freund, der mit viel Geduld die Inhalte des Buchs immer wieder geprüft, korrigiert und bewertet hat.

Nicht weniger bedanke ich mich bei meiner Ehefrau, Monika Schulze, die die Idee zu dem Buch maßgeblich entwickelt hatte.

1Inhaltsverzeichnis

1Einleitung

2Einführung in die Basiskomponenten

2.1Einführung in LEGO-Mindstorms

2.2Virtuelle Modellierung von LEGO-Modellen

3Vorbereitung der Umgebungen, Installation der Basissoftware und Grundeinführung

3.1Einführung in die LEGO-Programmierumgebung

3.2Kopplung des Hubs mit dem Computer

3.3Bau des Beispielroboters

4Programmierung des LEGO Mindstorms

4.1Motorsteuerung und Abfrage von Sensorwerten

4.2Ansteuerung von Lichtmatrix und Lautsprecher

4.3Schleifen, Schleifenabbruch und Unterbrechung

4.4Schalter, Bedingungen und Vergleiche

4.5Variablen, Konstanten, mathematische Berechnungen, Nutzung und Zuweisung

4.6Unterprogramme

4.7Logische Operationen, Zugriff auf Sensorwerte, weiterführende mathematische Berechnungen und Zufallsgenerator

4.8Parallele Ausführung mehrerer Programmsequenzen und ereignisbasierte Programmierung

5Weiterführende Themen der Programmierung

5.1Linienverfolgung mit einem oder zwei Farbsensoren

5.2Spielentwicklung »Ball fangen«

5.3Spielentwicklung »Schere, Stein, Papier«

6Weiterführende Informationen

6.1Debugging

6.2Kommentare

6.3Block-Erweiterungen für die Textblock-Programmierung

6.4Editor für Soundeffekte

6.5Motorregelung

6.6Fehlerbehandlung

6.7Dateioperationen

6.8Besonderheiten des LEGO Mindstorms Robot Inventor

6.9Besonderheiten des LEGO Spike Prime

6.10LEGO Mindstorms EV3 mit Textblöcken

7Fazit und Ausblick

8Anhang

8.1Zustandskommunikation des Hubs mittels Farbe

8.2Bekannte Probleme in der Programmierumgebung

8.3Erweiterte Informationen zur Objektorientierung in Python

8.4Auflistung installierter Python-Module auf dem Hub und deren Inhalte

8.5Format der Programmspeicher

8.6Schlüsselwörter in Python

8.7Installationsanleitung LDraw und Studio 2.0

8.8Bauteilliste der Beispielroboter

1Einleitung

Im Rahmen einer Robotik-AG an einer Grundschule sowie an einem 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.

Aus dieser Idee entstand das Buch »LEGO Mindstorms programmieren – Robotikprogrammierung mit grafischen Blöcken, Basic und Java« für den LEGO Mindstorms EV3, welches ebenfalls beim dpunkt.verlag erschienen ist.

Mit Einführung des LEGO Spike Prime Sets im Januar 2020 und dem LEGO Mindstorms Robot Inventor (51515) im Oktober 2020 hat LEGO den technologischen Nachfolger des EV3 auf den Markt gebracht, welcher bereits mit Textblöcken oder Python programmiert werden kann. Dieses Buch basiert auf der LEGO MINDSTORMS App 10.1.0 und LEGO Education SPIKE App 1.3.5, welche die aktuellen Fassungen zum Redaktionsschluss darstellten.

Die grafische Programmierung der LEGO-Software auf Basis von Scratch 3.01 ist für Einsteiger ein perfektes Mittel, um die klassischen Programmierkonzepte, auf die in diesem Buch noch eingegangen wird, zu erlernen und schnell Erfolge zu erzielen. Dies ist nicht zuletzt der Grund, warum LEGO Mindstorms vor allem an Bildungseinrichtungen bereits mit seiner LabVIEW2-basierten Programmierung ein großer Erfolg ist.

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 mit Textblöcken erfolgt, sondern alle Übungen und Beispiele auch in Python 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 Abschnitte mit den Beispielumsetzungen und Lösungen der anderen Sprache zu lesen. Im Hauptkapitel werden immer die generellen Aspekte erläutert und für jede Programmiersprache anschließend spezifisch vertieft.

Die Teilnahme an Robotik-Wettbewerben wie der World Robot Olympiad3, FIRST LEGO League4, dem RoboCup5 oder regional angebotenen Wettkämpfen stellt für viele Lernende vor allem in Schulen eine besondere Herausforderung und auch Motivation dar, die auch als Coach viel Spaß bereiten. Die Programmierkenntnisse, die dieses Buch vermittelt, werden bei Wettbewerben von Vorteil sein.

Material zum Buch (Modelle, Anleitungen, Quellcode in den verschiedenen Programmiersprachen) kann über die Website des Verlags unter »Zusatzmaterial« kostenfrei bezogen werden:

dpunkt.de/mindspike

Dieses Buch nutzt ein einfaches Robotermodell, das vollständig mit dem LEGO Mindstorms Robot Inventor oder dem LEGO Spike Prime Set 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 Programmierkonzepten in den ersten Kapiteln werden in einem der späteren Kapitel die Umsetzung größerer Projekte thematisiert und dabei auch mehrere kleine Spiele auf dem Hub umgesetzt. In diesen Kapiteln werden somit die Erkenntnisse der vorherigen Kapitel zusammengefasst angewendet.

Im Rahmen dieses Buchs werden die Umgebungen auf einem Windows-10-System installiert und konfiguriert. Die LEGO-Software ist ebenso für andere Plattformen wie zum Beispiel macOS verfügbar. Auf die Unterschiede wird jedoch nicht explizit eingegangen.

Das Buch verwendet an verschiedenen Stellen aus Gründen der leichteren Lesbarkeit die maskuline Form. Dies impliziert jedoch keine Benachteiligung anderer Geschlechter, sondern ist im Sinne der sprachlichen Vereinfachung als geschlechtsneutral zu verstehen.

Juli 2021Alexander Schulze

2Einführung in die Basiskomponenten

2.1Einführung in 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 Modell EV3 im Jahr 2013 und zur aktuellen Plattform Spike Prime / Robot Inventor 2020. 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 einige wenige Beispiele zu nennen.

LEGO liefert mit dem Robot Inventor (51515) verschiedene Motoren und Aktoren sowie Sensoren und bietet verschiedene weitere Komponenten zum Nachkauf an. Weiterhin existiert der LEGO Spike Prime (45678), der sich im Vergleich zum Robot Inventor durch eine Stapelbox, andere Farbgebung sowie eine alternative Zusammenstellung von Motoren und Sensoren auszeichnet. Details zu den beiden Sets sind in den Folgekapiteln zu finden.

Die folgende Tabelle gibt eine kurze Übersicht über die Unterschiede der verschiedenen Entwicklungsstufen von LEGO Mindstorms, angelehnt an die Darstellung in Wikipedia.2

Für die Programmierung stellt LEGO die entsprechende Software kostenfrei zur Verfügung. Über den Microsoft Store kann die Programmiersoftware für Windows einfach installiert und aktualisiert werden. Für den LEGO Spike Prime steht die »SPIKE LEGO Education« und für den LEGO Mindstorms die »LEGO® MINDSTORMS® Robot Inventor«-App zum Download zur Verfügung. Alternativ kann die Software auch über die jeweiligen LEGO-Internetseiten bezogen werden, wobei neben Windows hier auch Versionen für macOS, iPad, Android und Chromebook angeboten werden.

2.1.1Übersicht über Aktoren und Sensoren

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:

Zwei Tasten auf dem Brick direkt nutzbar

5 × 5-Lichtmatrix als Ausgabe für Text und Grafik

LEDs der zentralen Taste ansteuerbar

Lautsprecher zur Ausgabe von Tönen

Großer Motor

Mittlerer Motor

Abb. 2–1 // Übersicht der Aktoren

Sensoren liefern Werte für die weitere Verarbeitung und sind essenziell für einen Roboter, um mit der Umwelt zu interagieren. LEGO bietet derzeit folgende Sensoren an:

Kraftsensor und Taster

Licht-/Farbsensor

Ultraschallsensor für millimetergenaue Entfernungsmessung sowie ansteuerbare LEDs

Kreiselsensor (Gyroskop) für Drehwinkelbestimmung (3-D) eingebaut im Hub

Die Aktoren und Sensoren der früheren Mindstorms-Generationen (NXT, EV3) lassen sich nicht mehr an dem neuen Hub betreiben.

Eine Besonderheit der LEGO-Motoren ist, 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 5.2 noch behandelt werden.

An einem Hub können bis zu sechs Motoren als Aktoren oder entsprechende Sensoren angeschlossen werden. Jeder Anschlussport ist dabei sowohl als Eingang als auch als Ausgang nutzbar, sodass es keine zwingende Notwendigkeit gibt, Sensoren nur an die einen Ports und Aktoren nur an andere Ports anzuschließen, wie dies früher beim EV3 der Fall war.

Von Drittanbietern sind derzeit noch keine weiteren Sensoren verfügbar. Allerdings bietet der Ultraschallsensor, den LEGO mitliefert, die Möglichkeit, alternative Sensoren anzuschließen. Dazu ist der Ultraschallsensor mit einem Spezialschraubenzieher zu öffnen, um über einen 8-Pin-Anschluss den einfachen Zugriff auf alternative Komponenten und die Kommunikation mit dem Hub zu ermöglichen.

Im Gegensatz zum EV3 lassen sich aber alle neuen LEGO PoweredUp- und Control+-Komponenten an dem Hub anschließen und nutzen.

Der Hub kommuniziert mit seinen Aktoren und Sensoren über ein LEGO-eigenes Protokoll. Somit besteht nicht mehr so einfach wie beim EV3 die Möglichkeit, mit etwas Lötarbeit Fremdsensoren über I2C anzubinden.

Der Hub beherrscht noch keine erweiterte Kommunikation zwischen mehreren Hubs. Allerdings können Bluetooth-Controller von z. B. einer Microsoft Xbox für die Steuerung des Hubs verwendet werden, indem die Verbindung über den Computer genutzt wird. Dies wird in Abschnitt 6.8.3 detailliert beschrieben.

2.1.2Inhalte und Unterschiede von LEGO Spike Prime und Robot Inventor

Grundsätzlich sind die beiden Produkte LEGO Spike Prime (45678) und LEGO Robot Inventor (51515) von der technischen Seite gesehen identisch. Lediglich in der Farbgebung der Bauelemente hat LEGO beim Spike Prime eher auf poppige Farben und beim Robot Inventor auf dezente Farben in grau und grün gesetzt.

Im LEGO-Spike-Prime-Set sind die folgenden technischen Komponenten neben insgesamt 528 LEGO-Bauelementen enthalten:

Hub inkl. Akku

Zwei mittlere Motoren

Ein großer Motor

Ein Kraftsensor

Ein Ultraschallsensor

Ein Farbsensor

Im LEGO-Robot-Inventor-Set sind die folgenden technischen Komponenten neben insgesamt 949 LEGO-Bauelementen enthalten:

Hub inkl. Akku

Vier mittlere Motoren

Ein Ultraschallsensor

Ein Farbsensor

Besonders hervorzuheben ist dabei, dass sämtliche Motoren vollständig dem Rastermaß der LEGO-Bauelemente entsprechen und keine Rundungen im Baukörper wie beim EV3 oder NXT aufweisen.

Bei den LEGO-Bauelementen sind Unterschiede vor allem im Bereich der verfügbaren Rahmen, Platten und Verkleidungselemente zwischen den beiden Bausätzen zu erkennen.

Vor allem die neuen LEGO-Bauelemente im Bereich der Rahmen, Bauplatten, Verbindungselemente und Räder können für den schnellen Aufbau von fahrenden Robotern sehr vorteilhaft sein. In Kombination mit den Motoren im Rastermaß der LEGO-Bauelemente bietet dies vor allem für Wettbewerbe, bei denen eine präzise, vorhersehbare Steuerung und Fahrweise unabdingbar ist, im Vergleich zu den Vorgängermodellen einen entscheidenden Vorteil.

Die Rahmen und Bauplatten bzw. Bauplatten sind bis auf die Farbgebung identisch in den beiden Sets. Sie unterscheiden sich lediglich in der Anzahl der beigelegten Elemente.

Bei den Verbindungselementen sticht der neue 3 × 3-LEGO-Technik-Verbinder heraus, der in den verschiedenen Ausrichtungen die entsprechenden Löcher für die Befestigung anbietet.

Für die Befestigung der Flachbandkabel liefert LEGO entsprechende Halterungen mit, um die Kabel zu verstauen. Bei Wettbewerben wie der World Robot Olympiad ist dies hilfreich, um das maximale Baumaß nicht zu überschreiten.

Die neuen Räder der jeweiligen Sets weisen eine geringe Auflagefläche bei hoher Haftung aufgrund der gummierten Lauffläche auf. Dies ist für Wettbewerbe vorteilhaft, da damit eine präzisere Steuerung mit geringerem »Schlupf« erreicht werden kann.

Vor allem mit der Basisplatte ist ein fahrender Roboter sehr einfach und schnell aufgebaut und zeigt die Vorteile der Motoren im LEGO-Rastermaß.

LEGO bietet für den Spike Prime ein Erweiterungsset (45680) an, welches neben einem großen Motor und einem Farbsensor noch ca. 600 weitere Bauelemente enthält. Darunter sind ein weiteres Kugelrad, lange Achsen (Länge 32), weitere große und mittlere Rahmen, bananenförmige Getriebe sowie größere Räder in der gleichen Bauform mit 88 mm statt 56 mm. Durch die größeren Räder kann ohne Übersetzung eine entsprechend höhere Geschwindigkeit bei fahrenden Robotern erreicht werden. Die entsprechenden Elemente können auch vollständig mit dem LEGO Mindstorms Robot Inventor genutzt werden und stellen somit eine sinnvolle Ergänzung dar, auch wenn die Farbgebung dem des LEGO Spike Prime entspricht.

Hervorzuheben sind beim LEGO Spike die neuen Basissteine mit Aussparungen für Wellen sowie die neue leichtgängige Kugel als Einsatz für ein drittes Laufrad. Beim EV3 gab es im Education Set (bzw. auch im Nachkauf) bereits eine Stahlkugel mit entsprechender Halterung, das neue Element beim LEGO Spike ist hingegen vollständig aus Plastik und leichtgängiger als das ältere Bauelement.

Beim LEGO Mindstorms Robot Inventor sticht vor allem das Differential heraus, welches es ermöglicht, Räder mit unterschiedlichen Drehgeschwindigkeiten über einen Motor anzutreiben, wie dies in realen Fahrzeugen der Fall ist.

Details dazu finden sich in den Abschnitten 6.8.6 und 6.9.8.

2.1.3Unterschiede zum LEGO Mindstorms EV3

Einige der Veränderungen im Vergleich zum EV3 wurden bereits in den vorherigen Kapiteln angesprochen. Was davon als Nachteil und was als Vorteil angesehen wird, liegt in der jeweiligen Betrachtungsweise. Dieses Kapitel soll eine grobe Übersicht über die Unterschiede liefern und vor allem EV3-Umsteigern helfen. Dabei ist es nicht das Ziel, alles umfassend zu beleuchten. Die Unterschiede in den Programmiersprachen und verfügbaren Programmierelementen werden nicht detailliert aufgeführt und ergeben sich aus den Programmierbeispielen in den Kapiteln 4 und 5.

Hub, Sensoren und Motoren sind vollständig im quaderförmigen Rastermaß von LEGO

Farbsensor mit wesentlich kompakterer Bauform als der EV3-Farbsensor

Kraftsensor anstelle eines einfachen Tasters beim EV3 (nur LEGO Spike Prime)

Flexible Flachbandkabel für eine platzsparende Montage

3-Achs-Gyroskop im Hub verbaut anstelle eines externen 2-Achs-Gyroskops beim EV3 (der verbaute 3-Achs-Gyroskop erkennt auch Gesten wie Schütteln und Beschleunigungen)

Umgebungstemperatursensor im Hub

Feste Kabellängen an den Motoren und Sensoren mit fest verlöteten Kabeln in den Motoren und Sensoren anstelle der flexiblen Kabellängen beim EV3

Keine Unterstützung für SD-Karten zur Speichererweiterung oder zum Starten eines alternativen Betriebssystems

Geringere Flexibilität bei der Wiedergabe von Geräuschen oder Musik über den Hub selbst – der Hub ist beim LEGO Spike nur in der Lage, einzelne Töne wiederzugeben, der LEGO Mindstorms Robot Inventor kann kurze Sequenzen wiedergeben

5 × 5-LED-Matrix statt eines 178 × 28-Pixel-LCD beim EV3

Wechsel vom IC2-Protokoll (EV3) zum LPF2-Protokoll (LEGO Power Functions) zur Ansteuerung der Motoren und Sensoren

Verwendung der Powered-Up-Sensoren und -Motoren von LEGO möglich

Keine Kommunikation zwischen mehreren Hubs möglich, obwohl Bluetooth grundlegend zur Verfügung steht

6 Input/Output-Ports im Vergleich zu 4 Input- und 4 Output-Ports beim EV3

Keine WLAN-Verbindungsmöglichkeiten, da kein WLAN-Adapter verbaut ist und kein USB-Host-Adapter zur Verfügung steht

Prozessorleistung und Speicher geringer als beim EV3

Proprietärer Akku als fester Bestandteil der neuen Sets und damit keine Möglichkeit zur Nutzung von Standardbatterien

Reduzierte Startzeit des Hubs von wenigen Sekunden im Vergleich zum EV3 mit ca. 30 Sekunden

2.2Virtuelle Modellierung von LEGO-Modellen

Bereits 2004 hat LEGO den LEGO Digital Designer als frei verfügbares Softwarepaket zum virtuellen Bauen von LEGO-Modellen zur Verfügung gestellt. Dafür stehen 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 sich die bestmögliche Bauposition finden lässt. Neben klassischen Bauteilen stehen auch die LEGO-Technic- und die LEGO-Mindstorms-Teile zur Verfügung, sodass auch Technikmodelle erstellt werden können. 2016 wurde der LEGO Digital Designer von LEGO abgekündigt und 2019 erschien die letzte verfügbare Version mit einigen wenigen Updates.

Abb. 2–2 // Beispiel LEGO-Digital-Designer-Entwurfsmodus

Parallel zur Veröffentlichung des LEGO Digital Designer sind in den letzten Jahren verschiedene frei verfügbare Programme für das virtuelle Modellieren und Bauen von LEGO-Modellen entstanden. Die meisten basieren dabei auf LDraw,3 einem offenen Standard für LEGO-CAD-Programme. Damit können virtuelle LEGO-Modelle erzeugt und beschrieben werden, zudem lassen sich aufbauend auf der Modellbeschreibung Bauanleitungen wie von LEGO bzw. in diesem Buch erzeugen oder auch fotorealistische Bilder generieren. In der LDraw-Bibliothek sind Beschreibungen von Tausenden von LEGO-Bauelementen abgelegt, welche jeweils deren genaue Geometrie enthalten.

Für die verschiedenen Anwendungsfälle stehen unterschiedliche Programme zur Verfügung – z. B. für die Modellierung LDCad, MLCad, LeoCad, für die Generierung von Bildern und Anleitungen LPub3D, LICreator und für die Generierung fotorealistischer Bilder POV-Ray. Einige Programme wie z. B. POV-Ray sind nicht nur für LEGO-Modelle nutzbar bzw. wurden nicht primär für LEGO-Modelle entworfen.

Neben diesen Programmen, die alle über einen All-in-One-Installer gemeinsam installiert werden (siehe Kapitel 8.7), hat sich außerdem ein weiteres, frei verfügbares Projekt namens Studio 2.04 in der LEGO-Community etabliert. Dieses vereint viele der zuvor genannten Funktionen in einem Programm und wird zudem aktiv gepflegt. Studio 2.0 baut ebenfalls auf der LDraw-Bibliothek auf und ergänzt diese um weitere Metadaten für z. B. korrekte Verbindungspunkte. Studio 2.0 wurde im Rahmen des Bricklink-Projekts geschaffen. Bricklink ist der wohl größte Handelsplatz für LEGO-Teile, außerdem bietet die Plattform Designer-Programme an und dient als Datenbank für Teile und Sets. 2019 wurde Bricklink von der LEGO Group übernommen.

Die in diesem Buch vorgestellten Modelle liegen im LDraw- oder im Studio-2.0-Format vor.

Abb. 2–3 // Studio 2.0 – Modellierungsansicht

Über die Bauteilpalette auf der linken Seite können die verschiedenen Bauelemente gesucht und dem Modell hinzugefügt werden. Die Farbe kann dabei jederzeit nachträglich über die Farbpalette auf der rechten Seite geändert werden.

Studio 2.0 unterstützt dabei die sogenannte Snap-in-Technik. Unter Snap-in-Technik wird dabei verstanden, dass sich die LEGO-Bausteine bei Annäherung automatisch in dafür sinnvollen Positionen verbinden, was das Bauen stark vereinfacht. Dies wird über den Snap-Modus in der Werkzeugleiste angezeigt.

Neben der reinen Bauansicht ist auch eine Darstellung einer Bauanleitung möglich. Dazu muss das Modell mehrere Schritte (»Steps«) beinhalten, was auch schon in der Modellierungsansicht in der rechten Palette zu erkennen war. Dies bedeutet, dass Studio 2.0 nicht automatisch eine Anleitung generieren kann, sondern dass diese auf Basis der Schritte im Modell erstellt wird. Die Anleitung kann als Bildfolge oder als PDF exportiert werden.

Abb. 2–4 // Studio 2.0 – Generierung einer Anleitung

Abb. 2–5 // Studio 2.0 – Seitendesign einer Anleitung

Für die Bearbeitung steht eine umfangreiche Werkzeugbox zur Verfügung, Es sind verschiedene Selektionsmechanismen für Bauteile vorhanden (zum Beispiel Mehrfachselektion aller Bauelemente einer zusammenhängenden Gruppe oder einer Farbe), farbliche Veränderung der Bauelemente im Nachhinein und vieles mehr, um auch komplexe Modelle zu realisieren und zu visualisieren.

Abb. 2–6 // Werkzeugauswahl in Studio 2.0

Die Modelle können in verschiedene Formate exportiert werden, die dann unter anderem von Fremdsoftware geladen werden, um zum Beispiel eine Simulation zu initiieren.

3Vorbereitung der Umgebungen, Installation der Basissoftware und Grundeinführung

3.1Einführung in die LEGO-Programmierumgebung

3.1.1Installation

Die LEGO-Software installiert sich wie eine typische Windows-App über den Microsoft Store oder alternativ über den paketierten Installer. Dabei gibt es keine Besonderheiten zu beachten.

Die LEGO-Mindstorms-App wird über die Suche nach »lego mindstorms«, die LEGO-Spike-App über die Suche nach »spike lego« schnell im Microsoft Store gefunden.

Standardmäßig wird die LEGO-Software in der Sprache des Betriebssystems oder alternativ auch in englischer Sprache installiert. In diesem Buch wird grundsätzlich die deutsche Sprache in den Darstellungen verwendet. Die Umstellung der Sprache ist für LEGO Mindstorms in Abschnitt 6.8.1 und für LEGO Spike in Abschnitt 6.9.2 erläutert.

Im weiteren Verlauf dieses Kapitels wird größtenteils auf die LEGO-Mindstorms-App und die entsprechende Programmierumgebung eingegangen. Besonderheiten der LEGO-Spike-App sind in Kapitel 6.9 beschrieben.

3.1.2Start der Programmierumgebung

Nach dem Start der LEGO-Mindstorms-App wird der Eingangsbildschirm angezeigt, von dem aus direkt in die Beispielprojekte mit Schritt-für-Schritt-Bauanleitungen, die eigenen Projekte (gegliedert je nach Beispielroboter von LEGO oder unabhängige Projekte), die Einstellungen und zur eigentlichen Programmierung verzweigt werden kann.

Abb. 3–1 // LEGO-Mindstorms-App: Startbildschirm

Für die Programmierung wird über die Auswahl »Programmieren« ein neues Projekt für Textblöcke angelegt. Dies führt zu folgender Anzeige, die die eigentliche Programmieroberfläche darstellt.

Abb. 3–2 // LEGO-Mindstorms-App: Projektansicht Textblöcke

Sowohl auf dem Startbildschirm als auch in der Textprogrammierumgebung kann über das Menü »Datei – Neues Projekt« oder alternativ durch Auswahl des +-Symbols neben dem Projektnamen ein neues Projekt angelegt werden. Im Unterschied zur Auswahl »Programmieren« im Startbildschirm, welches direkt ein Textblöcke-basiertes Programm anlegt, wird hier ein Dialog mit Auswahlmöglichkeit für Textblöcke oder Python angeboten.

Abb. 3–3 // LEGO-Mindstorms-App: Auswahldialog für ein neues Projekt

Die Auswahl der Programmierung mit Python führt zu folgender Anzeige, die die eigentliche Programmieroberfläche für Python darstellt. Dabei wird ein grundlegender Python-Programmcode erzeugt, der direkt ausführbar ist. Bei LEGO Mindstorms werden hierbei die Klassen und Funktionen aus dem Modul mindstorms importiert.

Abb. 3–4 // LEGO-Mindstorms-App: Projektansicht Python

Nach dem Anlegen eines neuen Projekts erhält dieses einen Standardprojektnamen von der Programmiersoftware (»Projekt x«), unter welchem es auch im Dateisystem gespeichert wird. Unter Windows erfolgt die Speicherung unter »<Dokumente>\LEGO MINDSTORMS«. In Kapitel 8.5 wird das Speicherformat der Projekte erläutert.

Um dem Projekt einen sinnvollen Namen zu geben, kann es über die Auswahl der drei Punkte beim Projektnamen umbenannt werden:

Abb. 3–5 // LEGO-Mindstorms-App: Projektaktionen

Abb. 3–6 // LEGO-Mindstorms-App: Projekt umbenennen

Dies führt dazu, dass sich der Dateiname des Projekts am Speicherort entsprechend ändert und damit ebenfalls umbenannt wird.

Eine Kopie des Projekts kann über »Speichern unter …« erreicht werden, was das Projekt gemäß dem Dateinamen ebenfalls umbenennt.

3.1.3Start eines Programms

Im rechten unteren Bereich befinden sich die Knöpfe zum Starten und Stoppen von Programmen. Dabei spielt es keine Rolle, ob es sich um Python- oder Textblock-basierte Programme handelt. Das Vorgehen ist immer identisch.

Abb. 3–7 // LEGO-Mindstorms-App: Kontrollelemente für den Programmstart

Über den rechten Knopf mit dem Pfeil wird ein Programm auf den Hub übertragen und sofort gestartet. Bei einem laufenden Programm kann über den mittleren Knopf das Programm beendet werden. Dies funktioniert solange der Hub mit dem Computer verbunden ist, auch wenn das Programm direkt auf dem Hub gestartet wurde.

Der Hub bietet 20 Programmspeicher an, auf denen jeweils ein Programm abgelegt werden kann. In dem Bedienelement auf der linken Seite in dieser Anordnung wird der Speicherplatz auf dem Hub für das Programm festgelegt. Durch Aufklappen des Bedienelements kann der Speicherplatz für das Programm über die beiden Pfeile (rechts/links) angepasst werden. Der gewählte Speicherplatz wird auch zusammen mit dem Programm gespeichert, sodass jeder neue Start eines Programms auf dem gleichen Speicherplatz erfolgt.

Abb. 3–8 // LEGO-Mindstorms-App: Auswahl Programmspeicherplatz

Zusätzlich kann über dieses Bedienelement das Programm lediglich auf den Hub übertragen werden, ohne es zu starten. Dies wird durch Auswahl das Pfeils nach unten erreicht und ist vor allem bei Wettbewerben wichtig, da der Start des Programms unabhängig von der Übertragung stattfinden muss.

Des Weiteren ermöglicht dieses Bedienelement das Umschalten auf den Streaming-Modus. Dadurch wird ein Programm nicht auf den Hub übertragen, sondern schrittweise dort ausgeführt. Details dazu sind in Kapitel 6.1 zu finden.

Durch die Festlegung des Speicherplatzes kann das Programm auch jederzeit auf dem Hub selbst gestartet werden. Durch die beiden kleinen Tasten (rechts/links) auf dem Hub kann der Speicherplatz gewählt werden. Durch Betätigen des Hauptknopfes in der Mitte des Hubs wird das Programm auf dem Hub aus diesem Speicherplatz gestartet. Ein erneuter Druck des Hauptknopfes beendet das Programm. Auf dem Hub werden nur die belegten Speicherplätze zur Auswahl angeboten. Somit sind bei einem leeren Hub auch keine Speicherplätze zur Auswahl vorhanden.

Bei der LEGO-Spike-App ist lediglich die Farbgebung der Bedienelemente anders, die Bedienweise ist aber identisch.

3.1.4Einführung in die Bedienung der Textblöcke-basierten Programmierung

Die grundlegende Bedienung der Textblöcke-basierten Programmierung ist sehr intuitiv gestaltet. Dabei wird auf Scratch 3.0 aufgebaut.

Programme werden durch eine Sequenz von Programmierblöcken dargestellt, die nacheinander ausgeführt werden. Diese Sequenz wird bei Scratch Stapel bzw. Blockstapel genannt. Den Start eines Programms stellt dabei der Kopfblock »wenn das Programm startet« mit dem weißen Pfeil auf gelben Hintergrund dar.

Scratch unterscheidet verschiedene Blockformen, sodass bereits an der Form des Blocks dessen Verwendungsmöglichkeit und -zweck erkannt werden kann. Mehrere Blöcke können nur dann zusammen verwendet werden, wenn sie auch entsprechend visuell aneinander angeordnet werden können. Es gibt unterschiedliche Bezeichnungen der jeweiligen Typen in der Literatur, weshalb in der folgenden Tabelle sowohl die Bezeichnungen aus der LEGO-Hilfe als auch aus der Scratch-Dokumentation herangezogen werden.

Blockform/Textblock-Typ

Kurzerläuterung

Beispiel

Kopfblöcke

Kopfblöcke sind die Blöcke, die einen aus einem oder mehreren Textblöcken bestehenden Stapel starten können. Deren Oberseite ist abgerundet. Unten ist eine Ausbuchtung zu finden, an der andere Blöcke angehängt werden können.

Stapelblöcke

Stapelblöcke stellen die eigentlichen Programmierelemente und konkreten Befehle dar, die in einem Programm ausgeführt werden sollen. Damit können Motoren gestartet oder Pixel aktiviert werden. Stapelblöcke haben oben eine Einbuchtung und unten eine Ausbuchtung, sodass andere Blöcke oberhalb oder unterhalb angehängt werden können.

C-/E-Blöcke Klammerblöcke

Klammerblöcke stellen Steuerungsblöcke dar, die den Programmablauf durch Schleifen oder Vergleiche steuern. Sie haben meist die Form der Buchstaben C oder E, weshalb sie diesen Namen erhalten haben. Im inneren Bereich ist eine Ausbuchtung vorhanden, um dort weitere Blöcke einzufügen. Im äußeren Bereich sind sie wie die Stapelblöcke mit Ein- und Ausbuchtung versehen.

Reporterblöcke Wertblöcke

Reporterblöcke oder Wertblöcke liefern einen konkreten Wert (z. B. Zahlen, Texte). Die Werte können Variablenwerte darstellen oder z. B. von einem Sensor geliefert werden. Die Form entspricht einem abgerundeten Rechteck und kann in anderen Textblöcken anstelle von manuellen Eingaben für Werte eingesetzt werden.

Wahrheitsblöcke

Wahrheitsblöcke liefern Ergebnisse von Bedingungen, die entweder falsch oder wahr sein können. Diese werden für die Logikprüfung innerhalb von Programmen benötigt. Ein Wahrheitsblock hat eine hexagonale Form und kann in anderen Textblöcken eingesetzt werden.

Abschlussblöcke

Abschlussblöcke beenden konkret einen Blockstapel oder das gesamte Programm und haben nur oben eine Einbuchtung.

Hinweis zur Definition Einbuchtungen und Ausbuchtungen

In der Tabelle finden sich die Begriffe »Einbuchtungen« und »Ausbuchtungen«. Im deutschen Scratch-Wiki (https://de.scratch-wiki.info/wiki/Blockformen) werden die Begriffe genau vertauscht verwendet. Aus Sicht des Autors ist die in diesem Buch gewählte Begrifflichkeit allerdings passender.

Die jeweiligen verfügbaren Textblöcke sind in unterschiedlichen Paletten in verschiedenen Farben mit unterschiedlichem Zweck gruppiert. Es sind standardmäßig zehn verschiedene Paletten verfügbar, wobei der Umfang der verfügbaren Programmierblöcke auch von installierten Erweiterungen abhängt. LEGO Mindstorms und LEGO Spike haben hier einige wenige Unterschiede, auf die in den Abschnitten 6.8.5 und 6.9.7 eingegangen wird. In der Darstellung werden die Standardpaletten der LEGO-Mindstorms-App genutzt:

Die blaue Palette »Motoren« beinhaltet Textblöcke, um einzelne Motoren anzusprechen bzw. Informationen von Motoren abzufragen.

Die pinke Palette »Bewegung« beinhaltet Textblöcke für die Bewegungssteuerung eines Roboters mit zwei Antriebsmotoren.

Die violette Palette »Licht« beinhaltet Textblöcke für die Ansteuerung der Lichtmatrix, der mittleren Taste sowie der Lichter im Ultraschallsensor.

Die lila Palette »Soundeffekte« beinhaltet Textblöcke für die Ausgabe von Soundeffekten und Tönen sowie die Lautstärkesteuerung.

Die gelbe Palette »Ereignisse« beinhaltet Textblöcke für die Reaktion auf Ereignisse und Nachrichtenverwaltung und besteht im Grunde nur aus Kopfblöcken.

Die orange Palette »Steuerung« beinhaltet Textblöcke für die Programmflusssteuerung (zum Beispiel Schleifen, Schalter, Warte-Anweisungen).

Die türkise Palette »Sensoren« beinhaltet Textblöcke für den direkten Zugriff auf Sensorwerte (zum Beispiel Taster, Farbsensoren, Neigungssensor, Ultraschallsensor).

Die grüne Palette »Operatoren« beinhaltet Programmierblöcke für mathematische Berechnungen, Vergleiche, Felder, boolesche Algebra, Zufallsgenerator, Textmanipulation und Bereichsprüfung.

Die dunkeltürkise Palette »Fernsteuerung« beinhaltet Textblöcke für die Nutzung einer virtuellen Fernsteuerung für einen Roboter. Diese ist anfangs leer und wird erst gefüllt, wenn eine virtuelle Fernsteuerung dem Programm und entsprechende Bedienelemente hinzugefügt werden. Dies wird in

Abschnitt 6.8.4

kurz besprochen.

Die orange Palette »Variablen« beinhaltet Variablen, die im Programm verwendet werden. Diese ist anfangs leer. In

Kapitel 4.5

wird darauf eingegangen.

Die rote Palette »Eigene Blöcke« beinhaltet eigene Textblöcke, die wie Unterprogramme in eigenen Projekten wiederverwendet werden können. Diese Palette ist am Anfang leer. In

Kapitel 4.6

wird darauf eingegangen.

Zu Beginn sind die Blöcke der pinken und orangen Palette vollkommen ausreichend, um erste Programme zu erstellen. Für komplexere Aufgaben werden die Blöcke der weiteren Paletten benötigt. Dies wird in den folgenden Kapiteln ausgeführt und dargestellt.

Ein einfaches Programm, das einen Roboter mit zwei Motoren vorwärtsfahren lässt, sieht beispielsweise folgendermaßen aus. Die Details zu den einzelnen Blöcken werden in den Folgekapiteln je nach Aufgabenstellung vertieft.

Abb. 3–9 // Beispiel Motorensteuerung mit Textblöcken

3.1.5Einführung in die Bedienung der Python-Programmierumgebung