Erste Schritte in der Robotik mit dem Thymio-II Roboter und der Aseba/VPL Umgebung

Ähnliche Dokumente
Erste Schritte mit Robotik mit dem Thymio Roboter und der Aseba/VPL Umgebung

Fragebogen zur Programmierung mit Aseba / VPL

Lerne programmieren mit Grundlagen

Lerne programmieren mit Sequentielle Programmierung mit VPL

Erste Schritte zum Start findest du hier:

Baue deinen ersten Roboter

Wie können See how wir far Enchanting away something mitteilen, is. dass am NXT der Lichtsensor an Port 3 angeschlossen ist?

Aufgabe Im Quadrat fahren

Erste Schritte mit dem Thymio-II Roboter

THYMIO II ROBOTER PROGRAMMIEREN. Anleitung

AUDITORIX im Unterricht Modulare Lerneinheit Technik Wissen für Kinder Das Mini-Tonstudio Aufnehmen, Schneiden und Mischen mit Audacity Seite 1

Bedienungsanleitung für MEEM-Kabel-Desktop-App Mac

Comic Life 3.x. Fortbildung zum Mediencurriculum

Programmieren mit RoboLab Bauen mit Lego

Your EdVenture into Robotics Infos

Der CodeBug. A) Erste Schritte. 1) Einleitung

Aktivitäten mit dem Roboter Thymio II für die Einführung in die Informatik und Robotik

Arbeitsblatt: Wie rede ich mit einem Roboter?

ElitePET ACHTUNG: Nutzen Sie nur den mitgelieferten AC-Adapter um den Empfänger zu laden. Halten Sie die Sendeantenne fern von Magneten.

Bedienungsanleitung LivingColors Iris

3 Mit Programmen und Fenstern

Im Dienste kranker Kinder. Bedienungsanleitung

Inhaltsverzeichnis. 1 Anfang 2. 2 Erste Schritte 3. 3 Schleifen repeat while(true) Die if()-schleife... 5.

Programmieren des NXT-Roboters mit LabView 2010

Deinen EV3-Kasten vorbereiten

Anleitung DGTV Fernbedienung

Word starten. Word Word 2010 starten. Schritt 1

cagebot control quick start guide trike robot revision 1.3

Lösungen für die Arbeitsblätter

Installation des Thermotransferdruckers MG2 bei Windows XP (SP2)

Eine kleine Einführung zum Homenostruktor

TL2200QVP. Bedienungsanleitung des Steppstichregulators

Etoys für Einsteiger

Raspberry Pi meets Pocket Code. Tutorial: Ampelschaltung

ILIFE V5s Roboter Staubsauger und Nasswischer

Bedienungsanleitung für MEEM-Kabel-Desktop-App Windows

Luftballons. Einführung. Scratch. Wir wollen ein Spiel machen, bei dem man Luftballons platzen lässt! Activity Checklist.

So gibst du die Richtung mit einem Kompass vor

1/12. IdeenSet Robotik. Pro-Bot Aufgabenblätter. IdeenSet Robotik. PHBern 2015,

Informatik und Robotik: Von spannenden Problemen zu kreativen Lösungen

Comic Life 2.x. Fortbildung zum Mediencurriculum

Anleitung edrawings (Version 2008)

Thymio VPL Workshop für die Sekundarstufe I

Trickfilm- Geburtstag

Um den Schreibtisch editieren zu können, gehen Sie bitte auf das Symbol für den Schreibtisch.

Die Bedienung von Yosemite

Für was steht das D in 3D? Kreuze die richtige Antwort an! Dinge Dimensionen Details

SP-1101W/SP-2101W Quick Installation Guide

KONFIGURATOR-SOFTWARE (S009-50) Kurzanleitung

Kurzanleitung Hama Photokalender v

NuVinci Desktop PC Gebrauchsanweisung (enthält NuVinci Harmony Sortware-Update Anleitung)

Sobald Ihr tolino über ein USB-Kabel mit Ihrem Computer verbunden ist, sehen Sie oben links in der Statusleiste dieses Symbol.

Cover-Tutorial: Beispiel 1. In 10 Schritten. zu einem besseren Cover-Layout. Cover-Layout Querformat: Mit vier Bildern unten

Fensterverhalten. Mike McBride Jost Schenck Deutsche Übersetzung: Matthias Kiefer

Microsoft Explorer Laufwerke, Verzeichnisse, Ordner und Dateien

DuoFern Funksender UP 9497 als Sensor verwenden

Installation und Benutzung. LangCorr ApS Erritsoegaardsvej 11 DK 7000 Fredericia Denmark

zur Verfügung gestellt durch das OpenOffice.org Dokumentations-Projekt

Anleitung der Smart-Life-App. Anleitung: Version 1.2 ios: Version 1.7 Android: Version 2.08

Erste Schritte mit Ihrer neuen Silhouette Curio

Übung 1. Explorer. Paint. Paint. Explorer

ZoomText Mac. Nachtrag zum Benutzerhandbuch

Das Gerät. Kurzanleitung. Schritt 1: Es werde Licht.

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

Tutorial für GTT "Guntram's Tablet Weaving Thingy"

Ein Blick in den Garten meiner Nachbarn

Mess- und Regelungstechnik

Dieses Buch gehört: Hallo! Zusammen lernen wir Programmieren! F. Kraus 2017, inspiriert von scratch.mit.edu

Häfele Connect App - Kurzanleitung

Tastatur. Mike McBride Anne-Marie Mahfouf Deutsche Übersetzung: Carsten Niehaus

SP-1101W Schnellanleitung

I-PLUG TH Multiuse pdf - Bedienungsanleitung

Arbeiten mit Auswahlwerkzeugen

So funktioniert der Stundenplan Kurzanleitung zur Bedienung der einzelnen Funktionen auf

Flash 8 Einführung Animationsarten

Ein,,intelligentes Auto bauen, das selbständig eine Strasse entlang fährt

2. Die ersten Schritte mit Windows 7 einfach bewältigen

Sie bauen Ihren ersten Roboter

Wichtige Befehle bei der Programmierung von. FISCHER-Technik

SP-2101W Quick Installation Guide

IRISPen Air 7. Kurzanleitung. (Android)

Kurzanleitung Google Earth: Die wichtigsten Schritte

2.3.2 Fenster verschieben Fenster überlappen

Tragbarer digitaler Videorekorder (DVR)

LCD-Bildschirm ve LCD-Bildschirm

BKSYS Brandschutzklappen-Kleinsteuerung

Software zur Gestensteuerung von Windows 7 über Kinect for Xbox

Erste Schritte für Endbenutzer

ODDS-TV. ... die zukunftssichere Lösung für den modernen Wettanbieter!

Bedienungsanleitung R/C TX Alloy Shark 3-Kanal Mikro-Helikopter Vielen Dank für den Kauf dieses Produkts.

Kurzanleitung. 2016, Hundesportverein Swisttal e.v., Dirk Lippmann, Alle Rechte vorbehalten.

Früh übt sich, wer ein Meister werden will!

Anleitung zum Aufbau einer Arbeitsoberfläche mit zwei Fenstern zum Erfassen der Verstorbenen-Daten mit Excel

PC-Lernspiel: V/F. Hier kannst du das Spiel starten und beenden: Hier wechselst du in die Programmieransicht bzw. auf Vollbild.

Installationsanleitung. Bewegungsmelder

Transkript:

Erste Schritte in der Robotik mit dem Thymio-II Roboter und der Aseba/VPL Umgebung Moti Ben-Ari und andere Mitwirkende Details in authors.txt Version 1.3~pre1 für Aseba 1.3.1 2013 14 Moti Ben-Ari und andere Mitwirkende. Dieser Inhalt ist unter der Creative-Commons-Lizenz vom Typ Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported lizenziert. Um eine Kopie dieser Lizenz einzusehen, besuchen Sie http://creativecommons.org/licenses/ by-sa/3.0/ oder schreiben Sie einen Brief an Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA.

Inhaltsverzeichnis 1 Dein erstes Robotikprojekt 5 2 Sich ändernde Farben 12 3 Los, beweg dich 15 4 Ein Roboterhaustier 19 5 Der Roboter findet seinen Weg selbst 25 6 Glocken und Pfeifen 29 7 Angenehme Zeit 32 8 Zustand: Mach nicht immer dasselbe (fortgeschritten) 34 9 Zählen (Fortgeschritten) 41 10 Wie weiter? 46

Vorwort Was ist ein Roboter? Du fährst dein Fahrrad und plötzlich siehst du, dass die Strasse vor dir aufwärts geht. Du trittst kräftiger in die Pedale, um den Rädern mehr Energie zuzuführen. Dadurch wirst du auch aufwärts nicht langsamer. Nachdem du oben angekommen bist, geht es wieder runter. Du betätigst die Bremsen deines Fahrrads damit die Bremsblöcke gegen die Räder gedrückt werden. Dadurch wird dein Fahrrad nicht zu schnell. Wenn du Fahrrad fährst, sind deine Augen Sensoren, die deine Umgebung wahrnehmen. Wenn diese Sensoren deine Augen ein Ereignis erfassen (zum Beispiel eine Kurve der Strasse), führst du eine Aktion aus (zum Beispiel indem du den Fahrradlenker nach links oder rechts steuerst). In einem Auto sind Sensoren eingebaut, die messen was in der Umgebung passiert. Der Tachometer misst, wie schnell das Auto fährt. Wenn du siehst, dass das Auto schneller als die Tempolimite fährt, sagst du dem Fahrer, er fahre zu schnell. Darauf kann der Fahrer eine Aktion ausführen, nämlich die Bremse betätigen, damit das Auto langsamer wird. Die Tankanzeige misst, wie viel Benzin noch im Tank des Autos ist. Wenn du siehst, dass die Anzeige zu tief ist, kannst du der Fahrerin sagen, dass sie eine Tankstelle suchen muss. Sie kann dann eine Aktion ausführen: Sie kann den Blinker einschalten und das Steuerrad nach rechts drehen, um zur Tankstelle zu fahren. Jeder Fahrradfahrer und Autofahrer erhält Informationen von den Sensoren, entscheidet dann welche Aktion nötig ist und verursacht diese Aktionen. Ein Roboter ist ein System, in welchem dieser Prozess Informationen erhalten, Entscheidungen treffen, Aktionen ausführen von einem Computer ausgeführt wird. Normalerweise macht der Roboter das ohne die Hilfe von Menschen. Der Thymio Roboter und die Aseba VPL Umgebung Der Thymio-II ist ein kleiner Roboter, der für Ausbildungszwecke vorgesehen ist (Bild 1.1). Die Sensoren des Roboters messen Licht, Töne und Distanzen und detektieren, ob Knöpfe gedrückt werden oder ob an den Roboter geklopft wird. Die wichtigsten Aktionen, die durchgeführt werden können sind: Bewegung durch die zwei Räder, die mit je einem Motor angetrieben werden. Weitere Aktionen sind das Erklingenlassen von Tönen und das An- und Abschalten von Lichtern. In diesem Dokument wird Thymio II einfachheitshalber Thymio genannt, bezieht sich aber immer auf die Version II des Thymio Roboters. Aseba ist eine Programmierumgebung für kleine Roboter, wie den Thymio. VPL ist ein Teil vom Aseba und dient der visuellen Programmierung (visual programming). 3

VPL wurde Entwickelt, um Thymio auf einfache Art und Weise mit Ereignis- und Aktionsblöcken programmieren zu können. Dieses Tutorial setzt voraus, dass sie Aseba auf ihrem Computer installiert haben. Ist dies nicht der Fall, gehen sie auf https://aseba.wikidot.com/en:downloadinstall, wählen sie ihr Betriebssystem aus, laden sie das Programm herunter und installieren sie dieses auf ihrem Computer. 4

Kapitel 1 Dein erstes Robotikprojekt Lerne Thymio kennen Das Bild 1.1 zeigt den Roboter von vorne. Oben sieht man einen runden Knopf in der Mitte (A) und die vier Richtungsknöpfe (B). Hinter den Knöpfen wird der Batteriestand in grün (C) angezeigt. Dahinter sieht man die zwei oberen Lichter (D), die auf rot eingestellt sind. Der Roboter hat unten weitere solche Lichter, die auf grün eingestellt sind (Bild 3.2). Die schmalen schwarzen Rechtecke (E) vorne sind Sensoren, die du im Kapitel 4 kennenlernen wirst. Beachte die kleinen roten Lichter fürs erste noch nicht. Abbildung 1.1: Der Thymio Roboter von vorne 5

Abbildung 1.2: Thymio mit USB verbinden Den Roboter verbinden und VPL starten Verbinde deinen Thymio Roboter mit einem USB Kabel mit dem Computer. Der Roboter spielt eine kleine Tonabfolge ab und ein grünen Licht leuchtet auf dem Roboter. Falls der Roboter ausgeschaltet ist, schalte ihn an, indem du fünf Sekunden den mittleren Knopf berührst. Starte nun VPL; mache dazu einen Doppelklick auf das VPL Symbol. Wichtige Information Wenn ein kleines Icon im Text erscheint, wird ein grösseres Bild davon am Seitenrand angezeigt. Eventuell startet VPL automatisch. Falls dies nicht der Fall sein sollte, wird das Fenster in Bild 1.2 angezeigt. Wähle die Box Serial, klicke auf Thymio Robot... darunter, wähle eine Sprache und klicke dann auf Connect. Abhängig von der Konfiguration deines Computers und des Betriebssystems, das du verwendest, kann es sein, dass die Einträge im Fenster und die folgenden Daten des Thymio etwas anders ausschauen als in der Abbildung angezeigt. Trick Es ist auch möglich VPL aus dem Aseba Studio (text basierte Programmierumgebeung) heraus zu öffnen. Das VPL Plug-in befindet sich unten links im Fenster unter Tool. 6

Die VPL Bedienungsoberfläche Die Benutzeroberfläche von VPL (Bild??) ist unten angezeigt. Dieser ist in sechs Bereiche aufgeteilt: 1. Oben hat sie eine Symbolleiste mit Symbolen, um Programme zu öffnen, zu speichern, auszuführen, etc. 2. Unterhalb der Symbolleiste befindet sich der Bereich, in dem man Programme für den Roboter konstruieren kann. 3. In einer Anzeige wird angegeben, ob das konstruierte Programm funktioniert oder nicht. 4. Links eine Spalte mit den verfügbaren Eriegnisblöcken. 5. Rechts eine Spalte mit den verfügbaren Aktionsblöcken. 6. Ganz rechts wird das konstruierte Programm in ein Textprogramm übersetzt. Die Ereignis und Aktionsblöcke werden im Verlauf dieses Dokumentes genauer beschrieben. Abbildung 1.3: VPL Benutzeroberfläche Weiterführendes Wissen Wenn Du ein Programm mit VPL erstellst, wir d das Textprogramm, das in den Roboter geladen wird auf der rechten Seite des Fensters angezeigt. Falls du neugierig bist, die Sprache zu verstehen, kannst du das text mode tutorial lesen unter (http://aseba.wikidot.com/en: thymiotutoriel). 7

Erstelle ein neues Programm Wenn du VPL öffnest, ist der Programmierungsbereich leer. Um einen neues leeres Programm zu starten klicke auf. Ein VPL Programm besteht aus mehreren (oder auch nur einem) Paar von Ereignis und Aktionsblöcken. Ein Beispiel: Das Paar verursacht, dass das obere Licht auf dem Roboter rot leuchtet, sobald der Vorwärts- Knopf des Roboters berührt wird. Wichtige Information Die Bedeutung eines Ereignis-Aktions Paars ist: Wenn das Ereignis eintritt, wird die Aktion durchgeführt. Lass uns nun ein Ereignis-Aktions-Paar erstellen. Im Programmierbereich siehst du eine Vorlage, um ein Paar zu erstellen: Das linke, hellblaue Quadrat ist für das Ereignis und das rechte, hell-violette Quadrat für die Aktion. Um ein Block von der Seite ( Flächen 4 und 5 aus der Abbildung 1.3) in die Programmierumgebung zu verschieben, klickst du mit der linken Maustaste auf das entsprechende Feld und ziehst den Block mit gehaltener Maustaste in das gewünschte Feld. Durch das Loslassen der Maustaste wird der Block deponiert (drag and drop). Starte nun mit dem Knopf-Ereignis, indem Du dieses von der linken Ereignis- Auswahl in das linke Quadrat ziehst. Wähle nun den Aktionsblock für die oberen Farben aus der rechten Auswahl und ziehe ihn in das rechte Quadrat. Du hast nun dein erstes Ereignis-Aktions Paar erstellt. Jetzt können wir das Ereignis und die Aktion so verändern, dass sie machen was wir wollen. Beim Ereignis kannst du zum Beispiel auf den Vorwärts-Knopf klicken; er wird dann rot: Das bedeutet, dass ein Ereignis stattfindet, wenn der Vorwärts-Knopf auf dem Thymio Roboter gedrückt wird. Der Farbaktionsblock hat drei Balken mit den Grundfarben Rot, Grün und Blau. Jeder dieser Balken hat ganz links ein weisses Quadrat. Die farbigen Balken mit dem weissen 8

Quadrat werden Schieberegler (slider) genannt. Verschiebe das Quadrat von links nach rechts und Du wirst sehen, wie sich die Hintergrundfarbe des Blocks verändert. Dieser zeigt die Farben so an, wie der Roboter leuchten wird. Alle Farben können durch Mischen der drei Grundfarben Rot, Grün und Blau erstellt werden. Schiebe das Quadrat im roten Balken nun ganz nach rechts und die Quadrate im grünen und blauen Balken ganz nach links. Die Farbe des Roboters leuchtet nun rot ohne blau und grün: Speichere das Programm Bevor du dein erstes Programm ausführen kannst, musst du es speichern. Klicke auf das Symbol in der Symbolleiste. Du musst dem Programm nun einen Namen geben; wähle einen Namen, der dir später hilft, dich zu erinnern was das Programm macht (zum Beispiel: rot leuchten). Wähle einen Ort, wo du das Programm speichern möchtest, z.b. auf dem Schreibtisch (desktop) und drücke Speichern (save) Führe das Programm aus Um das Programm auszuführen, musst du auf das Symbol klicken. Jetzt kannst du den Vorwärts-Knopf auf den Roboter berühren und dann sollte der Roboter rot leuchten. Gratulation! Du hast dein erstes Programm erstellt und ausgeführt! Das Verhalten des Programms ist: Wenn der Vorwärtsknopf des Thymio gedrückt wird, wird dieser rot. Schalte den Roboter aus Wenn du nicht mehr mit dem Thymio-II Roboter spielen möchtest, kannst du ihn ausschalten. Drücke dazu den mittleren Knopf für fünf Sekunden bis du einige Töne hörst. Die Batterie des Roboters wird weiter aufgeladen, solange das Kabel an einen eingeschalteten Computer angeschlossen ist. Die Batterie lädt, wenn das kleine Licht neben dem USB Stecker rot leuchtet. Wenn es blau leuchtet, ist die Batterie vollständig aufgeladen (Bild 1.4). Wenn du den Roboter nicht brauchst, kannst Du das USB Kabel ausstecken. 9

Abbildung 1.4: Die Rückseite des Thymio Roboters mit dem USB Kabel und der Ladeanzeige (blaues Licht) Trick Du kannst den Roboter schneller aufladen, wenn Du ein Handy Aufladeadapter mit micro-usb Stecker verwendest. Sollte die Verbindung des USB Kabel während dem Programmieren nicht funktionieren, blockiert VPL bis die Verbindung wieder hergestellt wird. Kontrolliere beide Enden des Kabels, stelle die Verbindung wieder her und schaue, ob VPL wieder funktioniert. Falls ein Problem auftaucht, kannst Du immer VPL schliessen, den Roboter neu anschliessen und VPL neu starten. Verändere ein Programm Um ein Ereignis-Aktions-Paar zu löschen, klicke auf jedem Paar angezeigt wird., das oben rechts neben Um ein weiteres Ereignis-Aktions-Paar hinzuzufügen, klicke auf jedem Paaren angezeigt wird., das unter Um ein Ereignis-Aktions-Paar zu verschieben, kannst du es einfach an die neue Position ziehen. Öffne ein Programm Angenommen du hast dein Programm gespeichert und den Roboter ausgeschaltet, möchtest aber später wieder an deinem Programm weiter arbeiten. Verbinde den Roboter wie beschrieben und klicke dann auf öffnen und wähle das Programm, das du öffnen möchtest (zum Beispiel rot-leuchten). Das Programm wird jetzt im Programmierbereich angezeigt und du kannst es verändern. 10

Weitere Funktionen der VPL Benutzeroberfläche In der Symbolleiste (toolbar) findest du weitere Funktionen (features): Speichern unter : Klicke auf dieses Symbol, um ein bestehendes Programm unter einem neuen Namen zu speichern. Das ist nützlich, wenn du ein funktionierendes Programm hast und dies weiter verändern möchtest, gleichzeitig das bestehende Programm aber behalten möchtest. Stopp : Dieses Symbol stoppt das Programm das gerade auf dem Roboter ausgeführt wird und stellt die Geschwindigkeit der Motoren auf Null. Das kannst du zum Beispiel brauchen, wenn der Roboter nicht mehr selbst stoppt, da dem Roboter ein Ereignis- Aktionsblockpaar fehlt, um die Motoren zu stoppen. Farbpalette ändern : Hier kannst du auswählen andere Farbpaare für den Hintergrund der Ereignis- Aktionsblöcke auswählen. Fortgeschrittener Modus : Im fortgeschrittenen Modus werden die Zustandvariablen aktiviert. Diese lernst du im Kapitel 8 kennen. Hilfe : Zeigt die VPL Dokumentation in deinem Browser an (dazu wird eine Internet Verbindung benötigt). Die Dokumentation findest du hier: https: //aseba.wikidot.com/de:thymiovpl. 11

Kapitel 2 Sich ändernde Farben Zeige Farben an Erstelle ein VPL Programm, das zwei verschiedene Farben oben auf dem Roboter anzeigt, wenn der Vorwärts- oder der Rückwärts-Knopf gedrückt wird. Wenn die Links- und Rechts-Knöpfe gedrückt werden, sollen unten am Roboter zwei andere Farben angezeigt werden. Beispielprogramm colors.aesl Wir brauchen vier Ereignis-Aktions-Paare, da es vier verschiedene Ereignisse das Drücken der vier Knöpfe gibt. Mit jedem Ereignis ist eine Farbaktion verbunden. Beachte den Unterschiede der Aktions-Blöcke für die obere Farben ( ) und die untere Farben ) des Roboters. Der erste Block ändert die Farben, die auf der Oberseite des Roboters liegen, während der zweite die Farben der Unterseite des Roboters ändert. Im Block für die unteren Lichter sind die Räder als schwarze Balken abgebildet. Das fertige Programm ist im Abbildung 2.1 dargestellt. Welche Farben werden angezeigt? In den ersten drei Ereignis-Aktions-Paaren ist jeweils eine Grundfarbe alleine gewählt. Die weissen Quadrate für die anderen beiden Farben sind jeweils ganz links. Diese drei Aktionen werden also reines Rot, Blau oder Grün anzeigen. Beim letzten Ereignis-Aktions-Paar werden aber zwei Farben gemischt: die weissen Quadrate sind bei Rot und Grün ganz rechts. Es wird also Rot und Grün gemischt. Welche Farbe entsteht daraus? Dieses Programm ist in der Abbildung Abbildung 2.1(a) gezeigt. Welche Farben werden angezeigt? In den ersten drei Aktionen ist der Schieberegler jeweils einer Farbe ganz nach rechts verschoben, während die Schieberegler der anderen Farben ganz links liegen. Deshalb werden diese Farben nicht dazugemischt und reines Rot, Blau oder Grün erscheint. Die Aktion, welche mit dem linken Knopf verbunden ist, mixt die Farben Rot und Grün, was Gelb ergiebt. Im Hintergrund siehst du wie sich die Farben ändern je nach Position des Schiebereglers. Die Farbe des Hintergrundes zeigt an, in welcher Farbe Thymio leuchten wird. Lass das Programm (Icon ) laufen und überprüfe, ob sich durch das Drücken der Knöpfe die Farben des Roboters ändern. Abbildung 1.1 zeigt Thymio auf der Oberseite rot leuchtend und Abbildung 3.2 zeigt Thymio auf der Unterseite grün leuchtend. 12

Übung 2.1 Spiele mit dem Farbbalken und finde heraus welche Farben du anzeigen kannst. Wie kannst du orange mischen? Information Blau Blau Rot Grün Rot Grün Durch Mischen rot, grün und blau, können Sie jede Farbe machen! Schalte die Lichter aus Lass uns nun das Programm so verändern, dass alle Lichter ausgehen, wenn der mittlere Knopf berührt wird. Wir brauchen also zwei neue Ereignis-Aktions-Paare. Eines um die oberen und ein zweites, um die unteren Lichter aus zu schalten. Damit die Lichter ausgehen, müssen wir alle drei Schieberegler nach ganz links verschieben Abbildung 2.1(b). So wird keine Farbe angezeigt und die Lichter werden ausgeschaltet. Das Ereignis ist jetzt für beide der neuen Ereignis-Aktions-Paare dasselbe das Drücken des mittleren Knopfes aber die Aktionen sind unterschiedlich. das Ausschalten der Oberlicher und das Ausschalten der Unterlichter. Vergiss nicht das Icon zudrücken, damit das Programm geladen wird. In Zukunft werden wir diese Erinnerung nicht mehr bringen. Du brauchst jedoch jedesmal diese Funktion, um ein Programm zum Laufen zu bringen. 13

(a) Die Farben verändern sich, wenn ein Knopf berührt wird. (b) Lösche die Lichter mit dem mittleren Knopf. Abbildung 2.1: Spiele mit den Lichter von Thymio Mehrere Ereignis-Aktions-Paare Wenn ein Programm ausgeführt wird, werden alle Ereignis-Aktions-Paare gleichzeitig ausgeführt. Man kann mehrere Ereignis-Aktions-Paare mit dem gleichen Ereignis konstruieren, solange sie verschiedene Aktionen haben. Sind zwei Ereignis-Aktions-Paare gleich (gleiches Ereignis und gleiche Aktion), zeigt VPL eine Fehlermeldung an. (Feld 3 in Abbildung 1.3). Es ist nicht möglich ein Programm laufenzulassen solange Fehlermeldungen angezeigt werden. 14

Kapitel 3 Los, beweg dich Vorwärts- und rückwärtsfahren Der Thymio Roboter hat zwei Motoren mit denen er seine zwei Räder unabhängig antreiben kann. Beide Motoren können vorwärts und rückwärts drehen. Dadurch kann der Roboter vorwärts und rückwärts fahren. Lass uns mit einem kleineen Projekt starten bei dem du mehr über die Motoren lernst. Der Aktions-Block für die Motoren zeigt ein kleines Bild des Roboters in der Mitte mit zwei Schieberegler links und rechts. Mit den beiden Balken kannst du die Geschwindigkeit der beiden Motoren einstellen, mit dem linken Balken die des linken Motors und mit dem rechten Balken die des rechten Motors. Wenn das weisse Quadrat in der Mitte ist, dreht der Motor nicht. Du kannst die Geschwindigkeit ändern indem du das weisse Quadrat verschiebst. Wenn du das Quadrat nach oben schiebst, dreht der Motor immer schneller vorwärts. Schiebst du es nach unten, dreht der Motor rückwärts. Erstelle ein Programm, um den Roboter vorwärts fahren zu lassen, wenn der Vorwärts- Kopf gedrückt und rückwärts, wenn der Rückwärts-Knopf gedrückt wird. Beispielprogramm moving.aesl Wir brauchen zwei Ereignis-Aktions-Paare (Abbildung 3.1). Ziehe die Ereignis- und Aktionsblöcke in die Programmierumgebung und stelle für beiden Motoren die Schieberegler auf halbe Geschwindigkeit ein. Dies indem du die Quadrate für Vorwärtsfahren halb nach oben und für Rückwärtsfahren halb nach unten verschiebst. Führe das Programm aus und drücke die Knöpfe, um den Roboter vorwärts- und rückwärts fahren zu lassen. 15

Abbildung 3.1: Vorwärts- und rückwärtsfahren Stoppe den Roboter Hilfe! Ich kann die Motoren des Roboters nicht mehr stoppen! Klicke auf das Symbol, um den Roboter zu stoppen. Lass uns diese Problem beheben, indem wir ein neues Ereignis-Aktions-Paar hinzufügen: Dieses soll die Motoren stoppen, wenn der mittlere Knopf gedrückt wird. Wenn du den Motoraktionsblock in die Programmierumgebung ziehst, sind die Schieberegler in der Mitte, was die Motoren abstellen lässt. Falle nicht vom Tisch Wenn der Roboter auf dem Boden fährt, kann er im schlimmsten Fall in eine Wand fahren oder sein USB Kabel herausziehen. Aber wenn der Roboter auf einem Tisch fährt, kann er auf den Boden fallen und kaputt gehen! Lass uns den Roboter so programmieren, dass der Roboter stoppt sobald er an die Tischkante gelangt. Achtung! Wenn der Roboter auf einem Tisch fährt, musst du bereit sein, um ihn aufzufangen, falls er herunterfällt. Drehe deinen Thymio auf den Rücken. Nun siehst du, dass er unten zwei kleine, schwarze Rechtecke mit optischen Elementen hat (Bild 3.2). Das sind Bodensensoren. Diese senden Infrarotlichtimpulse aus und messen wieviel Licht relektiert wird. Auf einem hellen Tisch wird viel Licht reflektiert. Fährt der Roboter über die Tischkante wird wenig Licht reflektiert. Tritt dies ein, möchten wir, dass der Roboter stoppt. 16

Trick Benutze einen hellen Tisch aber keinen aus Glas, da von diesem kein Licht reflektiert wird. Thymio kann dann nicht erkennen, ob er auf einem Tisch ist oder nicht. Ziehe das Bodensensor-Ereignis in dein Programm. Oben hat dieser Block zwei kleine Quadrate. Wenn du sie anklickst, werden sie weiss, rot und dann wieder grau. Die Farben haben verschiedene Bedeutungen: Grau: Der Sensor wird nicht gebraucht. Rot: Ein Ereignis passiert, wenn viel Licht reflektiert wird. Weiss: Ein Ereignis passiert, wenn wenig Licht reflektiert wird. Information Grau, rot und weiss, die für diesen Aktionsblock verwendet werden, wurden zufällig ausgewählt und könnten auch durch andere ersetzt werden. Klicke auf die Quadrate bis beide weiss sind, um den Roboter zu stoppen, wenn wenig Licht reflektiert wird. Erstelle das Ereignis-Aktions-Paar: Stelle den Roboter mit der Vorderseite nahe an die Tischkante und drücke den Vorwärtsknopf. Der Roboter sollte bis zur Tischkante fahren und dann stoppen. Übung 3.1 Probiere verschiedene Geschwindigkeiten mit dem Roboter aus. Kann der Roboter auch bei der schnellsten Geschwindigkeit noch rechtzeitig stoppen, um nicht vom Tisch zu fallen? Falls nicht, wie schnell kannst du ihn einstellen, damit er noch rechtzeitig stoppen kann? Kannst du ein Herunterfallen verhindern, indem du die Räder rückwärtsdrehen lässt, anstatt die Motoren nur zu stoppen? Trick Als ich das Programm laufen liess, fiel der Roboter vom Tisch. Der Grund war, dass mein Tisch runde Kanten hatte; als der Roboter eine geringe Reflektion detektierte, war es schon zu spät und der Roboter rutschte vom Tisch. Meine Lösung war, dass ich ein schwarzes Klebeband an den Tischrand anbrachte. 17

Abbildung 3.2: Unterseite des Thymio Roboters mit zwei Bodensensoren in der vorderen Hälfte. 18

Kapitel 4 Ein Roboterhaustier In diesem Kapitel machen wir den Thymio zu einem autonomen Roboter. Wir programmieren ihn so, dass er unabhängige Verhalten hat, wie dies normalerweise mit Katzen oder Hunde in Verbindung gebracht wird. Diese Verhalten können wir mittels Rückkkoppelung erreichen: Der Roboter nimmt ein Ereignis in der Umwelt mit seinen Sensoren wahr und verändert seine Aktionen entsprechend. Der Roboter gehorcht dir Zuerst lehren wir den Roboter, uns zu gehorchen. Und zwar so, dass er sich normalerweise nicht bewegt; wenn er aber deine Hand vor sich wahrnimmt, soll er zu deiner Hand fahren. Der Roboter hat vorne fünf horizontale Distanzsensoren und zwei hinten. Diese sind ähnlich aufgebaut, wie die Bodensensoren auf der Unterseite des Roboter, die wir in Kapitel 3 benutzt haben. Führe deine Hand langsam näher an die Sensoren des Roboters. Wenn deine Hand nahe genug ist, leuchtet ein kleines, rotes Licht neben dem Sensor auf und zeigt so an, dass die Hand erkannt wurde (Abbildung 4.1). Der Block wird gebraucht, um zu erfahren, ob etwas nahe am Sensor ist oder nicht. Beide Fälle werden als Ereignis gewertet. Die schmalen, grauen Quadrate (fünf vorne und zwei hinten) können wahrnehmen, wann ein Ereignis stattfindet. Indem auf ein Quadrat gedrückt wird, ändert sich dieses von grau auf weiss, von weiss auf rot und zurück auf grau. Die Beduetung der Farben ist für diesen Block: Grau: Der Sensor beeinflusst das Programm nicht. Abbildung 4.1: Die Vorderseite des Thymio. Zwei Distanzsensoren haben die Finger erkannt. 19

Abbildung 4.2: Bewegung zu der Hand hin Abbildung 4.3: Ein Bulldozer mit Raupenantrieb Rot: Eine Aktion wird ausgelöst, falls ein Objekt im Bereich des Sensors angegeben wird. Weiss: Eine Aktion wird gestartet, falls kein Objekt im Bereich des Sensors angegeben wird. Boden- und horizontale Sensoren Achte darauf, das Verhalten der horizontalen Sensoren nicht mit dem Verhalten der Bodensensoren zu verwechseln. Bei den horizontalen Sensoren bedeutet ein weisses Quadrat, dass ein Ereignis stattfindet, wenn nichts in der Nähe ist. Während ein rotes Quadrat bedeutet, dass ein Ereignis stattfindet, wenn etwas in der Nähe ist. Bei den Bodensensoren bedeutet ein weisses Quadrat, dass ein Ereignis stattfindet, wenn nur wenig Licht reflektiert wird. Während ein rotes Quadrat bedeutet, dass ein Ereignis statfindet, wenn viel Licht reflektiert wird. Das physikalische Prinzip dieser beiden Typen von Sensoren ist ähnlich. Wegen deren verschiedener Platzierung ist ihr Verhalten jedoch verschieden. Damit ein bestimmtes Verhalten des Roboters ausgelöst wird, brauchen wir die beiden Ereignis-Aktions Paare, wie in der Abbildung 4.2 gezeigt. Das erste Paar besteht aus dem zentralen vorderen Sensor mit der Einstellung weiss. Die dazugehörige Aktion ist, dass die Motoren ausgeschaltet werden. Somit wird der Roboter stehen bleiben, falls er schon still gestanden ist oder anhalten, falls er in Bewegung war. Das zweite Paar besteht aus dem zentralen vorderen Sensor mit der Einstellung rot. Die dazugehörige Aktion ist, dass beide Motoren schnell laufen, indem die Quadrate der Schieberegler ganz nach oben geschoben werden. Falls du nun deine Hand vor den Roboter hältst, wird eine Aktion ausgelöst, die bewirkt, dass beiden Motoren rasch vorwärtsdrehen und der Roboter sich vorwärts auf die Hand zubewegt. 20

Steuere den Thymio Roboter Der Thymio Roboter hat kein Steuerrad wie ein Auto oder einen Lenker wie ein Fahrrad. Wie kann der Roboter nun gelenkt werden? Der Roboter benutzt ein Differentialgetriebe, welches ähnlich funktioniert wie bei Raupenfahrzeugen, z.b. einem Bulldozer (Abbildung 4.3). Die gewünschte Richtung wird anstelle eines Steuerrads mit unterschiedlichen Geschwindigkeiten des linken und des rechten Rades erreicht. Dreht das rechte Rad schneller als das linke, biegt das Fahrzeug nach links ab und dreht das linke Rad schneller als das rechte, biegt das Fahrzeug rechts ab. In VPL kannst du das Differentialgetriebe anwenden, indem du den linken und rechten Schieberegler des Motoraktionsblock einzeln einstellst und dadurch die Geschweindigkeit der Räder verschieden einstellen kannst. Je grösser der Unterschied der Geschwindigkeiten, desto enger wird die Kurve. Indem die Räder in unterschiedliche Richtungen drehen, wird ein möglichst grosser Unterschied der Geschwindigkeiten erreicht. Tatsächlich dreht sich das Fahrzeug auf der Stelle, falls sich die Räder mit der genau gleichen Geschwindigkeit in entgegengesetzter Richtung bewegen. Zum Beispiel wird im Aktionsblock der linke Regler auf schnelle Geschwindigkeit rückwärts und der rechte Regler auf schnelle Geschwindigkeit vorwärts eingestellt. Als Resultat wird der Roboter eine enge Linkskurve vollführen, wie dies auf dem kleinen Bild des Roboter bzw. des Motoraktionsblocks dargestellt ist. Experimentiere mit dem Ereignis-Aktions Paar: Stelle den linken und den rechten Regler ein. Lass das Programm laufen und drücke den zentralen Schalter. Um den Roboter zu stoppen, klicke auf. Nun kannst Du die Regler ändern und es erneut ausprobieren. Trick Das Icon des Thymio in der Mitte des Motoraktionsblock zeigt eine Animation der Bewegung des Roboters, wenn du die Regler einstellst. Der Roboter mag dich Ein echtes Haustier folgt dir manchmal. Damit der Roboter deiner Hand folgt, musst du zwei weitere Ereignis-Aktions Paare hinzufügen. Falls der Roboter ein Objekt vor seinem ganz links platzierten Distanzsensor wahrnimmt, soll er nach links und falls er ein Objekt vor seinem ganz rechts platzierten Distanzsensor wahrnimmt, soll er nach rechts abbiegen. 21 Program file likes.aesl

(a) Der Roboter mag dich (b) Der Roboter mag dich nicht Abbildung 4.4: Programm für das Roboterhaustier Das Programm für der Roboter mag dich besteht aus zwei Ereignis-Aktions Paaren (Abbildung 4.4(a)). Probiere die Regler an jedem Motoraktionsblock aus! Übung 4.1 Modifiziere den Haustierroboter so, dass er vorwärts fährt, falls das Programm am laufen ist und dass er stoppt, falls er das Ende des Tisches (oder ein Klebeband) wahrnimmt. Wie in Kapitel 3 erklärt, wird von einer weissen Oberfläche viel Licht reflektiert, währen von einer schwarzen Oberfläche wenig Licht reflektiert wird. Je nach Boden oder Tisch musst du entscheiden, wann du auf das weisse oder das rote Quadrat drückst, abhängig vom Boden oder Tisch auf den du den Roboter setztst. Übung 4.2 Was passiert, falls Du die Reihenfolge des Ereignis-Aktions Paares änderst, welches Du in der vorangegangenen Übung verwendet hast? Der Roboter mag dich nicht Manchmal mag dein Roboterhaustier in schlechter Laune sein und von deiner Hand zurückweichen. Erstelle ein Programm, welches dieses Verhalten auslöst. Program file does-not-like.aesl Öffne das Programm für den Haustierroboter, der Dich mag und ändere die Zusammenhänge für die Ereignisse mit den Aktionen. Das Erkennen eines Hindernisses beim linken Sensor bewirkt, dass der Roboter nach rechts abbiegt, während das Erkennen eines Hindernisses beim rechten Sensor bewirkt, dass der Roboter nach links abbiegt (Abbildung 4.4(b)). 22

1 onevent prox 2 if prox.horizontal[2] < 400 then 3 motor.left.target = 0 4 motor.right.target = 0 5 end 6 if prox.horizontal[2] > 500 then 7 motor.left.target = 300 8 motor.right.target = 300 9 end 10 if prox.horizontal[0] > 500 then 11 motor.left.target = -300 12 motor.right.target = 300 13 end 14 if prox.horizontal[4] > 500 then 15 motor.left.target = 300 16 motor.right.target = -300 17 end Abbildung 4.5: Ein VPL-Programm und die entsprechenden Textprogramm. Übung 4.3 Experimentiere mit der Auswahl der Sensoren. Die horizontalen Sensoren werden vorne von links nach rechts wie folgt nummeriert 0,1, 2, 3, 4. Die hinteren Sensoren sind Sensor Nummer 5 auf der linken und Sensor Nummer 6 auf der rechten Seite. Verwende andere Sensoren anstelle von den Sensoren 0 und 4. Benutze Sensor 1 bzw. Sensor 3, um den Roboter nach links bzw. nach rechts abbiegen zu lassen. Benutze die Sensoren 0 und 1 bzw. 3 und 4, um den Roboter nach links bzw. nach rechts abbiegen zu lassen. Füge Ereignis-Aktions Paare für die hinteren Sensoren 5 und 6 hinzu. Stelle die Regler genau ein (fortgeschritten) Es ist schwierig die Regler so präzise einzustellen, dass die Motoren z.b. mit exakt derselben Geschwindigkeit laufen. Indem die Übersetzung der Ereignis-Aktions Paare im Texteditor betrachtet werden, kann die Genauigkeit erhöht werden. Abbildung 4.5 zeigt das Programm, welches bewirkt, dass der Haustierroboter dich mag und dir folgt mit der Übersetzung als Text auf der rechten Seite des VPL Fensters. Der Text wird automatisch angepasst, wenn du Ereignis-Aktionspaare veränderst. Die Zeile onevent prox bedeutet: Immer wenn das Ereignis Messen der horizontalen Distanz des Distanzsensors (Näherungssensor: englisch proximity sensor, abgekürzt prox) stattfindet (dies findet 10 mal pro Sekunde statt), wird die folgenden 23

Zeilen des Programms ausgeführt: Wenn das Ereignis stattfindet, vergleicht Thymio die Sensorenwerte mit der Bedingung if... then... end. Er startet mit dem Testen von Sensor 2 (vorne in der Mitte), wie wir in prox.horizontal[2] erkennen können. Falls dieser Wert geringer als 400 ist, stellt Thymio die Geschwindigkeit des linken und rechten Motors auf 0, siehe Zeile motor.left.target = 0 und motor.right.target = 0. Jede Zeile if... then... end testet einen spezifischen Sensor und führt die verbundene Aktion aus oder nicht aus, je nach Resultat des Testes. Daher ist es mit einem Ereignis-Aktionspaar verbunden: 0. Test, ob nichts in der Mitte ist. Ist das wahr, stoppt Thymio. 1. Test, ob etwas in der Mitte ist. Ist das wahr, fährt Thymio vorwärts. 2. Test, ob etwas links von der Mitte ist. Ist das wahr, fährt Thymio nach links. 3. Test, ob etwas rechts von der Mitte ist. Ist das wahr, fährt Thymio nach rechts. Hat Thymio schlussendlich alle diese Sensoren ausgewertet, wartet er auf das nächste Ereignis prox und startet diese Tests von neuem undendlich oft. Benütze die AsebaStudio (Kapitel 10), um Programme im Textmodus zu schreiben. Trick Wenn du die Regler der Motorenaktionsblöcke bewegst, siehst du, dass du die Endgeschwindigkeit der Motoren (moter.x.target) in 50iger Schritten von 500 bis 500 verändert kannst. Indem du die Regler vorsichtig bewegst, kannst Du die Geschwindigkeit auf jeden dieser Werte einstellen. 24

Kapitel 5 Der Roboter findet seinen Weg selbst Eine Wanderung in den Bergen ist ein einfaches Vorhaben: Nimm dir ein Paar Wanderschuhe und folge dem Pfad. Für einen Roboter, kann das Folgen einer Linie ebenfalls sehr nützlich sein. Stell Dir ein Lagerhaus mit Roboterwagen vor, welche Gegenstände von einer zentralen Verteilstelle herbringen. Dazu werden Linien auf den Boden des Lagerhauses gezeichnet und die Roboter erhalten die Anweisung bestimmten Linien zu folgen, bis diese den Lagerplatz für den gewünschten Gegenstand erreichen. Um dies tun, muss der Roboter diese Linien erkennen können. Schreibe ein Programm, welches den Roboter einer Linie auf dem Boden folgen lässt. Program file follow-line.aesl Die Aufgabe "Der Roboter folgt der Linießeigt alle Unsicherheiten bei der Konstruktion von Robotern in der echten Welt auf. So kann es sein, dass die Linie zum Beispiel nicht perfekt ist, Staub kann auf der Linie liegen und diese abdecken, Dreck führt eventuell dazu, dass ein Rad weniger schnell ist wie das andere. Damit der Roboter der Linie folgt, benötigt der Roboter eine Steuereinheit, die entscheidet, wieviel Leistung jeder Motor benötigt, abhängig von den Daten, die von den Sensoren geliefert werden. Die Linie und der Roboter Um der Linie zu folgen, benutzen wir die Bodensensoren (Kapitel 3). Erinnere dich daran, dass diese Sensoren durch das Aussenden von Infrarotlicht (unsichtbar für das menschliche Auge) und dem Messen des reflektierten Lichts funktionieren. Falls der Boden von heller Farbe ist, wird der Sensor viel reflektiertes Licht wahrnehmen und das Ereignis wird ausgelöst. Somit brauchen wir eine Linie, die eine Ereignis auslöst, falls wenig Licht reflektiert wird. Das lässt sich einfach mit dem Aufmalen einer schwarzen Linie oder mit dem Anbringen eines schwarzen Isolierklebebandes auf den Boden bewerkstelligen (Abbildung 5.1(a)). Das Klebeband muss breit genug sein, damit beide Bodensensoren die schwarze Fläche erkennen können, solange der Roboter erfolgreich dem Klebeband folgt. Ein Klebeband mit der Breite von 5 Zentimetern genügt dem Roboter, um dem Klebeband folgen zu können. Die Breite kann auch ein wenig variieren. Zuerst bringen wir den Roboter dazu, sich vorwärts zu bewegen, falls beide Sensoren eine dunkle Oberfläche (das schwarze Klebeband) erkennen und stoppen, falls beide Sensoren eine helle Oberfläche (nicht das Klebeband, sondern den Boden) erkennen. Die Ereignis-Aktions Paare sind in der folgenden Abbildung 5.2(a) gezeigt. 25

(a) Thymio folgt einer Klebebandlinie (b) Der linke Sensor ist neben und der rechte Sensor auf dem Klebeband Abbildung 5.1: Thymio auf einem schwarzen Klebeband (a) Starte und stoppe den Roboter (b) Korrektur der Richtungsabweichung Abbildung 5.2: Ein Programm, um der Linie zu folgen Trick Versichere dich, dass das USB Kabel lange genug ist (ca. 2m), damit der Thymio auch in Bewegung mit dem Computer verbunden bleibt. Verlängerungskabel findest du in jedem Computershop. Deine erste Steuerungseinheit Der nächste Schritt besteht im Programmieren der Steuerungseinheit, die den Roboter der Linie folgen lässt. Falls der Roboter nach der linken Seite vom Klebeband abkommt, wird der linke Sensor den Boden erkennen, während der rechte Sensor immer noch 26

das Klebeband erkennt. In diesem Fall soll der Roboter ein wenig nach rechts abbiegen Falls der Roboter nach der rechten Seite vom Klebeband abkommt, wird der rechte Sensor den Boden erkennen, während der linke Sensor immer noch das Klebeband erkennt. In diesem Fall soll der Roboter ein wenig nach links abbiegen. Zwei Ereignis-Aktions Paare werden gebraucht (Abbildung 5.2(b)). Setzen der Parameter Es ist einfach zu erkennen, dass der Roboter, falls er von der linken Seite des Klebebands abkommt, wie in Abbildung Abbildung 5.2(b) nach rechts drehen muss, aber wie weit nach rechts? Falls die Drehung zu gering ausfällt, wird der rechte Sensor eventuell auch vom Klebeband abkommen, bevor der Roboter auf die Spur zurückgelangt. Falls der Roboter jedoch zu stark nach rechts dreht, riskiert der Roboter die Klebeband Spur auf der anderen Seite zu verlieren. In jedem Fall sind starke Drehungen gefährlich für den Roboter und jegliches Gut, welches er transportiert. In diesem Programm können die Geschwindigkeiten des linken und des rechten Motors auf jedem Aktionsblock der Motoren verändert werden. Experimentiere solange mit diesen Werten, bis der Roboter zuverlässig läuft. Zuverlässig heisst hier, dass der Roboter mit denselben Programmeinstellungen mehrmals erfolgreich der Linie folgt. Platziere bei jedem Versuch den Roboter ein wenig anders in Bezug auf die Richtung und Position zum Klebeband. Das Programm muss mehrmals getestet werden, um die Zuverlässigkeit zu überprüfen. Es gibt viele Arten, wie die Motorenaktionsblöcke eingestellt werden können, um die Drehung zu kontrollieren, damit der Roboter auf der Linie bleibt. Die vorwärtsgerichtete Geschwindigkeit entlang des Klebebands ist eine wichtige Einflussgrösse (Parameter). Ist der Roboter zu schnell, ist dieser schon vom Klebeband weggefahren, bevor die Drehbewegung die Richtung des Roboters verändern konnte. Ist der Roboter jedoch zu langsam, wird dir natürlich niemand deinen Roboter abkaufen und in einem Lagerhaus einsetzen. Was soll Thymio tun, falls er von der Linie fährt? Falls er eine enge Kurfe fährt (dazu kannst du einen Motor vorwärts und den Anderen rückwärts laufen lassen), findet der Roboter rasch zur Linie zurück, die Bewegung des Roboters wird jedoch ruckartig. Andererseits, wenn der Roboter nur eine leichte Drehung vollführt (dazu kannst du den einen Motor etwas schneller als den Anderen laufen lassen), wird der Roboter sich zwar flüssig bewegen, eventuell jedoch die Linie verlieren. Experimentiere, bis du einen guten Kompromiss gefunden hast. 27

Übung 5.1 Der Roboter stoppt, falls beide Sensoren erkennen, dass sie vom Klebeband abgekommen sind. Verändere das Programm so, dass der Roboter eine geringe Drehung nach links vollführt mit der Absicht das Klebeband wiederzufinden. Versuche es auf einem Klebeband mit einer Linkskurve, wie in der Abbildung 5.1(a) angezeigt. Versuche die Vorwärtsgeschwindigkeit des Roboters zu erhöhen. Was passiert, wenn der Roboter das Ende des Klebebandes erreicht hat? Übung 5.2 Verändere das Programm aus der vorangehenden Übung so, dass der Roboter nach rechts dreht, falls er vom Klebeband abkommt. Was passiert? Es wäre wünschenswert, wenn der Roboter sich erinnern könnte, welchen Sensor als letzter den Kontakt zum Klebeband verloren hat, um den Roboter in die korrekte Richtung zu führen, um das Klebeband wieder zufinden. In Kapitel 8 werden wir lernen, wie Informationen gespeichert werden können. Übung 5.3 Experimentiere mit unterschiedlichen Anordnungen des Klebebandes: weiten Kurven engen Kurven zickzack Linien breiteren Linien (benutze dazu die doppelte Klebebandbreite) schmaleren Linien (schneide dazu das Klebeband in zwei Hälften) Veranstalte mit deinen Freunden Roboterrennen: Welcher Roboter folgt erfolgreich den meisten Linien? Welcher Roboter fährt am schnellsten eine Linie ab? Übung 5.4 Bespreche den Effekt der folgenden Veränderungen auf den Thymio Roboter und dessen Fähigkeit der Linie zu folgen. Die Messereignisse der Bodensensoren erfolgen öfters bzw. weniger oft als 10 Mal pro Sekunde. Die Sensoren sind weiter auseinander bzw. näher beisammen. Es gibt mehr als zwei Bodensensoren am Boden des Roboters. 28

Kapitel 6 Glocken und Pfeifen Lass uns eine Pause von den schwierigen Aufgaben, wie dem folgen einer Linie machen und etwas Spass mit dem Roboter haben. Wir zeigen dir, wie der Roboter Musik spielen kann, auf Töne antwortet oder auf Berührung reagiert. Spiele Musik Der Thymio Roboter enthält ein Synthesizer und Du kannst diesen programmieren, um einfache Melodien zu spielen, indem du den Aktionsblock Musik benutzst: Program file bells.aesl Du wirst kein neuer Beethoven werden da nur sechs Noten, in fünf Tonlagen und zwei Tonlängen zur Verfügung stehen aber du kannst eine Melodie komponieren, die dein Roboter einzigartig macht. Die Abbildung 6.1 zeigt zwei Ereignis-Aktions Paare, welche mit einer Melodie antworten, falls der vordere oder der hintere Knopf gedrückt wird. Jedem Ereignis ist eine andere Melodie zugeordnet. Die kleinen Kreise sind die sechs Noten. Die weissen Noten sind lange Tonlängen und schwarze Noten sind kurze Tonlängen. Klicke auf den Kreis, um die Tonlänge zu ändern. Die fünf farbigen, horizontalen Balken stehen für die Tonhöhe. Klicke auf Abbildung 6.1: Spiele eine Melodie 29

den Balken über oder unter dem Kreis, um den Kreis zu bewegen. (Versuche nicht die Kreise zu verschieben (drag and drop), es wird nicht funktionieren). Übung 6.1 Schreibe ein Programm, das dir erlaubt eine Morsebotschaft zu verschicken. Eine Morsebotschaft wird mit langen und kurzen Tönen kodiert. (Striche für lange Töne und Punkte für kurze Töne). Zum Beispiel wird der Buchstabe V mit drei Punkten und einem Strich kodiert. Kontrolliere deinen Roboter durch Töne Der Thymio hat ein Mikrofon. Das Ereignis findet statt, wenn ein lautes Geräusch aufgenommen wird, wie z.b. Händeklatschen. Das Ereignis-Aktions Paar: wird die Bodenlichter einschalten, wenn du in die Hände klatschst. Information In einer lauten Umgebung kann ein Geräusch eventuell nicht als Ereignis verwendet werden, da durch den hohen Geräuschepegel dauernd Ereignisse ausgelöst werden. Übung 6.2 Schreibe ein Programm, dass den Roboter losfahren lässt, wenn du in die Hände klatschst und den Roboter stoppt, wenn du auf den Schalter drückst. Schreibe ein Programm, das umgekehrt funktioniert: Der Roboter soll losfahren, wenn du auf den Schalter drückst und stoppen, wenn du in die Hände klatschst. Gute Arbeit Roboter! Haustiere machen nicht immer das, was wir von ihnen verlangen. Manchmal brauchen sie einen freundschaftlichen Klaps um sie zu ermutigen. Genau gleich funktioniert das mit deinem Roboter. Der Thymio enthält ein Berührungssensor, welcher ein Ereignis auslöst, falls dem Roboter kurz auf seine Oberseite geklopft wird. So bewirkt zum Beispiel das Ereignis-Aktions Paar 30

dass die Lichter angehen, falls auf die Oberseite des Roboters geklopft wird. Erstelle ein Programm für dieses Ereignis-Aktions Paar und eines für das folgende Paar welches die Bodenlichter angehen lässt, wenn Du in die Hände klatschst. Program file whistles.aesl Kannst du nur die Oberlichter anstellen? Dies ist schwierig, da ein Klaps immer auch ein Geräusch erzeugt, welches laut genug sein kann, um ebenfalls die Bodenlichter anzustellen. Mit ein bisschen Übung wird es dir jedoch möglich sein, dem Roboter ein so gefühlsvollen Klaps zu geben, dass das Geräusch kein Ereignis auslöst. Übung 6.3 Schreibe ein Programm, dass den Roboter vorwärts fahren lässt bis er die Wand berührt. Versichere dich, dass der Roboter langsam fährt und sich dadurch nicht selbst beschädigt. 31

Kapitel 7 Angenehme Zeit Im Kapitel 4 haben wir ein Roboterhaustier programmiert, das uns entweder mag oder nicht mag. Nun stellen wir uns ein etwas komplizierteres Verhalten vor: ein schüchternes Haustier, welches sich nicht entscheiden kann, ob es uns mag oder nicht. Anfänglich wird das Haustier sich unserer Hand zuwenden, dann aber zurückweichen und schlussendlich sich wieder zu unserer Hand hinbewegen. Program file shy.aesl Das Verhalten des Roboters ist wie folgt: Falls der Rechte Schalter berührt wird, bewegt sich der Roboter nach rechts, falls er deine Hand wahrnimmt, bewegt er sich nach links, aber nach einer Weile bereut er die Entscheidung und bewegt sich wieder zurück. Wir wissen, wie wir die Ereignis-Aktions Paare für die erste Bewegung erstellen und wie für das Zurückbewegen, falls deine Hand erkannt wird Das Verhalten des Zurückweichens nach einer Weile kann in zwei Ereignis-Aktions Paare zerlegt werden. Falls der Roboter sich wegbewegt starte eine Timer für zwei Sekunden. Falls der Timer null erreicht drehe nach rechts ab. Wir brauchen eine neue Aktion für das erste Verhalten und ein neues Ereignis für das zweite Verhalten. Die Aktion ist ein Timer einzustellen, welcher wie ein Wecker funktioniert. Normalerweise stellen wir den Wecker auf eine bestimmte Zeit ein, aber falls ich den Wecker auf meinem Smartphone auf eine bestimmte Zeit einstelle, wird mir diese als Zeitdauer angegeben: Wecker läutet in 11 Stunden und 23 Minuten. Der Timerblock arbeitet auf die selbe Art und Weise. Der Timer wird auf eine bestimmte Anzahl Sekunden eingestellt, sobald das Ereignis stattfindet und die Aktion ausgelöst wird. Der Timer kann auf bis zu vier Sekunden eingestellt werden. Klicke irgendwo innerhalb 32

des schwarzen Kreises, wo die Oberfläche der Uhr gezeigt wird (aber nicht auf den schwarzen Kreis selber). Nach einer kleinen Animation wir die Zeitdauer des Timers (bis der Alarm ausgelöst wird) in blauer Farbe angezeigt. Das Ereignis-Aktions Paar für das erste, oben beschriebene Verhalten ist: Der Timer ist auf zwei Sekunden eingestellt. Falls das Ereignis Handerkennung stattfindet, werden zwei Aktionen ausgelöst: Drehung des Roboters nach links und Starten des Timers. Der zweite Teil dieses Verhaltens benötigt ein Ereignis, das stattfindet, falls der Alarm ausgelöst wird. Dieses tritt ein, falls die eingestellte Zeit auf Null abgelaufen ist. Der Ereignisblock zeigt dann einen klingelnden Wecker. Das Ereignis-Aktions Paar ist dass der Roboter zurück nach rechts drehen lässt, wenn der Timer abgelaufen ist. Übung 7.1 Schreibe ein Programm, welches den Roboter bei Höchstgeschwindigkeit für drei Sekunden vorwärts fahren und danach wieder zurückkehren lässt, falls der Vorwärtsschalter gedrückt wird. Füge ein Ereignis-Aktions Paar hinzu, dass die Fahrt des Roboters stoppt, falls der zentrale Schalter gedrückt wird. 33

Kapitel 8 Zustand: Mach nicht immer dasselbe (fortgeschritten) Das Programm in VPL ist eine Liste von Ereignis-Aktions Paaren. Alle Ereignisse werde eins nach dem anderen überprüft, ob sie stattfinden und falls ja, wird die dazugehörige Aktion ausgelöst. Danach beginnt die Überprüfung von vorne. Wir möchten nun, dass einige Ereignis-Aktions Paare zu einer bestimmten Zeit aktiv sind und andere nicht. Zum Beispiel in Kapitel 5, falls der Roboter vom Klebeband abkommt, möchten wir, dass er nach links oder nach rechts dreht, um das Klebeband zu suchen, je nach der Seite auf welcher er das Klebeband verloren hat. Zustände werden im fortgeschrittenen VPL Modus ausgeführt. Klick auf mit den folgenden Projekten arbeitest., bevor du Klopf, klopf In vielen Programmen haben wir ein Schalter benutzt, um ein Verhalten des Roboters auszulösen und einen anderen, um dieses wieder zu stoppen. Stell Dir nun den Startschalter deines Computer vor. Hier wird derselbe Schalter benutzt, um diesen einoder auszuschalten. Der Schalter weiss in welchem Zustand er sich gerade befindet: eingeschaltet oder ausgeschaltet. Der Schalter wird durch ein kleines grünes Licht beleuchtet, um anzuzeigen in welchem Zustand er sich gerade befindet. Schreibe ein Programm, dass die Lichter des Roboters anstellt, falls er berührt wird und wieder abstellt, wenn er ein zweites Mal berührt wird. Program file tap-on-off.aesl Das benötigte Verhalten wird in einem Zustandsdiagramm dargestellt: klopfen ausschalten aus klopfen einschalten ein Im Diagramm sind zwei Zustände durch Kreise angezeigt, die mit den Namen des Zustandes eingeschaltet und ausgeschaltet angeschrieben sind. Der Roboter kann von dem Zustand eingeschaltet zum Zustand ausgeschaltet und zurück wechseln, aber nur durch das Befolgen der Instruktionen die auf den Pfeilen angegeben sind. Diese Ereignis-Aktions Paare bedeuten: 34

Falls im Zustand ausgeschaltet ein Klopfen sattfindet, schalten die Lichter ein und wechselt der Zustand auf eingeschaltet. Falls im Zustand eingeschaltet ein Klopfen sattfindet, schalten die Lichter aus und wechselt der Zustand auf ausgeschaltet. Das fett hervorgehobene Wort und vor dem Pfeil bedeutet, dass es zwei Bedingungen gibt, die wahr sein müssen, damit der Umschaltvorgang ausgeführt wird. (a) Der Roboter muss in einem bestimmten Zustand sein und (b) das Ereignis muss stattfinden. Wenn beide Bedingungen wahr sind, wird das Umschalten durchgeführt, dies führt dazu, dass der Status geändert und die Aktion ausgelöst wird, die nach dem Pfeil geschrieben steht. Es ist wichtig zu verstehen, dass die zwei Teile der Bedingung unabhängig sind. In dem oben aufgeführten Diagramm (hier wiederholt): klopfen einschalten aus klopfen ausschalten ein erscheint das Ereignis Klopfen zweimal, aber die Aktion, ausgelöst durch das Stattfinden eines Ereignisses hängt von dem Zustand des Roboters ab, indem sich dieser gerade befindet. Ähnlich, wie in einem Einzelzustand, können verschiedene Ereignisse verschiedene Aktionen auslösen und Umschaltungen in verschiedene neue Zustände bewirken, wie im folgenden Diagramm: linker Knopf leuchte grün ein1 aus rechter Knopf leuchte rot ein2 Das Drücken des linken Knopfs während dem Zusand aus führt dazu, dass ein grünes Licht eingeschaltet wird und der Zustand wechselt zu Zustand ein1, während das Drücken des rechten Knopfes im selben Zustand dazu führt, dass eine andere Aktion ausgelöst wird, nähmlich dass ein rotes Licht eingeschaltet wird und der Zustand in einen anderen Zustand, nähmlich Zustand ein2 wechselt. Die Umsetzung Zustandsdiagramme mit Ereignis-Aktions- Paare Abbildung 8.1 zeigt die Durchführung des beschriebenen Verhaltens in der Zustandsmaschine als Ereignis-Aktions-Paaren. 35

(a) Klopfe, um ein - und auszuschalten (b) Klopfe, um den Zustand zu wechseln Abbildung 8.1: Klopfen führt zu verschieden Resultaten abhängig vom Zustand Im ersten Ereignis-Aktions Paar, ist das Ereignis zusammengesetzt aus dem Berührungsblock und der Anzeige des Zustandes : Die Zustände werden durch die Viertel eines Kreises angezeigt. Jedes Viertel kann entweder eingeschaltet (orange) oder ausgeschaltet (weiss) sein. Wir benützen das linke obere Viertel, um anzuzeigen, ob die Lichter eingeschaltet oder ausgeschaltet sind. Bei diesem Paar ist das linke obere Viertel weiss. Das bedeutet, dass der Zustand auf ausgeschaltet steht. Die Bedeutung von dieser Paar ist, dass falls der Roboter berührt wird und die Lichter ausgeschaltet sind, diese eingeschaltet werden. Ähnlich bedeutet das zweite Ereignis-Aktions Paar, dass falls der Roboter berührt wird und die Lichter an sind, diese abgeschaltet werden: Wenn du das Zusstandsdiagramm des Roboters betrachtest, wirst du bemerken, dass erst die Hälfte der Arbeit erledigt ist. Beim Ein- und Ausschalten der Lichter müssen ebenfalls die Zustände des Roboters geändert werden von eingeschaltet auf ausgeschaltet. Dazu schreiben wir zwei zusätzliche Ereignis-Aktions Paare und benutzen dazu den Aktionsblock Zustand (Abbildung 8.1(b)). Die Bedeutung von der folgende Paar ist: Falls der Roboter berührt wird im Zustand ausgeschaltet, ändere den Zustand auf eingeschaltet: Die Bedeutung von der folgende Paar ist: Falls der Roboter berührt wird im Zustand eingeschaltet, ändere den Zustand auf ausgeschaltet: 36

Bezogen auf das ganze Programm, welches aus den vier Paaren aus der Abbildung 8.1 zusammengesetzt ist, sehen wir, dass jedes Ereignis zwei Aktionen auslöst: Einschalten des Lichts und Änderung des Zustands des Roboters. Beides, die Aktion und die Änderung des Zustandes hängt vom Zustand des Roboters ab, in welchem er sich gerade befindet. Dieser Zustand wird IST-Zustand genannt. In wie vielen verschiedenen Zuständen kann sich der Roboter befinden? Die Zustände werden durch die Viertel eines Kreises angezeigt. Sowohl als Ereignis, als auch im Zustands Aktionsblock kann jedes Viertel folgende Bedeutung haben. Weiss: Das Viertel befindet sich im Zustand ausgeschaltet; Orange: Das Viertel befindet sich im Zustand eingeschaltet; Grau: das Viertel wird nicht berücksichtigt; Bei sind das linke obere und das rechte untere Viertel im Zustand eingeschaltet. Das Viertel rechts oben ist auf dem Zustand ausgeschaltet und das Viertel links unten wird nicht berücksichtigt. Das bedeutet, dass falls mit dem Ereignisblock verbunden ist, ein Ereignis stattfindet, falls die Zustände auch wie folgt gesetzt sind: or Da jedes der vier Viertel entweder ein- oder ausgeschaltet sein kann, sind 2 2 2 2 = 16 verschiedene Zustände möglich. (aus, aus, aus, aus) (aus, aus, aus, ein) (aus, aus, ein, aus)... (ein, ein, ein, aus) (ein, ein, ein, ein). Abbildung 8.2(a) zählt all die Zustände graphisch auf. 37

(a) Alle möglichen Züstande von Tyhmio (b) Der LED Kreis zeigt, die unterschiedlichen Zustände auf Abbildung 8.2: Die Zustände von Tymio und deren Repräsentation Wichtige Information Der Ist-Zustand des Roboters wird im Kreis der LED Lampen auf der Oberseite des Computers angezeit. Abbildung 8.2(b) zeigt den Roboter mit den Zuständen (ein, ein, ein, ein) Information Wird ein Programm gestartet, sind die ursprünglichen Zustände (aus, aus, aus, aus):. Trick Falls du nicht alle 16 verschiedene Zustände benötigst, sondern z.b. nur 2 oder 4, bist du frei zu entscheiden, welche Viertel du benütztst, um deine Zustände wiederzugeben. Zusätzlich, wenn du zwei verschiedene Dinge programmierts und jeder hat davon zwei mögliche Werte, kannst du zwei Viertel unabhänig voneinander benutzen. Deshalb ist die Wahlmöglichkeit nicht berücksichtigen so nützlich! Erwische die Maus Schreibe ein Programm, dass den Roboter nach links und rechts drehen lässt, um eine Maus zu suchen. Wird eine Maus mit dem äussersten linken Sensor entdeckt, wird 38

(a) Die Katze hat die Maus gefunden (b) Suchen mit dem äußersten rechten Sensor Abbildung 8.3: Der Roboter Katze ist für die Maus suchen die Suche fortgesetzt, bis die Maus von dem äussersten rechten Sensor entdeckt wird. Nun ist die Position des Roboters genau gegenüber der Maus (Abbildung 8.3(a)). Das Ereignis-Aktions Paar Program file mouse.aesl führt dazu, dass der Roboter nach links abdreht. Dies findet nur statt, falls das linke obere Viertel im Zustand ausgeschaltet ist. Am Anfang sind alle Zustände auf ausgeschaltet. Das erste Ereignis-Aktions Paar in Abbildung 8.3(b) wartet bis die Maus mit dem äussersten linken Sensor entdeckt wird. Beachte, dass das schmale Quadrat daneben weiss ist, sodass das Ereignis nur stattfindet, falls nur der äusserste rechte Sensor eine Maus erkennt. Das Zweite Ereignis-Aktions Paar in der Abbildung ändert den Zustand Abbildung 8.3(b). Das letzte Ereignis-Aktions Paar im Programm ist Dieses bewirkt, dass der Roboter stoppt, falls die Maus direkt vor dem mittleren Sensor zu liegen kommt. Warum muss das Ereignis dieses Paares von einem Zustand abhängig sein? Der Grund ist, dass der mittlere Sensor die Maus auch beim Scan von links nach rechts erkennen wird. Wir wollen, dass der Roboter jedoch einen vollen Scan vollbringt, bevor er zur 39

Position der Maus zurückkehrt. Deshalb ist es notwendig, dass diese erste Entdeckung der Maus ignoriert wird. Dies wird erreicht, indem der Scan erst gestoppt wird, falls der Zustand auf eingeschaltet und dieser erst beim Abschluss des vollständigen Scans auf eingeschaltet geändert wird. Trick Experimentiere mit der Position der Maus. Ist diese zu nahe am Roboter, werden die Sensoren zu beiden Seiten die Maus ebenfalls erkennen. Das Ereignis findet jedoch nur statt, wenn die äusseren Sensoren die Maus nicht erkennen Übung 8.1 Schreibe ein Programm, das den Roboter tanzen lässt: Der Roboter soll für zwei Sekunden nach links und dann für drei Sekunden nach rechts drehen. Diese Bewegung soll unendlich oft wiederholt werden. Übung 8.2 (schwierig) Verändere das Folge der Linie Program aus dem Kapitel 5 so, dass der Roboter nach links dreht, falls dieser die Linie auf die rechte Seite verlässt und nach rechts dreht, falls dieser die Linie auf die linke Seite verlässt. 40

Kapitel 9 Zählen (Fortgeschritten) In diesem Kapitel zeigen wir, wie die Zustände des Thymio Roboters benutzt werden können, um zu zählen und einfache Aritmetik zu betreiben. Das Design und die Einführung des Projektes wird nicht im Detail präsentiert. Wir nehmen an, dass du nun genügend Übung hast, um diese selbständig zu entwickeln. Der Quellcode eines funktionierenden Programms ist im Archiv abgelegt, aber schaue nicht nach, ausser du kommst wirklich nicht weiter, um ein Problem lösen zu können. Dieses Projekt benutzt das Klatschereignis, um den Zustand zu ändern und das voreingestellte Verhalten der LED Lichter, um die Zustände im Kreis anzuzeigen. Wichtige Information Der Ist-Zustand des Roboter wird im LED Kreis auf der Oberseite des Roboters angezeigt. Abbildung 8.2(b) zeigt den Roboter in den Zuständen (ein,ein,ein,ein). Fühle dich frei, eines dieser Verhalten zu ändern. Grad und ungrade Zahlen Programm Wähle einen Viertel der Zustände. Es wird aus (weiss) anzeigen, wenn du eine gerade Anzahl Mal in die Hände klatschst und ein (orange) anzeigen, wenn du eine ungerade Anzahl Mal in die Hände klatschst. Wenn du den mittleren Knopf drückst, wird der Zustand auf gerade zurückgestellt (0 ist ebenfalls eine gerade Zahl). Programm file count-to-two.aesl Unsere Methode zu zählen, zeigt das Konzept modulo 2 Arithmetik auf. Wir starten zu zählen von 0 bis 1 und wieder zurück zu 0. Der Ausdruck modulo entspricht dem Ausdruck Rest: Falls 7 Mal in die Hände geklatscht wurde, wird die 7 durch 2 geteilt, dies ergibt 3 Rest 1. Nun merken wir uns nur den Rest. In modulo 2 Arithmetik, werden 0 und 1 oft gerade und ungerade genannt. 41

Ein anderer Ausdruck für das selbe Konzept ist die zyklische Arithmetik. Gezählt wird anstelle von 0 zu 1 und dann von 1 zu 2, wird im Kreis wieder zurück zum Anfang gezählt: 0, 1, 0, 1,.... Diese Konzepte sind uns sehr vertraut, da sie auch in Uhren verwendet werden. Minuten und Sekunden werden modulo 60 gezählt und Stunden modulo 12 oder modulo 24. Deshalb ist die Sekunde nach der 59 Sekunde nicht die 60igste Sekunde sonder die 0te. Wir zählen im Kreis und beginnen wieder bei 0. Ähnlich die Stunden: Nach 23 kommt nicht 24, sondern 0. Wenn es 23:00 Uhr ist und wir abmachen uns in 3 Stunden zu treffen, dann ist die abgemachte Zeit für das Trefen 26 modulo 24, was 02:00 Uhr in der Nacht ist. Unäres Zählen Ändere das Programm, um mit modulo 4 zu zählen. Es gibt vier mögliche Reste: 0, 1, 2, 3. Wähle drei Viertel, jeder repräsentiert davon einen Wert von 1, 2 oder 3, der Wert 0 wird durch den Zustand alle Viertel auf aus repräsentiert. Diese Methode die Zahlen zu repräsentieren wird unäre Repräsentation genannt, dies durch die verschiedenen Elemente, die die Zustände der verschiedenen Nummern repräsentieren. Wir benützen oft unäre Repräsentation, um beim Zählen verschiedener Objekte mithalten zu können. Zum Beispiel: repräsentiert 6. Übung 9.1 Program file count-to-four.aesl Wie hoch können wir mit Thymio zählen, wenn wir unäre Repräsentation verwenden? Binäres Zählen Wir sind sehr vertraut mit Stellenwertsystemen oder Zahlensystemen, speziell mit dem Dezimalsystem mit der Basis 10. Die Symbole 256 im Dezimalsystem repräsentieren nicht drei verschiedene Objekte. Stattdessen repräsentiert die 6 die Einer, die 5 die Zehner 10 1=10 s und 2 die Hunderter 10 10 1=100. Erst durch das Hinzufügen dieser Faktoren erhalten wir die Zahl Zweihundertsechsunfüngzig. Indem wir die Basis 10 verwenden, können wir sehr grosse Nummern in einer kompakten Darstellung zusammenfassen. Zudem ist die Arithmetik mit grossen Zahlen relativ einfach, benutzt man die Methoden, die man in der Schule gelernt hat. Wir benutzen die 10er Repräsentation, weil wir 10 Finger haben. So ist es einfach diese Repräsentation zu lernen. Computer dagegen haben nur zwei Finger (aus und 42

ein). Deshalb wird die Basis 2 Arithmetik beim Programmieren verwendet. Die Basis 2 oder Binäre Arithmetik ist uns am Anfang fremd, weil ähnliche Symbole 0 und 1 wie im Dezimalsystem zur Basis 10 benutzt werden. Die Kreiszählung beginnt nun aber schon bei 2 und nicht erst bei 10. 0, 1, 10, 11, 100, 101, 110, 111, 1000,... Gibt man uns eine Binärnummer wie 1101, lesen wir sie von links nach rechts wie bei den Dezimalzahlen. Die rechteste Zahl repräsentiert die Zahl der 1er, die nächste Zahl die 1 2=2er, danach die 1 2 2=4er und die Zahl am meisten links die 1 2 2 2=8er. 1101 repräsentiert deshalb die Zahl 1+0+4+8, was Dreizehn ergibt oder zur 10 Basis ausgedrückt 13. Programm Verändere das Prgramm mit dem du in modulo 4 gezählt hast in ein binäres Repräsentationssystem. Program Order count-to-four-binary.aesl Wir benötigen nur zwei Viertel der Zustände, um die Nummern 0 3 mit der Basis 2 auszudrücken. Lass das Viertel rechts oben die 1er repräsentieren, aus (weiss) für Null und ein (orange) für Eins und das Viertel links oben repräsentiert die 2er. So repräsentiert zum Beispiel der Zustand die Nummern 1 und der Zustand die Nummer 2. Falls beide Viertel weiss sind, repräsentiert der Zustand die Zahl 0 und wenn beide Viertel orange sind, repräsentieren die Zustände die Zahl 3. Es gibt vier Umschaltungen 0 1, 1 2, 2 3, 3 0, so werden vier Ereignis- Aktions Paare benötigt und zusätzlich noch ein Paar, um das Programm in den Anfangszustand zurückzuversetzen, wenn der mittlere Knopf gedrückt wird. Trick Die zwei unteren Viertel werden nicht benutzt, deshalb bleiben sie grau und werden durch das Programm ignoriert. Übung 9.2 Erweitere das Programm, dass es in modulo 8 zählt. Das untere linke Viertel repräsentiert die 4er. Übung 9.3 Wie hoch können wir mit dem Thymio zählen, wenn wir binäre Repräsentation verwenden? 43

Addition und Subtraktion Ein Programm zu schreiben, um bis 8 zählen zu können ist ziemlich mühsam, da du 8 Ereignis-Aktions Paare programmieren musst, eines für jede Umschaltung von n to n + 1 (modulo 8). Natürlich zählen wir nicht so in einem Basiszahlensystem, stattdessen haben wir Methoden um Additionen auszuführen, indem Ziffern zu jedem Platz zugefügt werden und von da zum nächsten Platz mitgenommen werden können. Im Zahlensystem mit der Basis 10 wird dies so dargestellt: 387 +426 813 und ganz ähnlich im Zahlensystem mit der Basis 2: 0011 +1011 1110 Indem wir 1 zu 1 addieren, ergibt das nicht 2 sondern 10. Die 0 wird in der selben Spalte geschrieben und die 1 wird in die Spalte nach links verschoben. Das Beispiel oben zeigt die Addition von 3 =(0011) und 11(=1011) was 14 ergibt (=1110). Anleitung: Programm Schreibe ein Programm, das mit der Repräsentation von 0 beginnt. Jedes Mal in die Hände klatschen, fügt 1 zu der Nummer hinzu. Die Addition ist modulo 16, deshalb folgt auf 15 addiert mit 1 gleich 0. Das untere linke Viertel wird gebraucht, um die 8er zu repräsentieren. Wenn das rechte obere Viertel die 1er repräsentiert und 0 (weiss) anzeigt, ändere dies einfach auf 1 (orange). Mach dies egal was die anderen Viertel anzeigen. Wenn das obere rechte Viertel die 1er repräsentiert und 1 (orange) anzeigt, ändere dies auf 0 (weiss) und behalte dann 1. Das gibt drei Ereignis-Aktions Paare, abhängig von der Anordnung des nächsten Viertels, das 0 (weiss) anzeigt. Wenn alle Viertel 1 anzeigen (orange) wird 15 repräsentiert, wird 1 zu 15 modulo 16 addiert, ergibt dies 0, repräsentiert indem alle Viertel 0 (weiss) anzeigen. Programm Ordner addition.aesl 44

Übung 9.4 Ändere das Programm so, dass es mit 15 beginnt und mit jedem Mal Klatschen 1 substrahiert bis 0 und dann wieder bei 15 beginnt. Übung 9.5 Platziere eine Sequenz mehrerer kurzer schwarzer Klebebänder auf eine helle Oberfläche (oder helles Klebeband auf eine dunkle Oberfläche). Schreibe ein Programm, dass den Thymio vorwärts bewegen lässt und stoppt sobald er das vierte Klebeband detektiert hat. Diese Aufgabe ist nicht einfach: Die Klebebandstreifen müssen genügend weit auseinander plaziert werden, damit der Roboter sie entdeckt, aber nicht so weit, dass nicht mehr als ein Ereignis pro Streifen stattfindet. Du musst ebenfalls mit der Geschwindigkeit des Roboters experimentieren. 45

Kapitel 10 Wie weiter? Dieses Tutorial hat den den Thymio Roboter und die Aseba/VPL Umgebung eingeführt. Die VPL Umgebung mit ihrer simplen visuellen Programmierung ist für Anfänger gedacht. Du wirst jedoch die Aseba Studio Umgebung kennenlernen wollen, um fortgeschrittene Programme für deinen Roboter entwickeln zu können. (Figure 10.1). Abbildung 10.1: Aseba Studio Umgebung Programmieren im Aseba Studio ist auch auf dem Konzept der Ereignis-Aktions Paare aufgebaut, aber dir stehen viele weitere Möglichkeiten zur Verfügung: Du kannst genau bestimmen, wann ein Ereignis stattfindet, z.b. abhängig vom Licht, welches vom Boden zu einem Bodensensor reflektiert wird, oder die Distanz zu einem horizontalen Sensor. Du kannst einzelne Aktionen aus mehreren verschiedenen Aufgaben zusammensetzen, wie Kontrolle der Motoren, Änderung der Einstellungen, setzen von Grenzwerten, Ein- und Ausschalten der Lichter. Du hast die Flexibilität einer vollwertigen Programmiersprache mit Variablen, Befehlen und Kontrollfunktionen. 46