Dies ist eine alte Version des Dokuments!
Unser Roboter ist dem kleinen fanatisch-, neurotischen Putzroboter „M-O“ – die Kurzform für „Microbe Obliterator“ –
aus dem Walt-Disney Film „Wall-E – Der Letzte räumt die Erde auf“ nachempfunden.
Abbildung 1: Walt-Disney Animationsfilm „Wall-E - Der Letzte räumt die Erde auf“
Abbildung 2: Putzroboter M-O „Microbe Obliterator“
Seine Hauptaufgabe ist es, einer zuvor definierten Strecke, in Form einer schwarzen Linie auf einer möglichst ebenen Oberfläche, zu folgen und dabei mittels einer an den Armen angebrachten Rolle die besagte Oberfläche zu reinigen. Das Ziel ist es, eine möglichst originalgetreue Abbildung seines Verhaltens aus dem Film zu erschaffen. Dies wird in erster Linie durch den begrenzten Arbeitsbereich ermöglicht, da M-O im Film seine Arbeit ebenfalls nur im Bereich einer klar definierten Linie verrichten darf.
Das allein reicht jedoch nicht aus, um eine originalgetreue Abbildung von M-O darzustellen, weshalb weitere Überschneidungen von Verhalten und Aussehen zum Film benötigt werden. Um den Beginn seines Arbeitsprozesses, sowie seine Arbeitsbereitschaft anzukündigen, soll er zudem - wie im Film - seine Arme samt der Rolle bewegen können. In unserem Fall soll er die Arme zu Beginn enthusiastisch hochwerfen und anschließend wieder runternehmen, um mit seiner Aufgabe anzufangen.
Um mehr Emotionen beim Arbeitsprozess zeigen zu können, soll er aber auch - im Einklang mit den Armen - seinen Kopf bewegen können. Ähnlich wie bei den Armen soll der Kopf seine Arbeitsbereitschaft zu Beginn durch einen schnellen Blick nach oben (Richtung Putzrolle) darstellen. Anschließend soll er - wenn die Arme die Rolle wieder nach unten befördert haben - gezielt nach unten schauen, um eine konzentrierte Verfolgung seiner Aufgabe ersichtlich zu machen.
Doch dieses Gefühl soll auch durch sein Aussehen sichtbar gemacht werden. So sollen die Augen des Roboters durch LED-Matrizen generiert werden, um seinen jeweiligen Gemütszustand bei der Arbeit noch präziser darzustellen und um eine weitere Ähnlichkeit zum Film zu erschaffen. Zuletzt soll er auch noch konkrete Audioausschnitte, bzw. MP3-Dateien aus dem Film, im Verlauf seiner Haupttätigkeit, abspielen können, um ihm wortwörtlich eine Stimme zu geben, die seinen Charakter und seine Emotionen gezielt hervorbringen kann.
Aus diesen Funktionen wird ersichtlich, dass das Augenmerk unseres Projekts weniger auf seiner Funktion als Putzroboter, sondern vielmehr auf den ausgestrahlten Emotionen und Verhaltensweisen liegt. Das Ziel ist es letztendlich, eine möglichst originalgetreue Abbildung von M-O, mit dem Fokus auf sein Verhalten und weniger auf seine Funktion gerichtet zu erschaffen.
Unser Roboter besteht grundlegend aus den folgenden vier Baugruppen:
Aufgrund von Zeitmangel, unzureichendem Programmierspeicherplatz sowie ausgelasteten Digitalpins, konnte die ursprünglich geplante fünfte Baugruppe nicht umgesetzt werden: Das Generieren von Augen über LED-Matrizen.
Zu Beginn der Projektphase hatten wir ursprünglich Ultraschallsensoren zur Hinderniserkennung und räumlichen Orientierung eingeplant. Doch alsbald erinnerten wir uns daran, wie M-O sich im Film fortbewegt. Er folgt einer fest definierten Strecke, um seine Putzarbeit zu verrichten. Es ist ihm untersagt vom Weg abzuweichen. Aus diesem Grund haben wir uns dafür entschieden einen Infrarotsensor anstelle eines Ultraschallsensors zu integrieren. Infrarotsensoren nutzen den photoelektrischen Effekt zur Detektion. Das vom Sensor ausgehende Infrarotlicht wird von einem Objekt reflektiert und vom Phototransistor empfangen. Die Reflexion kann hierbei durch ein Objekt oder eine unterschiedlich gefärbte Fläche entstehen. Somit lassen sich Infrarotsensoren u.a. zur Linienerkennung einsetzen. Für eine erfolgreiche Linienerkennung, musste zunächst die Reichweite der Infrarotsensoren ermittelt werden, welche von Modell zu Modell unterschiedlich ausfällt. Durch Ausprobieren, Nachjustieren und Verstellen der Stellschraube (Potentiometer) konnten wir die Sensorreichweite, welche nur wenige Millimeter beträgt, ausmachen. Der Programmcode zum Ansteuern und Testen der Infrarotsensoren befindet sich unter den Rohdaten dieser Seite.
Abbildung 3: Steckplatine von M-O erstellt mit dem open-source Programm Fritzing.
Da die LED-Matrizen noch nicht im Gesamtsystem integriert sind, werden sie im gegenwärtigen Schaltplan nicht aufgeführt.
Pinbelegung am Arduino Nano | |
---|---|
D2 | Step-Pin DRV8834 - Schrittmotor L |
D3 | Dir-Pin DRV8834 - Schrittmotor L |
D4 | Step-Pin DRV8834 - Schrittmotor R |
D5 | Dir-Pin DRV8834 - Schrittmotor R |
D6 | Digital-Output Infrarotsensor L |
D7 | Digital-Output Infrarotsensor R |
D8 | Signal/PWM Servomotor L - Arm |
D9 | Signal/PWM Servomotor R - Arm |
D10 | Signal/PWM Servomotor - Kopf |
D11 | Base-Pin Transistor |
Abbildung X: Pinbelegungstabelle. Ausschließliche Verwendung von Digitalpins.
Elektrotechnische Bestandteile
Konstruktion
Das Zusammenfügen der Einzelbestandteile erfolgte mittels einer Heißklebepistole. Zur Verbesserung der Stabilität der Konstruktion, empfehlen wir Nachbau-Interessierten, den Einsatz von Schrauben und Ähnlichem. Um die Verkabelung der elektrotechnischen Bestandteile mit der Steckplatine zu ermöglichen, wurden mehrere Löcher in die obere und untere Holzbasis gebohrt.
Eine ganze Reihe an Bildern…
Audiodateien, die während des Lebenszyklus abgespielt werden:
Nicht eingebundene Audiodateien:
Abbildung 4: Schaltplan für den Anschluss eines Mikrocontrollers an einen DRV8834 Schrittmotortreiberträger. 1.)
Abbildung 5: Schaltplan des bipolaren Schrittmotors. Die Anordnung der Spulen ist beim Anschluss des Schrittmotors an den Driver zu beachten. 2.)
Aus eigener Sicht haben wir ca. 90% des Projekts abgeschlossen. Zuerst der Überblick, wozu unser Roboter jetzt in der Lage ist:
M-O kann den gesamten geplanten Arbeitszyklus, trotz einiger Mängel, durchführen. Das bedeutet, dass er mittels den angebrachten Motoren und Line-Tracking-Sensoren eine bestimmte, durch eine schwarze Linie gekennzeichnete Strecke ablaufen kann. Er ist dabei in der Lage, Kurven zu erkennen und er kann seine Tätigkeit beim Auftreffen auf eine schwarze Oberfläche beenden. Bei den zuletzt durchgeführten Testfahrten gab es keine größeren Probleme hinsichtlich der Stabilität der Räder und er konnte die gegebene Strecke relativ gleichmäßig abfahren. Nur bei den ersten Testfahrten gab es einige Konstruktions-Pannen, dazu später mehr.
Während des Arbeitszyklus verlaufen die Bewegungen des Kopfes und der Arme größtenteils plangemäß, was bedeutet, dass alle Winkel der Servomotoren korrekt konfiguriert sind und gleichmäßige Bewegungen stattfinden. Die von den Armen getragene Rolle erfüllt grundlegend ihre Aufgabe. Sie schleift zwar mehr über den Boden als dass sie rollt, doch dies reicht aus, da das Putzen wie bereits gesagt nicht unsere Priorität bei diesem Projekt war.
Er ist ebenfalls in der Lage, die von uns ausgewählten Audiodateien über den Piezolautsprecher auszugeben. Zwar lässt die Audioqualität etwas zu wünschen übrig, doch vorerst reichte es uns aus, dass die gewählten Dateien zum richtigen Zeitpunkt und größtenteils verständlich abgespielt wurden.
Mit dem originalgetreu aussehenden Gehäuse und den großen LED-Matrizen, die sich am Kopf des Roboters befinden, ist auch das optische Erscheinungsbild zu einem gelungenen Ergebnis gekommen. Gleichzeitig sind Gehäuse und Gerüst im Inneren stabil genug, um das Gleichgewicht der gesamten Konstruktion zu halten, wodurch er bei den Testfahrten nicht so aussieht, als ob er jederzeit umfallen könnte.
Zwar besteht das Gehäuse, dessen Herstellung relativ zeitaufwendig war, nur aus Pappe, doch es ist stabil genug und beeinträchtigt bei Fahrten nicht.
Es gibt dennoch einige Mängel, die den finalen Entwurf eben nicht perfekt machen:
Wie bereits erwähnt, gab es einige Pannen bei den Testfahrten, die sich auf den Zusammenbau unserer Konstruktion zurückführen lassen. Da wir für die Befestigung der Konstruktion ausschließlich Heißkleber verwendeten, bildet das Gerüst des Körpers zwar eine stabile Basis, doch die außen angefügten Räder fielen des Öfteren von den Motoren ab. An dieser Stelle wollten wir genug Kleber für einen festen Halt aber auch nicht zu viel Kleber am Motor verwenden, aufgrund der Sorge, dass die Räder verkleben könnten und sich nicht mehr an den Motor drücken lassen. Dies passierte ebenfalls einige Male und war nicht so leicht zu kurieren. Dadurch fielen die Räder allerdings auch ab und eine andere Methode zur Befestigung, wie zum Beispiel Schrauben, wäre möglicherweise idealer gewesen.
Doch auch an den Armen und vor allem dem Kopf wäre eine stabilere Verbindung praktisch gewesen. Hier reichte der Heißkleber zum Verbinden am Gerüst aus, doch die kleinen Mikro-Servomotoren, die wir verwendeten, sind nicht für größere Gewichte geeignet. Bei den Testfahrten reichten die Motoren zwar aus, um Arme und Kopf zu bewegen, doch der Kopf fing des Öfteren, aufgrund der ruckartigen Bewegung, an hin- und her zu wackeln. Größere und stabilere Motoren könnten das Problem lösen, doch die Mikro-Servos reichen für unsere Zwecke trotzdem aus.
Zusammengefasst gab es einige Herausforderungen in der Konstruktion, die durch eine bessere Planung leichter zu lösen gewesen wären. Doch die Konstruktion hält und das Projekt ist größtenteils funktionsfähig. Ansonsten gibt es noch einige Aspekte, die wir, aufgrund von Zeitgründen, nicht ausbauen konnten. Diese könnten zukünftig von uns, oder einer anderen Gruppe erweitert werden:
Das Erste was fehlt ist ein festliegender Akku für die Schrittmotoren, sowie die externe Stromquelle für den Arduino Nano. Wie in den Videos zu sehen ist, mussten wir bis zuletzt Powerbank und Akku bei jeder Testfahrt mithalten, da wir noch keinen Platz für eine Befestigung finden konnten (der Innenraum ist mit den technischen Bestandteilen ausgelastet).
Dann wäre da das Gehäuse für die Arme. M-O besitzt eigentlich noch rundliche Arme, für die ein weiteres Gehäuse, vorzugsweise auch aus Pappe, angebracht werden müsste. Aus Zeitgründen und aufgrund von Prioritäten, war dies allerdings nebensächlich.
Des Weiteren fehlt noch die Inbetriebnahme der LED-Matrizen. Zwar befinden sich die LED-Matrizen bereits im Kopf, doch wir konnten sie bisher noch nicht verkabeln. Beide von uns verwendeten Breadboards sind nahezu vollständig ausgenutzt, weshalb es schwierig ist, sämtliche Kabel der LEDs anzubringen. Ein weiteres Breadboard wäre vermutlich vonnöten, doch auch die begrenzte Anzahl an digitalen Pins auf dem Arduino Nano stellt ein Problem dar. Die LED-Matrizen haben wir bereits vollständig programmiert, doch selbst dann gibt es noch das Problem, dass wir bereits ca. 95% des Arduino-Speicherplatzes verwenden und der LED-Code benötigt weitere 8%. Dies liegt vor allem an der Größe der Audiodateien, die wir verwenden, da diese einen Großteil des Speicherplatzes ausnutzen. Da der Code zur Verfügung steht, müsste lediglich der Gesamtcode komprimiert werden, um mehr Speicherplatz freizugeben. Stattdessen könnte der verfügbare Speicherplatz selbst erhöht werden bspw. durch den Einsatz eines anderen Mikrocontrollers (Arduino Uno) oder mithilfe einer zusätzlichen SD-Karte.
Zuletzt könnte in Zukunft der Lebenszyklus des Roboters erweitert werden. In unserem Fall besitzt der Roboter einen Arbeitsstrang, der beim Auftreffen auf eine schwarze Oberfläche endet, doch es könnten noch Erweiterungen, wie zum Beispiel eine alternative Startsequenz, etabliert werden, wie es in unserem ursprünglichen Plan gedacht war.
Video 1: Jungfernfahrt auf gerader Strecke. (Die Kurvenerkennung über die Infrarotsensoren erfolgt zwar einwandfrei, doch aufgrund der eingestellten Schrittzahl/Schritte pro Umdrehung der Räder, ist M-O nicht in der Lage, rechtzeitig die Kurve zu kriegen.) Das Abbiegen ist noch nicht geglückt.
Video 2: Testfahrt im Kreis. Weiterhin nicht in der Lage abzubiegen.
Video 3: Weitere Testfahrt im Kreis. Nach Veränderung der Schrittzahl, ist die Linienverfolgung geglückt.