Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco

Die Seite wird erstellt Hugo Friedrich
 
WEITER LESEN
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
Robotik: Interaktion und Kooperation zwischen Robotern

 Domino-Roboter
Automatisierung des Aufbaus einer Dominostrecke

 Jan Sommerhäuser

 Kollegium St. Michael

 Betreuer: Sylvain Stotzer

 Maturaarbeit

 23. März 2018
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
Inhaltsverzeichnis

Inhaltsverzeichnis .....................................................................................................................................2

1 Einleitung .............................................................................................................................................4

2 Zielsetzung und verwendete Hard- und Software ................................................................7

 2.1 Zielsetzung und Aufgabenstellung ...................................................................................7
 2.1.1 Varianten beim Aufstellen der Steine und Fahrverhalten .................................7
 2.2 Verwendete Materialen .........................................................................................................7
 2.2.1 Thymio II .............................................................................................................................7
 2.2.2 Fernbedienung .................................................................................................................8
 2.2.3 Dominosteine ....................................................................................................................8
 2.2.4 LEGO®-Technic-Teile ....................................................................................................8
3 Spezifikation .......................................................................................................................................9

 3.1 Mechanisches System ............................................................................................................9
 3.1.1 Zwei Thymios ................................................................................................................. 11
 3.1.2 Der Schacht ..................................................................................................................... 13
 3.1.3 Die Stange ....................................................................................................................... 13
 3.1.4 Das Magazin ................................................................................................................... 15
 3.2 Programmierung der Thymios ......................................................................................... 17
 3.2.1 Koordination der Thymios ......................................................................................... 18
 3.2.2 Berechnung der Fahrtrichtung................................................................................. 19
4 Testphase .......................................................................................................................................... 24

 4.1 Stabilität der Steine .............................................................................................................. 24
 4.2 Probleme mit der Funkverbindung ................................................................................ 25
5 Schlussteil ......................................................................................................................................... 26

6 Literaturverzeichnis ....................................................................................................................... 28

7 Abbildungsverzeichnis ................................................................................................................. 29

8 Bildquellen ........................................................................................................................................ 29

9 Anhang .............................................................................................................................................. 30

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 2 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
“Everything that can be automated will be automated.”

 Zuboffs erstes Gesetz, 1988
 Shoshana Zuboff, Professorin an der Harvard University [1]

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 3 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
1 Einleitung

Im vergangenen Jahrhundert hat die Menschheit so viele technische Fortschritte ge-
macht wie nie zuvor. Einer der zahlreichen Meilensteine war der erste Einsatz eines

Industrieroboters im Jahr 1961. Dieser Roboter hiess „Unimate“ und wurde von George
Devol entwickelt. Er bestand aus einem einzigen Arm und wurde von dem Automobil-

hersteller Ford zum Verschweissen von Spritzgussteilen eingesetzt. [2] Seitdem sind
Industrieroboter aus der Automobilindustrie nicht mehr wegzudenken. Die Produktion

von Autos läuft heutzutage zu grossen Teilen automatisch ab. In stark entwickelten
Ländern wie Deutschland oder Japan kommen auf 10‘000 Mitarbeiter bereits über

1‘000 Roboter. [3]

Abbildung 1: Der Industrieroboter „Unimate“

Dieser Prozess der Automatisierung betrifft vor allem Berufe, die keine Kreativität, so-

ziales Urteilsvermögen oder geschickte Fingerfertigkeit benötigen. Besonders gefähr-
det sind beispielsweise Tätigkeiten wie Rezeptionist, Bankangestellter oder Sekretär,

da sie recht eintönige Arbeiten ausführen und kaum schwierige Entscheidungen treffen
müssen. Die Wahrscheinlichkeit, ob ein Beruf innerhalb der nächsten 20 Jahre automa-

tisiert wird, kann man seit 2015 auf der Website der britischen Nachrichtenagentur BBC
berechnen lassen. [4]

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 4 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
Aber auch in unserem Alltag werden in naher Zukunft Roboter immer mehr von unse-
ren Aufgaben übernehmen. Bereits heute forschen viele Universitäten und Autoher-

steller an selbstfahrenden Autos. Das fortschrittlichste Auto stammt von Google und
hatte im Jahr 2011 bereits 257‘000 km im öffentlichen Strassenverkehr zurückgelegt. In

den U.S.A. hat das Auto schon eine Strassenzulassung. Trotzdem muss wegen des Ge-
setzes immer noch eine Person hinter dem Steuer sitzen und aufpassen. Das Auto fährt

laut Google aber schon jetzt sicherer als ein Mensch. [5] Ursprünglich sollte das System
2017 auf den Markt kommen, wahrscheinlich werden wir uns aber noch bis 2020 ge-

dulden müssen. [6]

Auch in unseren Haushalten hat sich die Automatisierung von einfachen Aufgaben

schon längst durchgesetzt. In den Gärten findet man Rasenmäher-Roboter, in den
Wohnungen putzen Staubsauger-Roboter den Boden, und weitere Roboter reinigen

den Pool. Das sind alles noch Roboter, die nur eine einzige Aufgabe erledigen können,
ohne viel „nachzudenken“. In Zukunft könnte es aber intelligente Haushaltsgehilfen

geben, die mit den Benutzern kommunizieren und mehr als eine einzige Aufgabe erle-

digen. Ein erster Anfang könnte der japanische Roboter „Pepper“ sein, der bereits für
20‘000 CHF erhältlich ist. Pepper kann sich mit Menschen unterhalten und ihre Emoti-

onen erkennen, ist aber mehr für Unterhaltungszwecke gedacht als eine wirkliche Hilfe
im Alltag. [7] [8]

Alle diese Beispiele zeigen uns, dass eine Automatisierung von vielen Aufgaben in nicht
allzu ferner Zukunft liegt. Deswegen habe ich mir als Thema für diese Maturaarbeit die

Automatisierung einer simplen Aufgabe ausgesucht. Anhand der Planung, Konstruk-
tion und Programmierung eines Roboters soll herausgefunden werden, was alles durch

Automation möglich ist und wo die Technik an ihre Grenzen stösst. Der Roboter soll
Dominosteine aufstellen können. Jeder, der schon einmal mit Dominosteinen gespielt

hat, weiss wahrscheinlich, wie schnell man dabei die Geduld verlieren kann. Ein Roboter
hingegen arbeitet unermüdlich, ohne einen einzigen Fehler zu machen, hoffentlich.

Deswegen eignet er sich ideal, um beliebig viele Dominosteine hintereinander aufzu-
stellen.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 5 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
Die Arbeit ist folgendermassen aufgebaut: Nach der Einleitung kommt der Hauptteil
der Arbeit. Dabei wird im ersten Kapitel des Hauptteils die Aufgabenstellung sowie die

verwendete Hard- und Software vorgestellt. Im zweiten Kapitel des Hauptteils, in der
Spezifikation, wird beschrieben, wie die verschiedenen Aufgabenstellungen mit Hilfe

der genutzten Hard- und Software gelöst werden können. Die Spezifikation umfasst
sowohl das mechanische System als auch die Programmierung der Thymios. Im letzten

Kapitel des Hauptteils wird dargestellt, wie das entwickelte System getestet wurde und
welche Ergebnisse diese Tests ergeben haben. Abschliessend werden die Ergebnisse

der Arbeit zusammenfasst und bewertet.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 6 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
2 Zielsetzung und verwendete Hard- und Software

2.1 Zielsetzung und Aufgabenstellung

Die Zielsetzung dieser Maturaarbeit ist es, einen Roboter zu bauen, der eine Strecke

aus Dominosteinen aufbauen kann. Dabei sollen die Dominosteine hochkant hinterei-
nander aufgestellt werden. Wenn der erste oder letzte Stein umgestossen wird, sollen

alle anderen Steine nacheinander umfallen, so dass keiner der Steine stehen bleibt.

Diese Aufgabe soll auch ohne menschliche Eingriffe, wie z.B. die Korrektur der Fahrt-

richtung, nachträgliches Verschieben der Steine etc. möglich sein. Einzige Ausnahmen
für manuelle Eingriffe sind das Nachfüllen von Dominosteinen, die Bedienung der Fern-

bedienung und das Anstossen des ersten oder letzten Steins.

2.1.1 Varianten beim Aufstellen der Steine und Fahrverhalten

Der Benutzer soll eine Auswahl an verschiedenen Mustern haben, die der Roboter auf-
stellen kann. Die folgenden Muster soll der Roboter aufstellen können:

 Der Roboter stellt Dominosteine in einer geraden Reihe auf
 Der Roboter stellt Dominosteine in einem Kreis auf

 Der Roboter stellt Dominosteine in einer Spirale auf
 Der Roboter stellt ein zufälliges Muster auf

 Der Roboter folgt einer Linie am Boden
 Der Roboter lässt sich fernsteuern

Die Varianten werden über die Zifferntasten der Fernbedienung gewählt. Wird eine
Variante gewählt, leuchten beide Thymios in einer bestimmten Farbe. Anhand dieser

Farbe kann somit erkannt werden, welches Muster der Roboter gerade aufstellt.

2.2 Verwendete Materialen

2.2.1 Thymio II

Als Grundlage für den Dominoroboter dient der Thymio II-Roboter. In diesem Projekt

werden zwei Thymios verwendet.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 7 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
Zur Programmierung der Thymios wird der Original-Thymio-Dongle benutzt. Dieser ist
nicht unbedingt notwendig, macht jedoch das Programmieren um einiges angeneh-

mer, weil man die Thymios kabellos mit dem Computer verbinden kann.

Der Thymio-Roboter wird standardmässig mit dem Programm Aseba Studio program-

miert. Die Software ist kostenlos und steht unter www.thymio.org zum Download zur
Verfügung. Die verwendete Programmiersprache ist Aseba.

2.2.2 Fernbedienung

Als Fernbedienung wird die Original-Thymio-Fernbedienung benutzt. Es handelt sich

dabei um eine Infrarot-Fernbedienung, die über das RC5-Protokoll Signale an die Thy-
mio-Roboter sendet.

2.2.3 Dominosteine

Die Wahl der Dominosteine fiel auf die Dominomania-Steine der Detailhandelskette

Migros. Diese Steine wurden im Jahr 2009 im Rahmen einer Sammelaktion an Kunden
der Migros verteilt. Die Dominosteine haben die Abmessungen 41.4 mm x 20.7 mm x

6.4 mm, wiegen 8 g und bestehen aus massivem Kunststoff.

Aufgrund dieser Eigenschaften und der hohen Verfügbarkeit werden sie für dieses Pro-
jekt verwendet. Der ideale Abstand zwischen den Steinen liegt bei ca. 2-3 cm, in den

Kurven sollte der Abstand etwas geringer sein. Der Roboter sollte dazu in der Lage sein,
mindestens zehn der Steine transportieren zu können, um wenigstens kleine Strecken

ohne Unterbrechung aufbauen zu können.

2.2.4 LEGO®-Technic-Teile

Die gesamte mechanische Konstruktion um den Thymio herum besteht grösstenteils
nur aus LEGO®-Technic-Teilen. Der Einfachheit halber werden diese Teile ab jetzt nur

noch als „Lego-Teile“ bezeichnet. Die Lego-Teile lassen sich praktischerweise direkt
an/auf den Thymio stecken.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 8 von 35
Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
3 Spezifikation

3.1 Mechanisches System

Die wohl wichtigste Frage bei der Planung des Roboters ist, wie der Roboter die Domi-

nosteine aufstellen soll. Mit etwas Kreativität lassen sich beinahe unbegrenzt viele
Möglichkeiten finden. Doch nicht alle eignen sich gleich gut, deswegen werden im fol-

genden Teil einige Ideen vorgestellt.

Wenn man an einen klassischen Roboter denkt, stellen sich wahrscheinlich die meisten

einen Roboter mit zwei Beinen und zwei Armen vor, der wie ein Mensch laufen und
Gegenstände greifen kann. Ein solcher Roboter ist aber denkbar ungeeignet: Die meis-

ten solchen Roboter sind eher langsam, ungenau und wackelig auf ihren Beinen unter-
wegs. Ausserdem ist es praktisch unmöglich, einen solchen Roboter auf Basis des Thy-

mios zu bauen. Deswegen war recht schnell klar, dass der Roboter keine Greifarme
oder Beine haben wird.

Eine viel realistischere Möglichkeit wäre es, den Roboter die Dominosteine in einer auf-
rechten Reihe neben sich herschieben zu lassen. Weil die Steine bei dieser Variante

bereits auf dem Boden stehen, muss der Roboter die Steine gar nicht mehr absetzen.
So müsste der Roboter nur in regelmässigen Abständen einen Stein zur Seite schieben

und weiterfahren, so dass eine Domino-Reihe entsteht.

Eine weitere Möglichkeit wäre es, dass die Steine auf dem Roboter stehen und der

Roboter in regelmässigen Abständen jeweils einen Stein fallen lässt. Allerdings haben
einige Versuche mit den Dominosteinen ergeben, dass diese ab einer Fallhöhe von

circa 5 cm nicht mehr gerade landen oder sogar umfallen. Weil aber der Thymio allein
schon 5 cm hoch ist, bräuchte man bei dieser Methode zusätzlich einen geschlossenen

Schacht, durch den die Steine fallen können. Im Schacht könnten die Steine nicht kip-
pen und würden gerade auf dem Boden landen. Das Problem bei einem geschlossenen

Schacht, der bis auf den Boden reicht, ist jedoch, dass der Stein eine Möglichkeit

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 9 von 35
braucht, aus dem Schacht wieder herauszukommen. Jedes Mal, bevor der Roboter wei-
terfährt, müsste dann die Rückseite des Schachts geöffnet werden, damit der Stein dort

stehen bleibt, wo er hingefallen ist.

Schlussendlich fiel die Wahl auf eine Mischung aus den letzten beiden Varianten. Der

Roboter sollte in etwa so funktionieren:

Die Dominosteine stehen anfangs aufrecht hintereinander auf einer schrägen Fläche

auf dem Roboter. Die Steine rutschen über die schräge Fläche in einen Schacht. Der
Schacht befindet sich auf der Rückseite des Roboters und ist an der Seite geöffnet. Die

Steine fallen aber nicht bis ganz nach unten durch, sondern werden von einer Stange
im Schacht blockiert. Die Stange wird über Zahnräder von einem Motor angetrieben
und lässt sich vor- und zurück verschieben, so dass sie den Schacht öffnen und ver-
schliessen kann. Wenn die Stange also zurückfährt, kann ein Stein von oben nachrut-

schen und fällt durch den Schacht auf den Boden. Die Stange fährt danach wieder aus
und schiebt den Stein durch die seitliche Öffnung aus dem Schacht. Dieser Stein ist

jetzt endgültig platziert und wird nicht mehr bewegt. Danach fährt der Roboter ein

Stück vorwärts, der eben herausgeschobene Stein bleibt stehen. Natürlich ist es auch
möglich, Kurven zu fahren. Damit schlussendlich aber alle Dominosteine umfallen, dür-

fen die Kurven nicht zu eng sein und die Abstände zwischen den Steinen sollten kleiner
sein als auf einer geraden Strecke. Anschliessend wiederholt sich der ganze Prozess.

Die einzelnen Schritte würden demzufolge so aussehen:

 1. Die Stange fährt zurück, damit ein Stein nachrutschen kann

 2. Die Stange schiebt den Stein seitlich raus

 3. Der Roboter fährt vorwärts

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 10 von 35
3.1.1 Zwei Thymios

Wenn man die drei oben genannten Arbeitsschritte betrachtet, wird man feststellen,

dass der Roboter mindestens drei Motoren benötigt. Zwei davon treiben die Räder des
Roboters an, der dritte Motor ist für die Vor- und Zurückbewegung der Stange zustän-

dig. Da die Thymio-Roboter aber leider nur über zwei Motoren verfügen, fehlt ein Mo-
tor für die Stange. Eine Lösung für dieses Problem wäre, einen einfachen Servomotor

an den Thymio „dranzubasteln“. Das hätte einen Vorteil: der Drehwinkel des Motors
liesse sich sehr exakt steuern. Allerdings bringt ein externer Motor aber auch Nachteile

mit sich; der Motor benötigt einen eigenständigen Microcontroller, wie z.B. einen Ardu-
ino. Da der Thymio aber nur über eine USB-Schnittstelle verfügt und da weder der

Thymio noch der Arduino als Host konfiguriert werden können, müsste man sich nach
einem Weg umsehen, die beiden miteinander zu verbinden.

Da diese Lösung deutlich zu aufwendig wäre, wurde ein zweiter Thymio für den Antrieb
der Stange verwendet. Der zweite Thymio sollte auf dem ersten montiert werden. Der

erste Thymio wäre somit einzig und allein für das Fahren zuständig, während sich der

zweite nur um das Bewegen der Stange kümmern müsste.

Um die beiden Thymios miteinander zu verbinden und trotzdem die Stabilität des Ro-

boters zu garantieren, braucht es ein stabiles Gerüst, das fest mit den beiden Robotern
verbunden ist. Da die Thymios bereits Steckmöglichkeiten für Lego-Steine besitzen,

boten sich Lego-Technic-Steine als sehr robuste und einfache Lösung an. Auch die
restlichen Bestandteile des Roboters (schräge Fläche auf dem Roboter, Umlenkung des

Motors für die Stange usw.) lassen sich hervorragend mit Lego-Technic-Steinen reali-
sieren. Deswegen waren Lego-Steine die einzige vernünftige Wahl für den Aufbau des

Roboters.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 11 von 35
Abbildung 2: Schematische Darstellung des Thymios

Die ersten Versuche, die beiden Thymios übereinander zu verbinden, waren nicht sehr

erfolgreich. Grund dafür war, dass beide Roboter mit der Oberseite nach oben ausge-
richtet waren. Demzufolge standen zu wenige stabile Befestigungsmöglichkeiten für

die Lego-Steine zur Verfügung. Wie man auf der Abbildung des Thymios sehen kann,
besitzt der Thymio drei verschiedene Orte, an denen er mit Lego-Steinen verbundenen

werden kann (im Bild als mechanische Fixierung gekennzeichnet): Je zwei Löcher für x-
Stangen auf jeder Seite, vier Steckplätze mit jeweils 2x2 Noppen auf der Oberseite und

verschiedene Befestigungsmöglichkeiten an den beiden Rädern. Für die Befestigung
des Gerüsts sind die Räder aber eher schlecht geeignet, da sich die Räder trotzdem

noch drehen können müssen. Deswegen stehen nur noch die Befestigungsplätze an
den Seiten und auf der Oberseite zur Verfügung. Damit die Noppen auf der Oberseite

benutzt werden können, wurde beim zweiten Versuch der obere Roboter mit der Ober-
seite nach unten auf den anderen Roboter gesetzt. Dadurch lassen sich die beiden Ro-

boter direkt mit wenigen Teilen verbinden. Das Gewicht des oberen Thymios wird jetzt
nicht mehr vom Gerüst getragen, sondern lastet direkt auf dem unteren Roboter. Durch

das Gewicht des oberen Roboters sitzen die Verbindungsteile sogar so stabil, dass man
das Gerüst daran befestigen kann. Die Steckmöglichkeiten an der Seite des Thymios

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 12 von 35
dienen dazu, dass die Thymios vertikal zusammenhalten und dass sie nicht auseinan-
derfallen können. Somit sind die beiden Roboter fest miteinander verbunden und bie-

ten genügend Anschlussmöglichkeiten für ein Gerüst, an dem die restliche Mechanik
befestigt werden kann. Ein Nachteil dieser ganzen Methode ist allerdings, dass keiner

der Knöpfe der Thymios mehr sichtbar ist. Das heisst, dass der Roboter entweder über
Funk, über eine IR-Fernbedienung oder ein anderes Signal gestartet werden muss. Das

ist aber nur ein kleines Problem und wird später kaum stören.

Abbildung 3: Erster Prototyp des Gerüsts

3.1.2 Der Schacht

Nachdem das Gerüst um die beiden Thymios herum gebaut war, war es ein Kinderspiel,
einen Lego-Schacht auf der Rückseite der beiden Thymios zu befestigen. Der Schacht

besteht aus einigen langen vertikalen Legosteinen, zwischen denen die Steine nach
unten fallen können.

3.1.3 Die Stange

Etwas anspruchsvoller war es allerdings, den Antrieb für die Stange zu bauen. Der Mo-

tor dreht nämlich in der Fahrtrichtung, die Stange muss allerdings quer zur Fahrtrich-
tung hin- und hergeschoben werden. Dazu muss die Drehbewegung des Motors um

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 13 von 35
90° umgelenkt werden. Zum Glück gibt es von Lego eine grosse Auswahl an Zahnrä-
dern, mit denen sich die Richtung der Drehbewegung ändern lässt. Mithilfe von zwei

Kegel-Zahnrädern war es daher recht einfach, ein Getriebe für die Stange zu bauen.
Das schwarze Zahnrad in der Abbildung wird vom Motor des Thymios angetrieben, das

beige Zahnrad wird über weitere Zahnräder mit der Stange verbunden.

Abbildung 4: Getriebe für die Stange

Die Stange ist wie ein Zahnrad mit Zähnen versehen, so dass ein Zahnrad die Stange

hin- und herschieben kann. In der folgenden Abbildung wird das Prinzip der Stange
etwas deutlicher. Wenn sich das Zahnrad im Uhrzeigersinn dreht, wird die Stange nach

links geschoben, wenn sich das Zahnrad im Gegenuhrzeigersinn dreht, wird die Stange
nach rechts geschoben.

Abbildung 5: Die Stange ist mit Zähnen versehen

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 14 von 35
3.1.4 Das Magazin

Nach einigen Tests mit dem fertigen Gerüst, dem Schacht und der Stange klappte das

Aufstellen der Dominosteine schon recht gut. Allerdings fehlte noch das Magazin. Die
Steine musste man bei den Tests noch einzeln in den Schacht stecken, und der Roboter

musste die Steine nur noch zur Seite herausschieben.

Der erste Prototyp des Magazins war allerdings eine Enttäuschung. Das Magazin be-

stand aus einer schrägen Fläche, auf der die Dominosteine stehen. Die Dominosteine
sollten auf der Fläche in Richtung Schacht rutschen. Da die schräge Fläche direkt in den

Schacht übergeht, sollten die Steine nacheinander in den Schacht fallen. Allerdings war
die Reibung zwischen der Rückseite des Schachts und den Dominosteinen so gross,
dass diese nicht nach unten fallen konnten.

 Domino-Stein

 Reibung

 Lego-Schiene

 Schwer-
 kraft

Abbildung 6: Ursprüngliches Konzept für das Magazin

Auch nach mehreren Experimenten mit jeweils verschiedenen Winkeln der Lego-
Schiene war die Reibung immer noch zu gross. Stattdessen musste also eine andere

Lösung her. Der nächste Einfall, der schlussendlich auch die Lösung für das Magazin-
Problem war, ist eher kompliziert und aufwendig, bringt aber einige Vorteile mit sich.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 15 von 35
Die Idee besteht darin, die Dominosteine waagerecht aufeinander zu stapeln. So kann
man mehr Dominosteine im Magazin unterbringen, weil man den Stapel beinahe be-

liebig hoch bauen kann. Allerdings müssen die Steine aktiv aus dem Magazin gescho-
ben werden und müssen vor dem Aufstellen in eine vertikale Position gedreht werden.

Eine mögliche Lösung wäre eine Stange, die die Dominosteine aus dem Magazin her-
ausschiebt, ähnlich wie die Stange aus dem vorherigen Kapitel. Jedoch müsste die

Stange den Stein um jeweils ca. 5 cm vorwärtsschieben, damit der Stein ganz aus dem
Magazin heraus ist und in den Schacht fallen kann. Eine 5 cm lange Bewegung ist aber

eine relativ grosse Bewegung und erfordert entsprechend auch recht lange Lego-
Steine. Stattdessen wurde dann ein Gummi-Reifen unter dem Magazin installiert, der

durch eine Drehbewegung den untersten Stein aus dem Magazin befördert. Diese Me-
thode hat nach einigen Veränderungen der Reifengrösse, der Reifenposition usw. recht

zuverlässige Ergebnisse geliefert. Das Rad wird direkt über zwei Zahnräder von dem
übrigen Motor des oberen Thymios angetrieben.

 Domino-Stein

 Schacht

 Reifen

Abbildung 7: Endgültiges Konzept für das Magazin

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 16 von 35
Abbildung 8: Der fertige Roboter

Auf dem obenstehenden Bild ist der fertige Roboter von vorne zu sehen. Besonders
gut kann man das Getriebe links und das hohe Magazin auf dem Roboter sehen. In das

Magazin passen zurzeit 15 Steine, man wird also für längere Dominostrecken dauernd
Steine nachfüllen müssen. Weil das Magazin aber nach oben hin offen ist, kann man

ganz einfach während des Fahrens Steine „nachwerfen“.

3.2 Programmierung der Thymios

Im ersten Teil dieses Kapitels wird beschrieben, wie die beiden Thymios miteinander

kommunizieren und wie sie ihre einzelnen Bewegungsabläufe untereinander abstim-
men. Dabei muss man sich etwas mit den Eigenschaften des Thymios auseinanderset-

zen, da dieser nur über recht eingeschränkte Möglichkeiten zur Zeitmessung verfügt.
Auch bei der kabellosen Übertragung zwischen den Thymios gilt es, ein paar wenige

Dinge zu beachten.

Im zweiten Teil des Kapitels wird beschrieben, wie der Roboter seine Fahrtrichtung be-

rechnet, damit das gewünschte Muster aus Dominosteinen entsteht. Auch hier muss

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 17 von 35
man die eingeschränkten Möglichkeiten eines Thymios beachten, der weder kompli-
zierte mathematische Berechnungen ausführen kann, noch seine genaue Position bzw.

Ausrichtung bestimmen kann.

3.2.1 Koordination der Thymios

Aseba, die Programmiersprache des Thymios, ist eventbasiert. Alle Aktionen des Thy-
mios (z.B. Motor starten, Motor stoppen usw.) werden also durch Ereignisse ausgelöst

(z.B. Knopfdruck, Sensoren, usw.). Eines der wichtigsten Ereignisse für dieses Projekt ist
das Timer-Ereignis, das bei jedem Ablaufen des Timers ausgelöst wird.

Natürlich wäre es am einfachsten, für jeden Schritt ganz einfach einen Timer zu erstel-
len, der beim Ablaufen dann ganz einfach die gewünschten Aktionen auslöst. Leider
verfügt der Thymio aber nur über zwei verschiedene Timer. Es gilt also, einen Weg zu
finden, um alle verschiedenen Bewegungsabläufe mit maximal zwei Timer-Events zu

steuern.

Um dieses Problem zu lösen, verwendet das Programm eine if-Verzweigung und eine

Variable, die den auszuführenden Schritt angibt. Jedes Mal, wenn der erste Timer aus-

gelöst wird, wird dementsprechend eine andere Abfolge von Befehlen ausgeführt.
Nach jedem Schritt werden dann die Zeit, nach der der Timer erneut ausgelöst wird,

und die Schrittvariable angepasst.

Das Programm sieht vom Aufbau her dann etwa so aus:

Wenn der Timer abläuft, dann:
 Wenn Schritt 1 an der Reihe ist, dann:
 Der Timer soll das nächste Mal in … Sekunden ablaufen
 Führe Schritt 1 aus
 Erhöhe die Schritt-Variable um 1
 Wenn Schritt 2 an der Reihe ist, dann:
 Der Timer soll das nächste Mal in … Sekunden ablaufen
 Führe Schritt 2 aus
 Erhöhe die Schritt-Variable um 1
Usw. …

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 18 von 35
Im ganzen Programm gibt es also nur ein einziges Timer-Event, der die gesamten Be-
wegungsabläufe steuert.

Statt dass beide Thymios über einen Timer verfügen, hat nur der untere einen. In die-
sem Timer-Event sind auch die Aktionen für den oberen Thymio enthalten. Über die

Wireless-Funktion sendet der untere Thymio dem oberen jeweils die entsprechenden
Befehle. Dieser führt diese dann nur noch aus, man könnte also behaupten, dass der

untere Thymio „das Gehirn“ des Roboters bildet.

3.2.2 Berechnung der Fahrtrichtung

Die Tatsache, dass der untere Roboter der „denkende“ Roboter ist, wurde nicht ohne
Grund so ausgewählt. Der untere Roboter ist nämlich, wie bereits erwähnt, für die Fort-
bewegung zuständig und kann somit direkt von seinen Bodensensoren Gebrauch ma-
chen und profitiert von präziseren Motor-Drehwinkeln, da die Steuerungssignale nicht

zuerst über Funk übertragen werden müssen, sondern er den Motor direkt steuert.

Der untere Roboter muss also jedes Mal nach dem Setzen eines Steins die Richtung

berechnen, in die er weiterfahren muss. Die Richtung und der Abstand zwischen den

Steinen werden bestimmt durch folgende Grössen:

 - Geschwindigkeit des rechten Motors

 - Geschwindigkeit des linken Motors

 - Dauer der Drehbewegung

Die Dauer der Drehbewegung wird der Einfachheit halber konstant gelassen, so dass
man lediglich die Drehgeschwindigkeiten der Motoren bestimmen muss.

Da der Roboter, wie bereits in der Aufgabenstellung beschrieben, sechs verschiedene
Muster aufstellen können soll, muss der Roboter sechs verschiedene Berechnung aus-

führen können. Die sechs verschiedenen Muster und ihre Berechnungen lauten:

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 19 von 35
3.2.2.1 Muster „Gerade Linie“
Die gerade Linie ist das einfachste der Muster – wie der Name schon vermuten lässt,
muss der Roboter lediglich in einer geraden Linie fahren. Die Geschwindigkeiten des

linken und rechten Motors sind also gleich und bleiben konstant. Damit der Roboter
möglichst schnell vorankommt, habe ich beide Geschwindigkeiten auf das Maximum

erhöht und die Dauer der Drehbewegung dementsprechend angepasst.

Abbildung 9: Muster „Gerade Linie“

3.2.2.2 Muster „Kreis“
Wiederum ist der Name Programm – der Roboter soll eine konstante Linkskurve fahren,

so dass schlussendlich ein geschlossener Kreis entsteht. Wiederum sind die Geschwin-
digkeiten des linken und rechten Motors konstant, die Geschwindigkeit des rechten

Motors muss aber höher sein. Der Radius des Kreises lässt sich grob mit dieser Formel
abschätzen:

 9.5 
 ≈ =
 ℎ 
 −1
 
Dabei ist zu beachten, dass der Abstand zwischen den Thymio-Rädern 9.5 cm beträgt.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 20 von 35
Abbildung 10: Muster „Kreis“

3.2.2.3 Muster „Spirale“
Bei der Spirale startet der Roboter in der Mitte der Fläche, auf der die Spirale aufgebaut
werden soll. Dabei fängt er mit einer engen Kurve an, die dann aber immer grösser

wird. So entsteht eigentlich keine Spirale, so wie Archimedes sie definiert hat, sondern
eher eine Kreisevolvente. Für eine Kreisevolvente gelten folgende Formeln [9], wobei s

die Länge der Dominostrecke, t den aktuellen Abstand zum Anfangspunkt und k die
Krümmung an der aktuellen Stelle ist:

 1 2
 = 
 2
 1
 =
 
Daraus folgt:

 1
 =
 √2 

Mit k lässt sich anschliessend das Verhältnis zwischen den Geschwindigkeiten der bei-
den Räder berechnen:

 ℎ 
 =
 
Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 21 von 35
Man könnte diese Formel direkt benutzen, indem man für s die Anzahl der gesetzten
Steine einsetzt. Allerdings ist die Krümmung bereits nach wenigen Steinen sehr gering,

und der Roboter fährt eine beinahe gerade Strecke. Um das zu vermeiden, kann man s
modifizieren: Damit die Spirale nicht zu schnell wächst, teilt man s vor der Berechnung

durch einen fixen Wert oder rechnet sogar mit der Wurzel aus s.

Abbildung 11: Muster „Spirale“

3.2.2.4 Zufälliges Muster
Wie auch dieser Name vermuten lässt, ist dieses Muster rein zufällig – nach jedem Stein

bestimmt der Roboter eine zufällige Zahl und fährt um diesen Wert entweder nach
rechts oder nach links, je nachdem ob die Zahl positiv oder negativ ist.

3.2.2.5 Einer Linie folgen
Der Thymio kann dank seiner Helligkeitssensoren auf seiner Unterseite zwischen dunk-
len und hellen Oberflächen unterscheiden. So kann er beispielsweise einem schwarzen

Klebebandstreifen auf dem Boden folgen.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 22 von 35
Abbildung 12: Muster „Einer Linie folgen“

Die beiden Helligkeitssensoren sind ca. 2.5 cm voneinander entfernt. Ein Streifen Kle-
beband von 2 cm Breite passt also genau zwischen die beiden Sensoren. Wenn der

Roboter von der Linie abkommt, erkennt der jeweilige Sensor, dass sich das Klebeband
nicht mehr genau zwischen den Sensoren befindet, und der Roboter fährt daraufhin

eine entsprechende Kurve. Wenn zum Beispiel der linke Sensor das Klebeband erkennt,
fährt der Roboter eine Linkskurve. Der Roboter behält seine Richtung solange bei, bis

der andere Sensor sich über dem Band befindet. Daraus ergibt sich eine zickzackför-
mige Bewegung. Die Dominostrecke bleibt aber relativ gerade, da der Roboter erst

nach einigen Richtungsänderungen den nächsten Stein setzt.

3.2.2.6 Fernsteuerung
Wenn sich der Roboter im Fernsteuerungs-Modus befindet, kann der Benutzer dem
Roboter mithilfe der Thymio-Fernbedienung die Richtung vorgeben. Wenn man bei-

spielsweise die Links-Taste auf der Fernbedienung drückt, macht der Roboter eine
Linkskurve. Wenn man danach wiederum eine gerade Strecke wünscht, drückt man

einfach auf die Vorwärts-/Oben-Taste. Der Roboter merkt sich die aktuelle Richtung,
er wird also so lange eine Kurve fahren, bis er einen anderen Befehl erhält. So lassen

sich unbegrenzt viele verschiedene Muster erstellen – von ganz einfachen Wellenlinien
bis hin zu komplizierten geometrischen Formen.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 23 von 35
4 Testphase

4.1 Stabilität der Steine

Bereits bei den ersten Probedurchläufen wurde klar, dass der Untergrund eine ent-

scheidende Rolle spielt, ob die Steine stehen bleiben, verrutschen oder ganz umfallen.
Mehrere Versuche sollten also zeigen, welcher Untergrund am besten geeignet ist.

 Untergrund Ergebnis Geeignet?

 Fliesen Manche Steine fallen um oder verrutschen, weil der Bo- Nein

 den zu hart ist und die Steine abprallen.

 Dünner Die Steine können überhaupt nicht stehen, da die Ober- Nein
 Teppich fläche zu uneben ist.

 Plastik- Die Plastikunterlage hat erstaunlich gut funktioniert. Ver- Ja
 unterlage wendet wurde ein Teppich-Schoner für Schreibtischstühle.

 Dicke Funktioniert sehr gut. Kaum Probleme. Ja

 Holzplatte

 Dünne Funktioniert ebenfalls sehr gut. Kein einziger Stein ist um- Ja

 Holzplatte gefallen, bis jetzt das beste Ergebnis

Ein weiteres Problem für die Stabilität der Steine war die Breite des Schachts. Die Steine
hatten recht viel Spielraum, im Schacht auf die Seite zu kippen. Das lag daran, dass der

Schacht ca. 3 mm breiter war als die Steine. Die Lösung für das Problem war ein einfa-
ches Stück Plastik, das in den Schacht geklebt wird. So fallen die Steine immer gerade

herunter und fallen seltener um.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 24 von 35
4.2 Probleme mit der Funkverbindung

Bei den Tests trat noch ein weiteres Problem auf. Die Signale, die der untere Thymio

an den oberen sendet, kommen nicht alle an. Von zehn Signalen gehen ein bis zwei
Signale einfach verloren. Das hatte einige schwerwiegende Folgen: Wenn ein Signal,

das einen Motor stoppen sollte, nicht gesendet wird, dann läuft der Motor bis zum
nächsten Signal weiter. Das führte immer wieder zu Staus im Magazin, die nur durch

einen Abbruch des Programms gelöst werden konnten. Auch die Versuche mit einem
Ersatz-Thymio lieferten dieselben Ergebnisse.

Lösung für das Problem war, jedes Signal mehrfach zu senden. Oft reichte es aus, jedes
Signal zehnmal zu wiederholen. Bei höheren Wiederholungszahlen verursachte die be-
nötigte Sendezeit Probleme, da die Drehzeiten der Motoren beeinflusst wurden. Teil-
weise drehten sich die Motoren bis zu einigen Zehntelsekunden kürzer, was dazu

führte, dass die Steine nicht mehr richtig nachgeladen oder nicht mehr vollständig aus-
gestossen wurden.

Auch mit zehn Wiederholungen fallen ab und zu Signale aus, allerdings sehr selten.

Damit die Motoren trotzdem zuverlässig gestoppt werden, wurde der obere Thymio
auch mit einem Timer versehen. Statt dass der untere Thymio ein eigenes Stopp-Signal

sendet, hält der obere Thymio die Motoren selbstständig nach der richtigen Zeit an.
Das hat zwei Vorteile: Die Drehzeiten der Motoren sind immer konstant und die Mo-

toren werden zuverlässig gestoppt.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 25 von 35
5 Schlussteil

Ziel dieser Arbeit war es, mechanische Aufgaben zu automatisieren und einen Roboter
zu bauen, der eine Strecke aus Dominosteinen aufbauen kann. Dieses Ziel wurde er-

reicht. Der im Rahmen der Arbeit entwickelte Roboter besteht aus zwei Thymios sowie
aus Legosteinen und kann drei verschiedene im Programmcode definierte Muster aus

Dominosteinen aufstellen. Ausserdem kann er Dominosteine aufbauen, indem er Linien
auf dem Boden folgt oder ferngesteuert wird.

Die Entwicklung des Roboters und seiner Komponenten lief in vielen aufeinander auf-
bauenden Schritten ab, bis das gesamte System soweit optimiert war, dass es korrekt

und zuverlässig funktioniert. Zum Teil mussten dabei bereits realisierte Konstruktionen,
wie beispielsweise das Magazin und der Transport der Dominosteine, wieder verworfen

und geändert werden, weil sie nicht funktionierten.

Gleiches gilt auch für die erstellte Steuerungssoftware. Einige der ursprünglichen Ideen

und Konzepte, wie die Software zur Steuerung des Roboters programmiert werden
könnte, liessen sich in Aseba, der Sprache für die Programmierung der Thymios, nicht

realisieren. Es mussten Konzepte angepasst werden, Module neu programmiert werden
oder andere Lösungen für fehlende Funktionalitäten in Aseba gefunden werden.

Der im Rahmen dieser Arbeit entwickelte Roboter hat dabei einen Funktionsumfang,
der sich durchaus auch noch erweitern liesse. Eine Zusatzfunktion könnte beispiels-

weise das Erkennen von Hindernissen sein, wie einer Mauer oder einer Tischkante. Zu-
dem könnte man eine Funktion programmieren, dass der Roboter zur Ausgangsposi-

tion zurückfährt und dort den ersten aufgestellten Stein umstösst. Darüber hinaus be-
stehen Möglichkeiten, das System weiter zu optimieren. Beispielsweise könnten die

einzelnen Prozessschritte stärker parallelisiert werden, so dass mehr Dominosteine pro
Zeit aufgestellt werden können. Dies wären Ideen für einen Domino-Roboter 2.0.

Obwohl es gelungen ist, das Aufstellen der Steine vollständig zu automatisieren,
kommt der Roboter nicht ganz ohne menschliche Hilfe aus. So müssen die Steine re-

gelmässig nachgefüllt werden, da gerade mal ein Dutzend Steine in das Magazin des

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 26 von 35
Roboters passen, oder der Benutzer muss den Roboter mit der Fernbedienung anhal-
ten, wenn er das Ende der Strecke erreicht hat.

Selbst eine relativ simple Aufgabe, wie das Aufstellen einer Strecke von Dominosteinen,
kann jedoch von dem entwickelten Roboter nicht vollständig ohne Hilfe eines Men-

schen erledigt werden. In Bezug auf die Automation kann man also sagen, dass sich
bei komplexeren Aufgaben oftmals nicht immer alle Schritte vollständig automatisieren

lassen. Roboter sind jedoch in der Lage, mit dem Menschen zusammenzuarbeiten, re-
petitive Aufgabenteile zu übernehmen und so gemeinsam mit dem Menschen auch

komplexere Aufgaben effizient durchzuführen. Sie sind somit eine Unterstützung und
Hilfe in unserem Alltag, in Zukunft sicherlich in einem noch grösseren Ausmass als wir

dies heute bereits erleben.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 27 von 35
6 Literaturverzeichnis

[1] Wikipedia, „Shoshana Zuboff,“ 16 10 2017. [Online]. Available:
 hiips://en.wikipedia.org/wiki/Shoshana_Zuboff. [Zugriff am 22 11 2017].

[2] Wikipedia, „Industrieroboter,“ 13 11 2017. [Online]. Available:
 hiips://de.wikipedia.org/wiki/Industrieroboter. [Zugriff am 20 11 2017].

[3] Wikipedia, „Automobilfertigung,“ 1 6 2017. [Online]. Available:
 hiips://de.wikipedia.org/wiki/Automobilfertigung. [Zugriff am 20 11 2017].

[4] BBC, „Will a robot take your job?,“ 15 9 2015. [Online]. Available:
 hiip://www.bbc.com/news/technology -34066941. [Zugriff am 20 11 2017].

[5] Wikipedia, „Selbstfahrendes Kraftfahrzeug,“ 9 11 2017. [Online]. Available:
 hiips://de.wikipedia.org/wiki/Selbs tfahrendes_Kraftfahrzeug. [Zugriff am 22 11 2017].

[6] T. Schulz, „Google-Auto: Unterwegs im selbstfahrenden Auto,“ Spiegel Online, 15 5 2015.
 [Online]. Available: http://www.spiegel.de/auto/aktuell/google-auto-unterwegs-im-
 selbstfahrenden-auto-a-969532.html . [Zugriff am 22 11 2017].

[7] Spiegel Online, „Softbank Pepper: Haushaltsroboter aus Japan bald in den USA,“ Spiegel
 Online, 3 9 2014. [Online]. Available: http://www.spiegel.de/netzwelt/gadgets/softbank-
 pepper-haushaltsroboter-aus-japan-bald-in-den-usa-a-989599.html. [Zugriff am 22 11
 2017].

[8] R. Widmer, „Roboter «Pepper»: dumm, aber niedlich,“ SRF, 4 4 2017. [Online]. Available:
 hiips://www.srf.ch/radio -srf-3/digital/roboter-pepper-dumm-aber-niedlich. [Zugriff am
 22 11 2017].

[9] Wikipedia, „Kreisevolvente,“ 13 11 2017. [Online]. Available:
 hiips://de.wikipedia.org/wiki/Kreisevolvente. [Zugriff am 3 3 2018].

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 28 von 35
7 Abbildungsverzeichnis

Abbildung 1: Der Industrieroboter „Unimate“ ...............................................................................4
Abbildung 2: Schematische Darstellung des Thymios ............................................................. 12
Abbildung 3: Erster Prototyp des Gerüsts .................................................................................... 13
Abbildung 4: Getriebe für die Stange ............................................................................................ 14
Abbildung 5: Die Stange ist mit Zähnen versehen .................................................................... 14
Abbildung 6: Ursprüngliches Konzept für das Magazin .......................................................... 15
Abbildung 7: Endgültiges Konzept für das Magazin ................................................................ 16
Abbildung 8: Der fertige Roboter .................................................................................................... 17
Abbildung 9: Muster „Gerade Linie“ ............................................................................................... 20
Abbildung 10: Muster „Kreis“ ............................................................................................................ 21
Abbildung 11: Muster „Spirale“ ........................................................................................................ 22
Abbildung 12: Muster „Einer Linie folgen“ ................................................................................... 23

8 Bildquellen

Abbildung 1: Der Industrieroboter „Unimate“:
hiip://zdnet2.cbsistatic.com/hub/i/r/2016/01/26/3eb7fa26 -bc3b-4451-b25a-
d722af2d7a40/resize/1170x878/8eedd74c84cd0a4a91b4f4f1c4c83535/unimate.jpg
Abbildung 2: Schematische Darstellung des Thymios:
hiips://aseba.wdfiles.com/local --files/de%3Athymiospecifications/thymioII-sensor-
actuator-color-de.svg

Alle anderen Abbildungen in dieser Arbeit wurden im Rahmen der Arbeit selbst erstellt.

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 29 von 35
9 Anhang

Im Anhang befindet sich der gesamte Aseba-Code, wie er zu Ende der Testphase ver-
wendet wurde (die Änderungen aus der Testphase sind also enthalten).

Im Programm wurden folgende globale Ereignisse definiert:

 #ändert die Farbe des oberen
 Thymios
 #startet das Nachladen eines
 Steins
 #startet das Ausstossen eines
 Steins

Ausserdem wurden folgende globale Konstanten definiert:

 #Anzahl Emit-Wiederholungen
 #Geschwindigkeit Nachladen1
 #Dauer Nachladen1
 #Geschwindigkeit Nachladen2
 #Dauer Nachladen2
 #Geschwindigkeit Ausstossen1
 #Dauer Ausstossen1
 #Geschwindigkeit Ausstossen2
 #Dauer Ausstossen2

Dies ist der Code für den unteren Thymio:

var active = 0 #gibt an, ob der Roboter gerade
 ein Muster aufbaut oder still
 steht
var mode = 1 #gibt an, welches Muster der Ro-
 boter aufstellt
var nextstep = 1 #gibt an, welchen Schritt der Ro-
 boter als nächstes ausführt
var counter = 0 #gibt an, wieviele Steine der Ro-
 boter aufgestellt hat

var direction #wird zur Berechnung der Fahrt-
 richtung benutzt
var blinker #gibt an, ob der Blinker leuch-
 tet, wird nur in Modus 6 benutzt
var stop #pausiert die Richtungskorrektur,
 wird nur in Modus 5 benutzt

var i #Variable für for-Schleifen

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 30 von 35
var red = 255 #Rot-Wert der Farbe des Roboters
 (255=max)
var green = 0 #Grün-Wert der Farbe des Roboters
var blue = 0 #Blau-Wert der Farbe des Roboters
callsub led #ändert die Farben aller Led's zu
 [,,]

onevent rc5 #bei Tastendruck auf der Fernbe-
 dienung
if rc5.command==87 then #Stopp-Taste
 active = 0
 red = 255
 green = 0
 blue = 0 #Farbe = Rot
 callsub reset
elseif rc5.command==80 and mode==6 then #Oben-Taste
 direction = 0
elseif rc5.command==85 and mode==6 then #Links-Taste
 direction = 100
elseif rc5.command==86 and mode==6 then #Rechts-Taste
 direction = -100
elseif rc5.command==1 and active==0 then #1-Taste
 active = 1
 mode = 1 #Modus = Linie
 red = 0
 green = 255
 blue = 0 #Farbe = Grün
 callsub reset
elseif rc5.command==2 and active==0 then #2-Taste
 active = 1
 mode = 2 #Modus = Kreis
 red = 0
 green = 0
 blue = 255 #Farbe = Blau
 callsub reset
elseif rc5.command==3 and active==0 then #3-Taste
 active = 1
 mode = 3 #Modus = Spirale
 red = 0
 green = 255
 blue = 255 #Farbe = Cyan
 callsub reset
elseif rc5.command==4 and active==0 then #4-Taste
 active = 1
 mode = 4 #Modus = Zufall
 red = 255
 green = 255
 blue = 0 #Farbe = Gelb
 callsub reset
elseif rc5.command==5 and active==0 then #5-Taste
 active = 1
 mode = 5 #Modus = Linie folgen

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 31 von 35
red = 255
 green = 0
 blue = 255 #Farbe = Magenta
 callsub reset
elseif rc5.command==6 and active==0 then #6-Taste
 active = 1
 mode = 6 #Modus = Fernsteuerung
 red = 255
 green = 255
 blue = 255 #Farbe = Weiss
 callsub reset
end

onevent timer0 #der Haupttimer des Programms,
 läuft die ganze Zeit
if active==1 then

 if nextstep==1 then #führt Schritt 1 aus (fahren)
 nextstep++
 callsub move
 elseif nextstep==2 then #führt Schritt 2 aus (anhalten)
 nextstep++
 timer.period[0] = 1
 callsub stop
 elseif nextstep==3 then #führt Schritt 3 aus (nachladen)
 nextstep++
 timer.period[0]=reloadtime1+reloadtime2+50 #wartet auf das Ende des Nachla-
 dens und wartet 50 zusätzliche
 Millisekunden, da sonst die Sig-
 nale überlagern
 callsub reload
 elseif nextstep==4 then #führt Schritt 4 aus (ausstossen)
 nextstep=1
 counter++
 timer.period[0] = pushtime1+pushtime2 #Wartet auf das Ende des Ausstos-
 sens
 callsub push
 end
end

onevent timer1 #der Hilfstimer des Programms
if mode==5 and stop==0 then
 if prox.ground.reflected[0]
if blinker==0 and direction==100 then
 call leds.bottom.left(254, 0, 0) #linke Leds wechseln zu rot
 blinker = 1
 elseif blinker==0 and direction==-100 then
 call leds.bottom.right(254, 0, 0) #rechte Leds wechseln zu rot
 blinker = 1
 else
 call leds.bottom.left(254, 254, 254) #Leds werden auf weiss zurückge-
 setzt
 call leds.bottom.right(254, 254, 254)
 blinker = 0
 end
end

sub reset #setzt alle Variablen zurück
callsub led
callsub stop
counter = 0
direction = 0
blinker = 0
nextstep = 1
timer.period[0] = 1
timer.period[1] = 0

sub move #lässt den unteren Roboter
 vorwärtsfahren
if mode==1 then
 timer.period[0] = 200
 motor.right.target = 500
 motor.left.target = 500 #ergibt eine gerade Linie
elseif mode==2 then
 timer.period[0] = 250
 motor.right.target = 500
 motor.left.target = 250 #ergibt einen Kreis
elseif mode==3 then
 timer.period[0] = 400
 call math.sqrt(direction,counter)
 direction = 875/(direction+10)
 motor.right.target = 200 + direction
 motor.left.target = 200 - direction #ergibt eine Spirale
elseif mode==4 then
 timer.period[0] = 300
 call math.rand(direction) #erzeugt eine Zufallszahl zwi-
 schen −32768 und 32767
 direction = direction/328 #wandelt die Zahl in eine Zahl
 zwischen -100 und 100 um
 motor.right.target = 200 + direction
 motor.left.target = 200 - direction #ergibt eine zufällige Richtung
elseif mode==5 then
 timer.period[0] = 500

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 33 von 35
timer.period[1] = 10 #Timer1 korrigiert die Fahrtrich-
 tung, so dass der Thymio einer
 Linie folgen kann
 stop = 0
elseif mode==6 then
 timer.period[0] = 300
 timer.period[1] = 200 #Timer1 steuert den Blinker,
 der die Richtung anzeigt
 motor.right.target = 200 + direction #im Modus 6 sind die Richtungs-
 Befehle der Fernsteuerung akti-
 viert, lässt sich
 also mit der Fernbedienung verän-
 dern
 motor.left.target = 200 – direction
end

sub stop #stoppt alle Motoren
stop = 1
motor.right.target = 0
motor.left.target = 0

sub reload #sendet den Befehl zum Nachladen
 an den oberen Thymio
for i in 1:emitrepeat do #wiederholt das Signal mal
 emit reload
end

sub push #sendet den Befehl zum ausstossen
 an den oberen Thymio
for i in 1:emitrepeat do #wiederholt das Signal mal
 emit push
end

sub led #ändert die Farben aller Leds von
 beiden Thymios
call leds.bottom.right(red,green,blue)
call leds.bottom.left(red,green,blue)
call leds.top(red,green,blue)
for i in 1:emitrepeat do #wiederholt das Signal
 mal
 emit led([red,green,blue])
end

Dies ist der Code für den oberen Thymio:

var nextstep = 0 #gibt an, welchen Schritt der
 Roboter als nächstes ausführt
timer.period[0] = 0

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 34 von 35
onevent reload #startet den Haupttimer bei
 Schritt 1 (nachladen)
nextstep = 1
timer.period[0] = 1

onevent push #startet den Haupttimer bei
 Schritt 4 (ausstossen)
nextstep = 4
timer.period[0] = 1

onevent led #ändert die Farbe aller Leds
call leds.bottom.right(event.args[0],event.args[1],event.args[2])
call leds.bottom.left(event.args[0],event.args[1],event.args[2])
call leds.top(event.args[0],event.args[1],event.args[2])

onevent timer0 #der Haupttimer des Programms
if nextstep == 1 then #dreht das Nachlade-Rad rück-
 wärts, damit der unterste Stein
 richtig positioniert ist
 motor.right.target = reloadspeed1
 timer.period[0] = reloadtime1
 nextstep++
elseif nextstep == 2 then #Lädt einen Stein nach
 motor.right.target = reloadspeed2
 timer.period[0] = reloadtime2
 nextstep++
elseif nextstep == 3 then #Stoppt das Nachlade-Rad
 motor.right.target = 0
 timer.period[0] = 0
 nextstep = 0
elseif nextstep == 4 then #Fährt die Ausstoss-Stange zurück
 motor.left.target = pushspeed1
 timer.period[0] = pushtime1
 nextstep++
elseif nextstep == 5 then #Stösst den Stein aus
 motor.left.target = pushspeed2
 timer.period[0] = pushtime2
 nextstep++
elseif nextstep == 6 then #Stoppt die Ausstoss-Bewegung
 motor.left.target = 0
 timer.period[0] = 0
 nextstep = 0
end

Maturaarbeit „Domino-Roboter“ von Jan Sommerhäuser Seite 35 von 35
Sie können auch lesen