Dies ist eine alte Version des Dokuments!
Ein Projekt von André Bertholdt, Lisa Heimburger, Julia Henkel, Tobias Rieper und Anne Wulfhorst.
Der Roboter „findoBot“ ortet ein Handy auf dem Boden im Raum, nimmt es auf und bringt es zum Ausgangspunkt zurück. Dazu empfängt findobot ein vom Handy ausgesendetes Audiosignal und bewegt sich durch dessen Analyse in Richtung des Handy. Der Roboter bringt das Handy über denselben Weg zum Startpunkt zurück. Er bewegt sich mit elektromotorbetriebenen Rädern und die Energie dafür sowie auch für den Mikrochip wird von einem Akku bereitgestellt.
Ziele
Erwartete Herausforderungen
Planung
Die Gruppe wurde in zwei Teams eingeteilt, von denen sich eines mit der Konstruktion sowie Motorisierung des Roboters und eines mit der Signalverarbeitung des Audiosignals beschäftigte. In den ersten Arbeitsstunden wurde Recherchearbeit im Internet geleistet, um passende Technik und Codes für die Problemlösung zu finden, ebenso standen die Tutoren beratend bei und gaben technische Empfehlungen. Von den Tutoren kam z.B. der Tipp, dass man die Audiosignale mit Hilfe der Fourier-Transformation verarbeiten kann, um entsprechende Informationen zur Identifikation und für die Ortung des Signals zu bekommen. Ebenso wurde der Teensy-Chip empfohlen, da dieser eine stärkere Rechenleistung als der Arduino aufweist. Bei der Konstruktion des Roboters wurden teilweise Roboter aus den vergangenen Jahren zur Planungsorientierung benutzt. Die gesamten technischen Bestandteile wurden aus dem Bestand des Robotiklabors bezogen.
verwendete Bauteile
Bauteil | Anzahl |
---|---|
Steppermotor (Polulu ) | 2 |
Stepper Motorteiber(Polulu A4988) | 2 |
Rad (d = 9 cm) | 2 |
Stützrad | 1 |
Mikrofon | 3 |
Spannungsregulator (LM-2940) | 1 |
Kondensator (100 μF) | 4 |
Teensy 3.1 (Microcontroller) | 1 |
Akku 8 V | 1 |
Breadboard | 2 |
Zusammenbau
Das Roboter-Grundgerüst besteht aus einer kreisrunden Holzplatte auf deren Unterseite die zwei Steppermotoren, die zwei Räder, das Stützrad und die zwei hölzernen Schiebeleisten befestigt sind. Die Steppermotoren wurden mit Kabelbindern befestigt, das Stützrad und die Leisten mit Schrauben. Steppermotoren sind Elektromotoren, die sich sehr präzise auch um kleine Schritte (steps) bzw. Winkel drehen können, d.h. eine ganze Umdrehung ist in eine modellabhängige Anzahl von steps eingeteilt, durch die man die Räder beliebig genau steuern kann. Durch die zwei seitlichen Räder und das hintere Stützrad ist es möglich, dass findobot sich auf der Stelle drehen kann indem sich beide Räder im oder gegen den Uhrzeigersinn drehen, dadurch ist eine einfache Berechnung des Drehwinkels möglich, wie im nächsten Abschnitt beschrieben wird. Auf der Oberseite der Platte befinden sich die Breadboards inklusive Mikrochips, der Akku und die Mikrofonhalterung mit den 3 Mikros; hier ist alles mit flexiblen Klettklebern befestigt. Die Abstände der Mikrofone wurden so gewählt, dass eine optimale Aufnahme und Analyse der Schallwellen gewährleistet ist.
findoBOT von oben:
findoBOT von unten:
findoBOT von vorne:
Pinbelegungstabelle
Bauteil | Signalfunktion | Pinnummer |
---|---|---|
Stepper Motortreiber links | Step | 23 |
Direction | 22 | |
Stepper Motortreiber rechts | Step | 2 |
Direction | 3 | |
Mikrofon links | Signal Output | 15 |
Mikrofon vorne | Signal Output | 14 |
Mikrofon rechts | Signal Output | 16 |
Signalverarbeitung
Das Prinzip der Phasenverschiebung ist das folgende:
(Bilder Präsentation)
Der Winkel bei einem Versuchsaufbau mit zwei Mikros leitet sich wie folgt her:
Bei der Winkelmessung in der Praxis stellten wir leider erst sehr spät fest, dass der Roboter selbst mit seinen Versuchsaufbauten das Messsignal beeinflusste. Das lässt sich deutlich in den durch ein Oszilloskop dargestellten Daten mit möglichst freier Umgebung (erste Abb.) bzw. mit einem Blatt hinter dem rechten Mikroskop (pink). Der Schall kam hierbei von links und wurde damit vom Blatt reflektiert, d. h. die Phasenverschiebung ist verfälscht, weil der Schall länger braucht, bis er vom Mikro eingefangen wird.
Aus diesem Grund mussten wir die Mikros vorlagern vor den Fibo, um Beeinträchtigungen durch die Aufbauten des Roboters zu minimieren.
Bewegung
Die Codes für die Bewegungsprogrammierung werden mit Arduinosoftware in einer vereinfachten Form von C++ geschrieben. Es wird bei diesem Projekt zwar ein „Teensy“-Mikrocontroller verwendet, jedoch ist die Programmierung der Arduinosoftware damit kompatibel.
Damit der Roboter aus dem durch die Signalverarbeitung erhaltenen Lagewinkel eine Drehung in Richtung Handy vornehmen kann, muss dem Roboter mitgeteilt werden, wieviele steps die Räder machen müssen, um den Roboter um einen bestimmten Winkel auf der Stelle zu drehen. Dazu muss bekannt sein, aus wievielen steps eine Radumdrehung bzw. aus wievielen steps eine Roboterumdrehung besteht.
Präsentation im Wisschenschaftsfenster
Im Rahmen des Wissenschaftsfensters wurden alle fortgeschrittenen Forschungsergebnisse der MINTgrün-Labore präsentiert. Auch der findoBOT wurde vorgestellt. Die PowerPoint-Präsentation als Download: findobot.pptx
Aktueller Stand
Der findoBOT kann eine Audioquelle auf einer Frequenz von 440Hz eindeutig erkennen, sich in Richtung dieser ausrichten und dorthin fahren. Da die Problematik mit den Mikrofonen erst spät gelöst werden konnte, wurde parallel bereits ein erweitertes Programm geschrieben, dass mit Zufallszahlen diesen Prozess simuliert und anschließend zum Ausgangspunkt zurückfahren kann (es könnte so also ein Handy zum einsammeln und zum Besitzer fahren). Da dieses aber noch angepasst werden müsste gibt es im Anhang zwei Programme. Das andere erfüllt den bereits genannten Zweck, findet aber noch nicht zurück und bewegt sich noch sehr unelegant.
Zielerreichung
Das selbst gesetzte Ziel wurde hinreichend erfüllt. Die Hinderniserkennung und -Umfahrung wird vermutlich nicht mehr im Zeitraum fertiggestellt werden können, dafür aber eine Zusammenführung der bisher zwei Programme zu einem.
Probleme
Große Probleme haben die korrekte Auswertung der Mikrofondaten bereitet, sowie die mutmaßlich falschen Zahlen zur Anzahl der Schritte einer vollen Umdrehung der Räder, die daraufhin nochmal selbst ermittelt werden mussten. Weitere gelöste Schwierigkeiten waren eine effiziente Sammlung der vom findoBOT erzeugten Daten, mit welchen man den Roboter letztendlich zu seinem ursprünglichen Stadort zurückschicken konnte, sowie eine clevere Umgehensweise mit der Geschwindigkeit, sodass der findoBOT nicht beim Losfahren stockte, er aber auch nicht die gesamte Zeit über zu langsam fuhr.
Unser kommentierter Quellcode zum Download: fibo_quellcode.zip