Domino-Roboter - Kollegium St. Michael Maturaarbeit - Jan Sommerhäuser - Roteco
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
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
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
“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
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
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
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
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
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
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