image

PROGRAMMIEREN LERNEN MIT EV3

Vom Einsteiger zum Meisterprogrammierer mit Lego® Mindstorms®

Terry Griffin

Image

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

image

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.de/plus

Für meine Familie, die all die Arbeit lohnenswert macht. Und für Bella, die mir morgens einen Grund zum Aufstehen gibt.

Der Autor

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.

Die Fachgutachter

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/.

Danksagung

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.

Übersicht

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

Inhaltsverzeichnis

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

Einleitung

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.

Zielpublikum

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.

Voraussetzungen

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.

Der Inhalt dieses Buches

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.

Wie du dieses Buch lesen solltest

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!

1

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!

image

Abbildung 1-1: Mars-Forschungsrover (mit freundlicher Genehmigung von NASA/JPL-Caltech)

Lego Mindstorms EV3

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.

image

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 Lego-Mindstorms-EV3-Kasten

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.

image

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:

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 Lego-Mindstorms-EV3-Software

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.

Software, Firmware und Hardware

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.

Kunst und Wissenschaft

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!

Merkmale von guten Programmen

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.