Vom Einsteiger zum Meisterprogrammierer mit Lego® Mindstorms®
Lektorat: Dr. Michael Barabas
Übersetzung: G&U Language & Publishing Services GmbH, www.gundu.com
Satz: G&U Language & Publishing Services GmbH, www.gundu.com
Copy-Editing: Ursula Zimpfer, Herrenberg
Herstellung: Susanne Bröckelmann
Umschlaggestaltung: Helmut Kraus, www.exclam.de
Druck und Bindung: M.P. Media-Print Informationstechnologie GmbH, 33100 Paderborn
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:
Buch 978-3-86490-275-8
PDF 978-3-86491-714-1
ePub 978-3-86491-715-8
Mobi 987-3-86491-716-5
1. Auflage 2015
Copyright der deutschen Übersetzung © 2015 dpunkt.verlag GmbH
Wieblinger Weg 17 · 69123 Heidelberg
Copyright der amerikanischen Originalausgabe: © 2014 by Terry Griffin
Titel der Originalausgabe: The Art of LEGO® MINDSTORMS® EV3 Programming
No Starch Press, Inc. · 245 8th Street, San Francisco, CA 94103 l www.nostarch.com
ISBN: 978-1-59327-568-6
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 sowie MINDSTORMS 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 im Zusammenhang mit der Verwendung dieses Buches stehen.
5 4 3 2 1 0
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+: |
Für meine Familie, die all die Arbeit lohnenswert macht. Und für Bella, die mir morgens einen Grund zum Aufstehen gibt.
Terry Griffin arbeitet seit über 20 Jahren als Softwareingenieur und hat den größten Teil dieser Zeit damit zugebracht, Software zur Steuerung der unterschiedlichsten Arten von Maschinen zu entwickeln. Er hat an der Universität von Massachusetts seinen Master in Informatik gemacht und am College sowie in der Erwachsenenbildung Programmierkurse gegeben. Als lebenslanger Lego-Fan hat er The Art of LEGO MINDSTORMS NXT Programming (No Starch Press) geschrieben, um seiner Frau, einer begeisterten Lehrerin für Naturwissenschaften und Mathematik für Sekundarstufe II, dabei zu helfen, die faszinierenden NXT-Roboter auch im Unterricht einzusetzen. Heute arbeitet er für das Ion Microscopy Innovation Center von Carl Zeiss und entwickelt dort Software zur Steuerung von Elektronen- und Ionenmikroskopen.
Daniele Benedettelli ist weltweit für seine originellen Lego-Roboter bekannt, vor allem für seine Lösungssysteme für den Zauberwürfel und seine menschenähnlichen Roboter. Als LEGO MINDSTORMS Community Partner (MCP) hilft er bei der Entwicklung und dem Test neuer Mindstorms-Produkte. Er hat einen Master in Robotik und Automatisierungstechnik von der Universität in Siena. Überall auf der Welt hält er Vorträge und Seminare über Robotik und Informations- und Kommunikationstechnologie. Außerdem unterrichtet er Robotik in der Oberstufe und entwirft als freier Mitarbeiter Lego-Modelle für die Lego-Unterrichtsprogramme. Aus seiner Feder stammt das Buch Das LEGO-MINDSTORMS-EV3-Labor (dpunkt).
Rob Torok arbeitet als Lehrer in Tasmanien und verwendet schon seit 2001 Lego-Robotik im Unterricht. Er hat Teams beim RoboCup Junior und dem FIRST Robotics Competition betreut und gibt den Online-Robotikkurs SmartBots. 2010 hat er sechs Monate im Tufts Center for Engineering Education and Outreach (CEEO) in Boston verbracht, mit dem er nach wie vor eng zusammenarbeitet. Zurzeit fungiert er als Redakteur sowohl für http://LEGOengineering.com/ als auch für http://LEGOeducation.com.au/.
Ich möchte meiner Familie für ihre Geduld während der Zeit danken, in der ich dieses Buch schrieb. Mein besonderer Dank gilt meiner Frau Liz, die zahllose Stunden mit der Durchsicht des Textes verbrachte und es gestattete, dass die Roboter den Esszimmertisch eroberten.
Ohne die Hilfe und die Unterstützung von Bill Pollock und allen Mitarbeitern bei No Starch Press wäre dieses Buch nicht möglich gewesen. Es war mir ein Vergnügen, mit Seph Kramer, Laurel Chun und Jennifer Griffith-Delgado zusammenzuarbeiten. Ihr Wissen und ihre Fachkenntnisse waren für die Fertigstellung dieses Projekts unverzichtbar.
Ich möchte auch meinen Fachgutachtern Daniele Benedettelli und Rob Torok danken. Ihre Kenntnisse über EV3 und Robotik im Allgemeinen waren eine große Hilfe, um den wirklich wichtigen Stoff auszuwählen und ihn technisch korrekt darzustellen.
Einleitung
Kapitel 1 Lego und Roboter: eine großartige Kombination
Kapitel 2 Die EV3-Programmierumgebung
Kapitel 3 TriBot: der Testroboter
Kapitel 4 Bewegung
Kapitel 5 Sensoren
Kapitel 6 Programmablauf
Kapitel 7 Das Programm WallFollower: Orientierung im Labyrinth
Kapitel 8 Datenleitungen
Kapitel 9 Datenleitungen am Schalterblock
Kapitel 10 Datenleitungen am Schleifenblock
Kapitel 11 Variablen
Kapitel 12 Eigene Blöcke
Kapitel 13 Der Mathe- und der Logikblock
Kapitel 14 Tasten, Statusleuchte und Anzeige des EV3-Steins
Kapitel 15 Arrays
Kapitel 16 Dateien
Kapitel 17 Datenprotokollierung
Kapitel 18 Multitasking
Kapitel 19 Eine PID-gesteuerte Version des Programms LineFollower
Anhang A Kompatibilität von NXT und EV3
Anhang B Websites rund um EV3
Index
Einleitung
Zielpublikum
Voraussetzungen
Der Inhalt dieses Buches
Wie du dieses Buch lesen solltest
1 Lego und Roboter: eine großartige Kombination
Lego Mindstorms EV3
Der Lego-Mindstorms-EV3-Kasten
Die Lego-Mindstorms-EV3-Software
Software, Firmware und Hardware
Kunst und Wissenschaft
Merkmale von guten Programmen
Was du in diesem Buch lernst
Die Online-Community zu Lego Mindstorms
Wie geht es weiter?
2 Die EV3-Programmierumgebung
Die Mindstorms-Software im Überblick
A: Der Programmierbereich
B: Der Inhalts-Editor
C: Die Programmierpaletten
D: Die Hardwareseite
E: Schaltflächen zum Herunterladen und Ausführen
EV3-Programme schreiben
Allgemeiner Aufbau von Blöcken
Dein erstes Programm
Deine Änderungen speichern
Sicherungskopien anlegen
Das Programm ausführen
Projekteigenschaften
Dein zweites Programm
Kommentare
Kommentare hinzufügen
Tipps für die Arbeit mit Kommentaren
Kontexthilfe
Zusammenfassung
3 TriBot: der Testroboter
Bestandteile des TriBots
Motor und Räder
Die Laufrolle
Die Laufrolle aus Teilen der Home Edition bauen
Die Laufrolle aus Teilen der Education Edition bauen
Den EV3-Stein hinzufügen
Den Infrarot- oder den Ultraschallsensor montieren
Den Farbsensor anschließen
Den Kreiselsensor anbauen (Education Edition)
Die Stoßstange mit Berührungssensor bauen
Die Kabel anschließen
Den Berührungssensor verkabeln
Den Infrarot- oder Ultraschallsensor verkabeln
Den Farbsensor verkabeln
Den Kreiselsensor verkabeln (Education Edition)
Die Motoren verkabeln
Alternative Platzierung des Farbsensors
Alternative Platzierung des Infrarot- oder Ultraschallsensors
Den Hubarm bauen
Zusammenfassung
4 Bewegung
Die EV3-Motoren
Der Bewegungslenkungsblock
Modus
Lenkung
Leistung
Dauer
Am Ende bremsen
Anschlüsse
Die Anschlussansicht
Die Anschlussansicht auf dem EV3-Stein
Das Programm ThereAndBack
Vorwärtsbewegung
Wenden
Einen einzelnen Block testen
Zurück zur Ausgangsposition
Das Programm AroundTheBlock
Die erste Seite und die erste Ecke
Die drei anderen Seiten und Ecken
Das Programm testen
Der Hebellenkungsblock
Die Blöcke für große und mittlere Motoren
Der Hubarm
Der Block »Motor umkehren«
Ein Problem bei der Einstellung »Auslaufen«
Noch mehr zum Ausprobieren
Zusammenfassung
5 Sensoren
Sensoren verwenden
Der Berührungssensor
Das Programm BumperBot
Vorwärtsbewegung
Hindernisse erkennen
Zurücksetzen und wenden
Aufgabe 5-1
Aufgabe 5-2
Testen
Der Farbsensor
Der Farbmodus
Stärke des reflektierten Lichts
Stärke des Umgebungslichts
Die Anschlussansicht
Aufgabe 5-3
Das Programm IsItBlue
Der Schalterblock
Das Programm verbessern
Das Programm LineFinder
Den Schwellenwert mithilfe der Anschlussansicht finden
Aufgabe 5-4
Aufgabe 5-5
Der Infrarotsensor und die Fernsteuerung
Der Nähemodus
Die Modi Signal-Richtung und Signal-Nähe
Der Fernsteuerungsmodus
Aufgabe 5-6
Das Programm BumperBotWithButtons
Der Ultraschallsensor
Die Modi »Distanz in Zentimetern« und »Distanz in Zoll«
Der Modus Anwesenheit/Wahrnehmen
Das Programm DoorChime
Eine Person wahrnehmen
Den Gong abspielen
Die Wiedergabe des Gongs beenden
Der Kreiselsensor
Der Ratenmodus
Der Winkelmodus
Den Winkel zurücksetzen
Das Programm GyroTurn
Aufgabe 5-7
Der Motorumdrehungssensor
Das Programm BumperBot2
Noch mehr zum Ausprobieren
Zusammenfassung
6 Programmablauf
Der Schalterblock
Die Bedingung festlegen
Die Größe eines Blocks ändern
Das Programm LineFollower
Das Grundprogramm
Einen Schwellenwert für den Farbsensor wählen
Die Bewegungslenkungsblöcke einrichten
Das Programm testen
Mehr als zwei Wahlmöglichkeiten
Das Programm testen
Die Registeransicht
Aufgabe 6-1
Das Programm RedOrBlue
Rote Objekte erkennen
Einen neuen Fall hinzufügen
Der Standardfall
Aufgabe 6-2
Der Schleifenblock
Der Schleifen-Interrupt-Block
Das Programm BumperBot3
Noch mehr zum Ausprobieren
Zusammenfassung
7 Das Programm WallFollower: Orientierung im Labyrinth
Pseudocode
Aus einem Labyrinth herausfinden
Anforderungen an das Programm
Annahmen
Erster Entwurf
Verwendung der Education-Ausgabe
Einer geraden Wand folgen
Den Code schreiben
Testen
Um die Ecke biegen
Den Code schreiben
Testen
Durch eine Öffnung fahren
Den Code schreiben
Testen
Klangblöcke für das Debugging
Abschlusstest
Noch mehr zum Ausprobieren
Zusammenfassung
8 Datenleitungen
Was sind Datenleitungen?
Das Programm GentleStop
Das Programm schreiben
Tipps für die Verwendung von Datenleitungen
Aufgabe 8-1
Das Programm SoundMachine
Die Lautstärke regeln
Den Matheblock verwenden
Die Tonhöhensteuerung hinzufügen
Datentypen
Die Frequenz- und Lautstärkewerte anzeigen
Den Textblock verwenden
Beschriftungen für angezeigte Werte hinzufügen
Die Lautstärke anzeigen
Aufgabe 8-2
Aufgabe 8-3
Aufgabe 8-4
Noch mehr zum Ausprobieren
Zusammenfassung
9 Datenleitungen am Schalterblock
Die Wertmodi des Schalterblocks
Das Programm GentleStop umschreiben
Daten in einen Schalterblock übergeben
Vorteile bei der Verwendung eines Sensorblocks
Daten aus einem Schalterblock heraus übergeben
Aufgabe 9-1
Das Programm LineFollower vereinfachen
Aufgabe 9-2
Noch mehr zum Ausprobieren
Zusammenfassung
10 Datenleitungen am Schleifenblock
Der Logikmodus
Aufgabe 10-1
Der Schleifenindex
Das Programm LoopIndexTest
Eine Schleife neu starten
Der letzte Wert des Schleifenindex
Das Programm SpiralLineFinder
Einen Spiralkurs fahren
Linien während der Spiralbewegung erkennen
Aufgabe 10-2
Bessere Drehungen mit dem Kreiselsensor
Noch mehr zum Ausprobieren
Zusammenfassung
11 Variablen
Der Variablenblock
Das Programm RedOrBlueCount
Variablen erstellen und initialisieren
Sinnvolle Variablennamen
Die Anfangswerte anzeigen
Die roten Objekte zählen
Die blauen Objekte zählen
Variablen auf der Projekteigenschaftenseite verwalten
Der Vergleichsblock
Das Programm LightPointer
Die Variablen definieren
Die Lichtquelle finden
Variablen initialisieren
Das Programm LightPointer schreiben
Der Konstantenblock
Aufgabe 11-1
Aufgabe 11-2
Noch mehr zum Ausprobieren
Zusammenfassung
12 Eigene Blöcke
Eigene Blöcke erstellen
Die Palette Eigene Blöcke
Eigene Blöcke bearbeiten
Aufgabe 12-1
Der Eigene Block LogicToText
Parameter hinzufügen, entfernen und verschieben
Das Register Parametereinrichtung
Der Eigene Block DisplayNumber
Eigene Blöcke und das Debugging
Parameter von Eigenen Blöcken ändern
Variablen und Eigene Blöcke
Aufgabe 12-2
Noch mehr zum Ausprobieren
Zusammenfassung
13 Der Mathe- und der Logikblock
Der Modus »Großer Funktionsumfang« des Matheblocks
Unterstützte Operatoren und Funktionen
Der Modulo-Operator
Fehler im Matheblock
Ein proportionales Spurfolgeprogramm
EV3-Zeitgeber
Aufgabe 13-1
Das Programm DisplayTimer
Den Zeitgeber-Messwert in Minuten und Sekunden aufteilen
Den Text für die Anzeige zusammenstellen
Der Rundungsblock
Aufgabe 13-2
Aufgabe 13-3
Der Zufallsblock
Das Programm BumperBot mit einer zufälligen Drehung
Der Logikblock
Logische Operationen im Programm BumperBot
Der Bereichsblock
Das Programm TagAlong
Das Programm GyroPointer
Aufgabe 13-4
Noch mehr zum Ausprobieren
Zusammenfassung
14 Tasten, Statusleuchte und Anzeige des EV3-Steins
Die Tasten des EV3-Steins
Das Programm PowerSetting
Der Anfangswert und die Schleife
Den aktuellen Wert anzeigen
Den Leistungswert anpassen
Das Programm testen
Schnelle Änderung des Werts
Aufgabe 14-1
Die Stein-Statusleuchte
Das Programm ColorCopy
Aufgabe 14-2
Der Anzeigeblock
Ein Bild anzeigen
Das Programm Eyes
Auf dem EV3-Bildschirm zeichnen
Das Programm EV3Sketch
Noch mehr zum Ausprobieren
Zusammenfassung
15 Arrays
Überblick und Terminologie
Arrays erstellen
Der Block Array-Operationen
Der Längemodus
Der Modus »Lesen aus Index«
Der Modus »Schreiben in Index«
Der Modus »Anfügen«
Das Programm ArrayTest
Aufgabe 15-1
Das Programm ButtonCommand
Das Befehlsarray erstellen
Die Befehle anzeigen
Die Befehle ausführen
Aufgabe 15-2
Das Programm ColorCount
Der Eigene Block ColorToText
Der Eigene Block AddColorCount
Eine Klangdatei über eine Datenleitung auswählen
Initialisierung
Farben zählen
Das Programm MemoryGame
Der Anfang der Schleife
Die Farbfolge zusammenstellen
Der Eigene Block WaitForButton
Die Antwort des Benutzers überprüfen
Noch mehr zum Ausprobieren
Zusammenfassung
16 Dateien
Der Dateizugriffsblock
Den Dateinamen festlegen
In eine Datei schreiben
Probleme mit Dateinamen verhindern
Aus einer Datei lesen
Den Highscore in MemoryGame speichern
Das Programm FileReader
Aufgabe 16-1
Das Dateiende finden
Dem Programm ColorCount ein Menü hinzufügen
Der Eigene Block CreateMenu_CC
Der Eigene Block SelectOption
Die neue Struktur des Programms ColorCount
Objekte zählen
Die Zähldaten speichern und laden
Testen
Aufgabe 16-2
Speicherverwaltung
Noch mehr zum Ausprobieren
EV3-Textdateien unter Windows
Zusammenfassung
17 Datenprotokollierung
Datenerfassung mit dem EV3-System
Der Messwert »Stromstärke«
Das Programm CurrentPowerTest
Der Eigene Block LogData
Das Programm CurrentPowerTest2
Aufgabe 17-1
Die aktuelle Leistung mit dem Bewegungslenkungsblock testen
Das Programm SteeringTest
Das Programm VerifyLightPointer
Aufgabe 17-2
Die Menge der Daten beeinflussen
Noch mehr zum Ausprobieren
Zusammenfassung
18 Multitasking
Mehrere Startblöcke
Der Block »Programm beenden«
Aufgabe 18-1
Blockierende Schleifen vermeiden
Ein Blinklicht zum Programm DoorChime hinzufügen
Programmablaufregeln
Startblöcke und Datenleitungen
Werte aus einem Schleifen- oder Schalterblock verwenden
Eigene Blöcke verwenden
Zwei Sequenzen zeitlich abstimmen
Schwierigkeiten vermeiden
Noch mehr zum Ausprobieren
Zusammenfassung
19 Eine PID-gesteuerte Version des Programms LineFollower
Der PID-Regler
Proportionalregelung
Die Rohdaten
Gute und schlechte Zonen
Den niedrigsten und den höchsten Messwert des Sensors bestimmen
Die Sensormesswerte und den Sollwert normalisieren
Die Proportionalregelung des Programms LineFollower verbessern
Die Kalibrierungsmodi des Farbsensors
Die PID-Regelung hinzufügen
Den Differenzialterm hinzufügen
Den Integralterm hinzufügen
Den Regler einstellen
Noch mehr zum Ausprobieren
Zusammenfassung
A Kompatibilität von NXT und EV3
Motoren
Sensoren
Software
B Websites rund um EV3
Index
In diesem Buch geht es darum, Programme für Lego-Mind-storms-EV3-Roboter zu schreiben. Die EV3-Software ist sehr leistungsfähig, und hier lernst du, wie du sie am besten nutzt, und erwirbst die Programmierkenntnisse, die du zum Schreiben deiner eigenen Programme benötigst.
Dieses Buch ist für alle geeignet, die lernen wollen, wie sie Programme zur Steuerung ihrer EV3-Roboter schreiben können. Es spielt keine Rolle, ob du ein junger Roboterfan bist, ein Erwachsener, der Robotik für Kinder unterrichtet, ein Elternteil, ein FIRST-LEGO-League-Teambetreuer oder ein Lehrer, der EV3 im Unterricht einsetzt. Beim Schreiben dieses Buches habe ich einerseits darauf geachtet, den Stoff auch für junge Leser aufzubereiten, und andererseits genügend in die Tiefe zu gehen, um Schülern und Lehrern das Wie und Warum der EV3-Programmierung zu erschließen.
Zum Testen sämtlicher Programme wird ein einziger Allzweckroboter verwendet, den du sowohl mit der normalen Einzelhandels- als auch der Education-Ausgabe von EV3 bauen kannst. Es gibt bei den Programmen nur ein paar wenige wichtige Unterschiede zwischen den beiden Ausgaben, auf die ich jeweils hinweisen werde. Fast der gesamte hier dargestellte Stoff kann mit beiden Ausgaben nachvollzogen werden.
Vorkenntnisse in Programmierung sind nicht erforderlich. Die EV3-Software ist leistungsfähig, aber einfach anzuwenden, und bildet ein hervorragendes Werkzeug für die erste Einführung in die Programmierung.
In diesem Buch geht es um die Programmierung von EV3-Robotern und nicht um den mechanischen Teil beim Bauen. Alle Programme in diesem Buch sind entweder für einen Allzweckroboter gedacht oder auch nur für den EV3-Stein. Du lernst hier, wie du mit den wichtigsten Elementen der EV3-Software arbeitest, also z. B. mit Blöcken, Datenleitungen, Dateien und Variablen, und wie diese Elemente zusammenwirken. Außerdem erfährst du etwas über gute Programmiertechniken, über schlechte Angewohnheiten, die du vermeiden solltest, und über Debugging-Verfahren, mit denen du frustrierende Erfahrungen in Grenzen halten kannst, um mehr Spaß beim Programmieren zu haben.
In diesem Buch findest du Schritt-für-Schritt-Anleitungen und Erklärungen für viele EV3-Programme. Das sind einerseits kleine Beispiele, die dazu dienen, dir die Funktionsweise von EV3-Programmen genau deutlich zu machen, andererseits aber auch anspruchsvolle Programme, die vielschichtige Verhaltensweisen zeigen. Zwischendurch wirst du auch immer wieder Programmieraufgaben finden, in denen du dazu aufgefordert wirst, dich selbstständig mit Fragen der EV3-Programmierung zu befassen, um das Gelernte zu vertiefen.
Zu Anfang des Buches steht eine Einführung in den EV3-Kasten und die Software, die du zum Schreiben der Programme verwendest. Darauf folgt die Bauanleitung für den Testroboter. Die nächsten Kapitel behandeln die Grundlagen der EV3-Software, was in Kapitel 7 mit einem Programm seinen Höhepunkt findet, mit dem der Roboter aus einem Labyrinth herausfinden kann. Darauf folgen mehrere Kapitel, die fortgeschrittenere Elemente der Programmierumgebung behandeln. Am Schluss des Buches steht ein anspruchsvolles Spurfolgeprogramm mit PID-Regler. Der folgende Überblick zeigt, was du in den einzelnen Kapiteln lernen wirst.
Kapitel 1: Lego und Roboter: eine großartige Kombination
Das erste Kapitel gibt eine kurze Einführung in die Software Lego Mindstorms EV3. Außerdem stellt es die Unterschiede zwischen der Einzelhandels- und der Education-Ausgabe und deren Auswirkungen auf die Experimente in diesem Buch vor.
Kapitel 2: Die EV3-Programmierumgebung
In diesem Kapitel werden die einzelnen Merkmale der EV3-Software vorgestellt. Anhand von zwei einfachen Beispielen erfährst du, wie du Programme erstellst und auf dem EV3-Stein ausführst. Hier lernst du auch, wie du Blockparameter änderst, Kommentare hinzufügst und die Anschlussansicht nutzt.
Kapitel 3: TriBot: der Testroboter
In diesem Kapitel baust du den Testroboter TriBot. Diesen Allzweckroboter wirst du zum Prüfen sämtlicher Programme in diesem Buch verwenden.
Kapitel 4: Bewegung
In diesem Kapitel geht es um die EV3-Motoren und die Blöcke zu deren Steuerung. Hier erstellst du mehrere Programme, die die typische Verwendung dieser Blöcke veranschaulichen. Außerdem wirst du auf einige Fallstricke hingewiesen, über die Lego-Bastler häufig stolpern.
Kapitel 5: Sensoren
Dieses Kapitel behandelt die EV3-Sensoren: den Berührungs-, den Farb-, den Ultraschall-, den Infrarot-, den Kreisel- und den Motorumdrehungssensor. Für jeden dieser Sensoren schreibst du ein Beispielprogramm. Du erfährst hier auch, wie du dir die Sensorwerte in der Anschlussansicht anschauen kannst, während du ein Programm entwickelst oder ausführst.
Kapitel 6: Programmablauf
Schwerpunkt dieses Kapitels sind der Schalterblock (mit dem du in deinen Programmen Entscheidungen treffen kannst) und der Schleifenblock (mit dem sich Aktionen in einem Programm wiederholen lassen). Mit diesen Programmablaufblöcken schreibst du ein einfaches Spurfolgeprogramm.
Kapitel 7: Das Programm WallFollower: Orientierung im Labyrinth
Nachdem du nun die Grundlagen der EV3-Programmierung beherrschst, bist du jetzt in der Lage, kompliziertere Aufgabenstellungen anzupacken. In diesem Kapitel lernst du, wie du ein Wandfolgeprogramm, mit dem dein Roboter aus einem Labyrinth herausfinden kann, gestaltest, schreibst und darin Fehler behebst.
Kapitel 8: Datenleitungen
Datenleitungen gehören zu den vielseitigsten Elementen für die EV3-Programmierung. In diesem Kapitel erfährst du, was Datenleitungen sind und wie du sie wirkungsvoll einsetzt. Die Beispielprogramme zeigen dir, wie du mithilfe von Datenleitungen Informationen von Sensoren abrufst und wie du anhand dieser Sensordaten einen Motor steuerst.
Kapitel 9: Datenleitungen am Schalterblock
In diesem Kapitel geht es um die anspruchsvolleren Merkmale des Schalterblocks, die bei der Verwendung von Datenleitungen zur Verfügung stehen. Außerdem lernst du hier, wie du Daten über Datenleitungen in einen Schalterblock hinein- und aus ihm herausführst.
Kapitel 10: Datenleitungen am Schleifenblock
In diesem Kapitel lernst du den Umgang mit Datenleitungen an Schleifenblöcken kennen. Du erstellst ein Programm, das den Roboter in einem rechteckigen Spiralkurs bewegt, und verwendest dabei neue Techniken wie Schleifenzähler und die Beendigungsbedingung der Schleife.
Kapitel 11: Variablen
Thema dieses Kapitels sind der Variablen- und der Konstantenblock. Du lernst hier, wie du Variablen hinzufügst und verwaltest, um Werte zu speichern und zu aktualisieren.
Kapitel 12: Eigene Blöcke
Ein Eigener Block ist ein neuer Block, den du erstellst, indem du mehrere andere Blöcke gruppierst. In diesem Kapitel erfährst du, wie du Eigene Blöcke anlegst, in deinen Programmen verwendest und sie von einem Projekt zu einem anderen überträgst.
Kapitel 13: Der Mathe- und der Logikblock
Dieses Kapitel beschreibt die Blöcke für mathematische und logische Operationen: den Mathe-, den Logik-, den Bereichs-, den Rundungs- und den Zufallsblock. Du lernst die erweiterte Verwendung dieser Blöcke kennen, indem du einige der in früheren Kapiteln geschriebenen Programme ausbaust.
Kapitel 14: Tasten, Statusleuchte und Anzeige des EV3-Steins
In diesem Kapitel lernst du, wie du ein Programm über die SteinTasten steuerst, wie du mithilfe des Stein-Statusleuchten-Blocks die farbigen Lichter auf dem EV3-Stein verwendest und wie du auf die Anzeige auf dem Stein zugreifst. Als Beispiel wirst du dazu ein einfaches Zeichenprogramm schreiben.
Kapitel 15: Arrays
Thema dieses Kapitels sind Arrays und ihre Verwendung in der EV3-Programmierung. Hier entwickelst du ein Programm, mit dem du dem TriBot eine Liste von Befehlen vorgeben kannst, die er ausführen soll.
Kapitel 16: Dateien
In diesem Kapitel erfährst du, wie du mithilfe von Dateien Informationen auf dem EV3-Stein speicherst, wie du den Speicher des EV3-Steins verwaltest und wie du Dateien vom EV3-Stein auf den Computer überträgst und umgekehrt. Hier entwickelst du auch ein Programm, dessen Einstellungen du in einer Datei speichern und später wieder von dort abrufen kannst.
Kapitel 17: Datenprotokollierung
Die Programme in diesem Kapitel zeigen dir, wie du den EV3-Stein zur Datenprotokollierung verwenden kannst. Hier zeige ich dir die Grundlagen der Datenerfassung und -analyse. Außerdem nutzen wir die Datenprotokollierung, um ein tieferes Verständnis der Funktionsweise des Bewegungslenkungsblocks zu gewinnen.
Kapitel 18: Multitasking
Der EV3-Stein kann mehrere Gruppen von Blöcken parallel ausführen. Hier lernst du, wie du mehrere Sequenzen gleichzeitig ausführst und wie du Probleme vermeidest, die dabei häufig auftreten.
Kapitel 19: Eine PID-gesteuerte Version des Programms LineFollower
Im letzten Kapitel verwenden wir anspruchsvolle EV3-Programmierfunktionen, um ein hoch entwickeltes Spurfolgeprogramm zu schreiben. Du lernst hier, wie du einen PID-Regler (Proportional-Integral-Differenzial) einsetzt, um den Roboter so zu steuern, dass er der Linie schnell und genau folgt.
Anhang A: Kompatibilität von NXT und EV3
In diesem Anhang geht es um die gemeinsame Verwendung von älteren NXT-Mindstorms- und EV3-Produkten.
Anhang B: Websites rund um EV3
Dieser Anhang stellt Websites mit Informationen über EV3-Programmierung vor.
Um den größten Nutzen aus diesem Buch zu ziehen, solltest du beim Lesen die Schritt-für-Schritt-Anleitungen zum Erstellen der Beispielprogramme auf deinem Computer nachvollziehen. Programmieren gehört zu den Tätigkeiten, die man am besten durch Ausprobieren lernt. Du kannst auf jeden Fall viel mehr lernen, wenn du Programme selbst schreibst und mit ihnen herumexperimentierst, als wenn du nur über sie liest.
Zum besseren Verständnis der Programme und der zugehörigen Erklärungen ist es am besten, die Kapitel in der vorgegebenen Reihenfolge zu lesen. In den ersten Kapiteln werden mehrere Beispielprogramme eingeführt, die du dann in späteren Kapiteln, wenn du mehr über die EV3-Programmierung weißt, erweiterst. Wenn du am Ende des Buches angelangt bist, verfügst du über die Kenntnisse und Fähigkeiten eines erfahrenen EV3-Programmierers!
Lego und Roboter: eine großartige Kombination
Willkommen in der Welt der Robotik! Es ist noch gar nicht so lange her, da konnte man Roboter nur in Science-Fiction-Geschichten finden. Heutzutage gehören Roboter unzweifelhaft zur Realität und führen eine breite Palette wichtiger Aufgaben durch, von der Erforschung fremder Planeten und Unterwasservulkane über die Automontage bis zur Chirurgie. Abbildung 1-1 zeigt den Mars-Forschungsrover Curiosity. Du kannst im Elektrohandel inzwischen sogar Roboter kaufen, die den Boden fegen, während du dich ausruhst!
Abbildung 1-1: Mars-Forschungsrover (mit freundlicher Genehmigung von NASA/JPL-Caltech)
Mit dem Bausystem Lego Mindstorms EV3 kannst du eigene Roboter bauen. Abbildung 1-2 zeigt eines der vielen möglichen Modelle – einen einfachen Roboter, der dein Wohnzimmer erkundet.
Abbildung 1-2: Der Wohnzimmer-Rover
Es macht sehr viel Spaß, mit dem EV3-Kasten herumzuspielen, aber er ist mehr als nur ein Spielzeug. Lehrer in der Mittel- und Oberstufe setzen dieses System ein, um natur- und ingenieurwissenschaftliche Kenntnisse zu vermitteln. Die Lego-Gruppe hat mit LEGO Education sogar eine pädagogische Abteilung, die Lernmittel für den Einsatz von Lego-Produkten im Unterricht bereitstellt.
In Bildungswettbewerben wie der FIRST LEGO League (FLL), der World Robot Olympiad und RoboCup Junior nutzen Schüler aus aller Welt Mindstorms-Kästen, um Roboter zu bauen und mit ihnen die vorgegebenen Aufgaben zu lösen.
Den EV3-Kasten gibt es in zwei Versionen: Die Einzelhandelsversion (Home Edition) mit der Bestellnummer 31313 wird in normalen Geschäften verkauft und ist für das allgemeine Publikum gedacht, die Education-Version mit der Nummer 45544 wird von LEGO Education an Schulen, Erzieher und FLL-Teams verkauft. Zwischen den beiden Ausgaben gibt es kleine Unterschiede bei der Zusammenstellung der Lego-Bauteile und Sensoren. Außerdem verfügt die Education-Ausgabe der Software über einige zusätzliche Funktionen, die es erlauben, den EV3-Stein für wissenschaftliche Experimente einzusetzen. Für unsere Zwecke spielen diese Unterschiede jedoch keine Rolle, denn unseren Roboter kannst du sowohl mit der Einzelhandels- als auch mit der Education-Ausgabe bauen. Es gibt zwar kleine Unterschiede zwischen den Robotern der beiden Ausgaben (z. B. unterschiedliche Reifengrößen), die aber nicht ins Gewicht fallen.
Der EV3-Kasten ist die dritte Generation von Lego Mindstorms. Viele der Teile aus dem Vorgängersystem NXT können auch zusammen mit dem EV3-Stein eingesetzt werden. Einzelheiten darüber findest du in Anhang A.
Der EV3-Kasten enthält den intelligenten EV3-Stein, drei Motoren, mehrere Sensoren, eine Anleitung zum Herunterladen der Mind-storms-EV3-Software sowie Lego-Elemente zum Bauen von Robotern. Wie schon im vorherigen Abschnitt erwähnt, hängt der genaue Inhalt des Kastens von der Version ab.
Zu den Bauelementen gehören Zahnräder, Achsen, Pins und Balken aus der Produktreihe Lego Technic (siehe Abbildung 1-3). Diese Bauteile sind sowohl stabil als auch leicht und lassen sich zu anspruchsvollen beweglichen Teilen zusammensetzen. Dadurch sind sie ideal für den Roboterbau geeignet. Zur Erweiterung deiner Roboter kannst du auch andere Teile aus Technic-, Bionicle- und sogar herkömmlichen Lego-Kästen verwenden.
Abbildung 1-3: Balken und Pins
Der intelligente EV3-Stein bildet das Gehirn deines Roboters. Es handelt sich dabei praktisch um einen kleinen Computer, den du so programmieren kannst, dass sich deine Modelle bewegen. Statt eines ausgewachsenen Monitors und einer Tastatur bringt der Stein einen kleinen LCD-Bildschirm, einige Tasten und Anschlüsse für Motoren und Sensoren mit. Du kannst die Programme direkt auf dem EV3-Stein erstellen (»On-Brick-Programmierung«), sie aber auch in der EV3-Software für Windows oder OS X schreiben und dann auf den EV3-Stein herunterladen. Bei der Ausführung eines solchen Programms ruft der EV3-Stein Daten von den Sensoren ab und bewegt die Motoren gemäß den Anweisungen, die du in dem Programm gegeben hast.
Mit den EV3-Motoren kannst du aus einem Lego-Modell einen beweglichen Roboter machen. Die beiden großen Motoren ermöglichen es, mobile Roboter zu bauen, die sich auf Rädern oder Raupenketten bewegen. Außerdem kannst du mithilfe dieser Motoren und des dritten, kleineren Motors auch Roboterhände, Kräne, Katapulte und andere Vorrichtungen konstruieren. Bei vielen Robotern dienen zwei Motoren zur Fortbewegung, während der dritte eine andere Funktion ausführt. Es gibt aber auch Modelle, die sich gar nicht bewegen, sondern alle drei Motoren für andere Aufgaben einsetzen.
Die EV3-Sensoren ermöglichen es dem Roboter, entsprechend deinen Befehlen auf seine Umgebung zu reagieren. Im EV3-System gibt es Ultraschall-, Infrarot-, Berührungs-, Farb-, Kreisel- und Motorumdrehungssensoren. Die Umdrehungssensoren sind in die EV3-Motoren eingebaut, alle anderen sind eigene Bauteile. Die einzelnen Sensoren weisen folgende Funktionen auf:
Ultraschallsensor: Misst den Abstand zu einem Objekt oder einem Hindernis. Er kann auch die Anwesenheit eines anderen Ultraschallsensors erkennen.
Infrarotsensor: Misst den Abstand zu einem Objekt oder einem Hindernis. Er kann auch den Abstand und die Richtung zur Infrarotfernsteuerung erkennen und reagiert auf Betätigung der Tasten auf der Fernsteuerung.
Berührungssensor: Erkennt die Betätigung des Druckschalters an der Vorderseite des Sensors. Damit kann der Roboter feststellen, wenn er gegen ein Hindernis läuft oder wenn ein Objekt ihn berührt.
Farbsensor: Erkennt die Farbe eines Objekts oder die Helligkeit des Lichts, das vorn auf den Sensor trifft. Dieser Sensor verfügt an der Vorderseite über eine kleine Leuchte, sodass er sowohl das Umgebungs- als auch das reflektierte Licht messen kann.
Kreiselsensor (Gyrosensor): Misst Drehbewegungen. Dabei kann er sowohl die Drehzahl als auch den Winkel ermitteln, um den sich der Roboter dreht.
Motorumdrehungssensor: Misst die Umdrehungen des Motors. Jeder EV3-Motor verfügt über einen eingebauten Umdrehungssensor.
Die Einzelhandelsversion enthält einen Berührungs-, einen Farb- und einen Infrarotsensor sowie die Infrarotfernsteuerung. In der Education-Version findest du zwei Berührungssensoren, einen Farb-, einen Ultraschall- und einen Kreiselsensor. Je nach Version hast du also entweder einen Ultraschall- oder einen Infrarotsensor zur Verfügung. Mit beiden ist es möglich, den Abstand des Roboters von einem Objekt zu messen. Bei den meisten Beispielprogrammen in diesem Buch kannst du sowohl den Ultraschall- als auch den Infrarotsensor verwenden.
Die Lego-Gruppe bietet zusätzlich (getrennt erhältliche) Temperatursensoren an. Auch andere Firmen stellen weitere Sensoren für das EV3-System her, z. B. HiTechnic, Vernier, Dexter Industries und Mindsensors. Erhältlich sind von ihnen u. a. ein Kompass, ein Beschleunigungs- und ein Luftdrucksensor.
Die EV3-Software ist eine grafische Programmierumgebung mit sämtlichen Werkzeugen, die du brauchst, um Programme für EV3-Roboter zu erstellen. Diese Art von Anwendung wird oft als integrierte Entwicklungsumgebung bezeichnet (Integrated Development Environment, daher kurz IDE). Bei der EV3-IDE handelt es sich um eine grafische Programmierumgebung, da du das Programm aus farbigen Symbolen, sogenannten Blöcken, zusammenstellst. Es gibt Blöcke zur Steuerung der Motoren, zur Verwendung der Sensoren und für viele andere Aufgaben. Um ein Programm zu erstellen, verschiebst du Blöcke auf dem Bildschirm, verbindest sie und änderst ihre Einstellungen.
Die EV3-Software bietet einen bemerkenswerten Kompromiss zwischen einfacher Bedienung und Programmierleistung. Es ist damit sehr leicht, einfache Programme zu schreiben, und doch kannst du damit auch sehr komplizierte Programme erstellen. Einige der erweiterten Funktionen mögen zu Anfang etwas schwer verständlich sein, aber mit ein wenig Übung werden sie dir schon einleuchten.
Dein Programm ist eines der drei Elemente, die zusammen dafür sorgen, dass du deinen Roboter steuern kannst: Es stellt die sogenannte Software dar, also eine Zusammenstellung von Anweisungen, die ein Computer ausführen kann. Der Computer ist in diesem Fall der EV3-Stein. Das Wörtchen »soft«, also »weich«, in der Bezeichnung »Software« rührt daher, dass sich Änderungen leicht durchführen lassen. Diese Formbarkeit macht es möglich, nur mit dem EV3-Stein, drei Motoren und einigen wenigen Sensoren eine unendliche Vielzahl von Programmen zu erstellen.
Blöcke in einem grafischen Programmierbereich anzuordnen, ist für uns Menschen eine bequeme Möglichkeit, um Programme zu erstellen, aber um das Programm ausführen zu können, braucht der EV3-Stein etwas anderes. Dein Programm ist der sogenannte Quellcode, der erst in einen Satz von Anweisungen übersetzt werden muss, die der EV3-Stein verstehen kann. Anschließend müssen diese Anweisungen von deinem Computer auf den Stein kopiert werden. Nachdem das Programm übersetzt und heruntergeladen ist, kannst du es ausführen.
Auf dem Stein selbst läuft außerdem ein Programm, das als Firmware bezeichnet wird und sich nur selten ändert. Im Grunde genommen gehört es mit zu dem Gerät. Die EV3-Firmware ist etwa mit dem Betriebssystem eines Computers oder eines Smartphones wie Windows, iOS, Linux oder Android zu vergleichen. Sie ist das Programm, das einen Klang abspielt, wenn du den Stein einschaltest, das die Anzeige steuert und auf die Betätigung der Tasten auf dem Stein reagiert. Wenn du den EV3-Stein mit einem Computer verbindest, kommuniziert die Mindstorms-Umgebung mit der Firmware des Steins.
HINWEIS Hin und wieder aktualisiert Lego die Firmware, um neue Funktionen hinzuzufügen oder Probleme zu beheben. Wenn dein Computer mit dem Internet verbunden ist, sucht die Mindstorms-Anwendung nach Aktualisierungen und fordert dich bei Bedarf auf, sie herunterzuladen.
Der EV3-Stein ist die Hardware, auf der deine Programme laufen. Der Begriff »Hardware« bezeichnet die physischen Teile eines Computers. Dazu gehören der EV3-Stein, die Motoren, die Sensoren und die LegoBauelemente. Die Hardware ändert sich nicht. Du kannst sie umbauen und sogar auf verschiedene Weise einsetzen, aber die Fähigkeiten der einzelnen Teile bleiben gleich.
Der faszinierendste Aspekt beim Bau eines Roboters besteht für mich darin, das Programm zu schreiben, das ihn zum Leben erweckt. Computerprogrammierung ist eine Kunst und eine Wissenschaft zugleich. Wir wenden wissenschaftliche Prinzipien an, wenn wir einer Reihe logischer Schritte folgen, um ein praktisches Problem zu lösen. Im weiteren Verlauf dieses Buches – und vor allem bei den längeren Programmen am Ende – lernst du wissenschaftliche Prinzipien und Programmiertechniken kennen, die dir helfen, bessere Programme zu schreiben (und einige geläufige schlechte Gewohnheiten abzulegen). Der grundlegende Vorgang beim Schreiben eines Programms, das ein bestimmtes Problem lösen soll, ist jedoch eher eine Kunst als eine Wissenschaft. Beim Programmieren gehst du meistens nicht Schritt für Schritt nach einem festen Schema vor, sondern brauchst eine Menge Kreativität und Einfallsreichtum. Dieses schöpferische Nachdenken ist es, was mir beim Programmieren so viel Spaß macht.
Programmieren kann jedoch auch enttäuschend und entmutigend sein, wenn etwas nicht so läuft, wie du es dir vorstellst. Die Gründe dafür, dass ein Programm nicht funktioniert, können manchmal ziemlich rätselhaft sein. In diesem Buch zeige ich dir daher immer wieder, wie du Problemen mit deinen Programmen auf den Grund gehst und sie behebst. Denke dabei aber immer daran, dass auch die Lösung eines Rätsels Spaß machen soll!
Viele der Entscheidungen, die du beim Schreiben deiner Programme triffst, sind Geschmackssache. Im Laufe der Zeit wirst du deinen persönlichen Programmierstil entwickeln. Es bestehen fast immer mehrere korrekte Möglichkeiten, um ein Problem zu lösen. Allerdings gibt es auch drei Regeln, mit denen du die Qualität eines Programms bestimmen kannst. Gute Programme weisen folgende Eigenschaften auf:
1. Sie erfüllen die vorgesehene Funktion.