Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektesose18:orupublic:start

Dokumentation UltraSonic

Team

Till Favier
Nico Leins
Justus Coulin

Einleitung

Zunächst war die Idee des Teams, einen fliegenden Roboter zu bauen, der zu einem bestimmten Sender fliegen soll und dort eventuell ein Objekt aufnimmt und zurückbringt. Nach gewisser Recherche, rumprobieren mit Dronen aus vergangenen Semestern und selbst gekauften Helikoptern,kamen wir jedoch recht schnell zu dem Schluss, dass ein fliegender Roboter mit dem gegebenen Zeitrahmen ein etwas ambitioniertes Vorhaben war.

Dennoch fanden wir die Idee, zu einem bestimmten Sender zu fahren, dabei eventuell bestimmte Hindernisse zu umfahren und mit einem Objekt zu interagieren immer noch interessant, nur das wir nun „bodenständig“ bleiben wollten, da wir dies für sehr viel realistischer hielten. Bei der Art des Senders haben wir uns zunächst für Ton entschieden, da es recht natürlich ist und auch für den Menschen recht intuitiv. Der Vergleich mit den Ohren ist schnell gemacht und in unserem Fall sehr zutreffend, da wir ebenfalls „Ohren“ verwenden können. Hierbei handelt es sich um drei Mikrophone,die seitlich und vorne an dem Roboter angebaut sind. Je nachdem von wo der Schall kommt soll sich der Roboter in die entsprechende Richtung drehen und bewegen. Dabei wird sich „vorrangetastet“ und immer wieder neu gemessen und verglichen, welches Mikrophon die lautesten Signale empfängt. Hindernissen ausweichen sollte dabei automatisch geschehen, da Schallwellen sich natürlicherweise um Hindernisse herum ausbreiten. Da wir ungern dauerhaft einen hörbaren Ton abspielen wollen, haben wir uns für Ultraschall entschieden. Also Töne außerhalb der für Menschen hörbaren Frequenz ab 20kHz Die Bewegung des Roboters sollte dabei eine fahrende sein, da es recht leicht umsetzbar ist und wir dann nicht allzu viel Zeit aufbringen mussten, sondern uns um wichtigere Dinge kümmern konnten.

Methoden/Umsetzung

Überblick über das Gesamtsystem

Baugruppen des Roboters
Abbildung 1: Der fertige UltraSonic Roboter

Hier ist der Roboter in seiner Gesamtheit zu sehen, unterteilt wird der Roboter intern in 3 Baugruppen. Erstens die Fortbewegung, zweitens die Tonerkennung und letzendlich die Software. Extern gibt es noch den Sender, der in unserem Fall ein Ultraschalllautsprecher ist. Es gibt also 4 essentielle Komponenten, auf die gleich näher eingdrinneangen wird.

Aufgaben des Roboters

Der Roboter soll zunächst zu einem Sender fahren und dabei potentielle Hindernisse umgehen. Dabei muss er das Gesendete aufnehmen, verarbeiten und abhängig davon eine Entscheidung treffen wohin er fahren muss. Dabei haben wir aus Zeitgründen zunächst das Aufnehmen und Zurückbringen eines Objekts bzw. des Senders ausgeklammert.

Fortbewegung

Zunächst haben wir während der Projektplanung überlegt: „Was benötigen wir und wie viel Zeit müssen wir dafür aufwenden?“. Uns war recht schnell klar, dass wir einen fahrenden Roboter, drei Mikrophone und einen Ultraschall Lautsprecher brauchen. Es dauerte nicht sehr lange das Skelett des Roboters zusammenzubauen. Indem wir Vorne ein Stützrad angebracht und an den Seiten zwei steppermotorbetriebene Räder eingebaut haben. Das Grundgerüst besteht dabei aus Holz. Der Vorteil von Steppermotoren ist, dass mit schon 3 Rädern Drehungen sehr leicht machbar sind. Dies lässt sich realisieren indem man ein Rad nach vorne und das andere entgegengesetzt rotiert.

Abbildung 2: UltraSonic Fahrgestellt

Zu sehen sind hier die beiden angeschlossenen Stepper Motoren und die Vorrichtung auf denen die Mikrophone montiert werden sollen. Dadurch hatten wir in sehr kurzer Zeit einen fahrenden Roboter und konnten unsere Aufmerksamkeit der Software und der Tonerkennung widmen.

Abbildung 3: UltraSonic Unterseiter
Tonerkennung

Auf dem Folgenden Bild ist eines der Mikrophone zu sehen, welches die Ultraschallfrequenz aufnimmt und an den Arduino sendet. Wir haben für die Mikrophone Ultraschallsensoren auseinandergebaut, die ein Ultraschallsignal senden und feststellen ob ein Signal zurückgeworfen wird indem es von einem Gegenstand abprallt. Das Ganze ist einer Fledermaus sehr ähnlich. Das tolle an den ausgebauten Mikrophonen ist, dass diese nur Ultraschallfrequenzen aufnehmen die oberhalb von 40kHz liegen und wir uns somit nicht mehr mit der Filterung von niedrigeren Frequenezen rumschlagen mussten. Da dies vorher eine große Problemstellung war. Die ausgebauten Mikrophone haben wir an eine Verstärkerschaltung eines anderen Mikrophons gelötet.

Abbildung 4: Eines der drei Mikrophone
Software

Die Aufgabe der Software ist es die einzelnen Bestandteile zu verbinden und dabei möglichst effizient zu arbeiten, um einen flüssigen Ablauf zu ermöglichen. Einfach erklärt, werden fast gleichzeitig, die Messungen der Mikrophone verarbeitet und verglichen und je nachdem von wo der Ton am lautesten kommt, führen die Steppermotoren entsprechende Bewegungen aus. Anbei der voll auskommentierte Code: ultrasonic_code.zip

Lautsprecher/Sender
Abbildung 5: Ultraschalllautsprecher

Den Piezo Ultraschalllautsprecher haben wir Online bestellt und an den Arduino angeschlossen. Dabei haben wir eine library namens toneAC benutzt, die eine Alternative zu tone() bildet. Sie ist dazu in der Lage Ultraschalltöne auszugeben und die Lautstärke anzupassen. Außerdem kann sie sehr viel lauter sein, als die tone() function, was für unseren Roboter sehr wichtig ist, da es das eigentliche Ziel ist auf Lange Distanzen zum Ton zu fahren.

Technische Daten

Komponenten Anzahl
Arduino 1
Selbst gebautes Mikrophon 3
Stepper Motor 2
Microcontroller(Stepper) 2
Räder 2
Akku(+wächter) 1
Schaltbrett 1
Lautsprecher 1
Selbst gebautes Mikrophon
Mikrophon
Verstärker Schaltung
Abbildung 6: Schaltung des UltraSonic
Abbildung 7: Schaltung des Ultraschalllautsrprechers

Ergebnis

Der Roboter kann Ultraschall-Signale wahrnehmen und diese Orten. Dabei werden jegliche Umweltsignale, außerhalb der Frequenz des Senders, nicht verarbeitet. Somit kann der Roboter auch in lauten Umgebungen problemlos operieren.

Allerdings kann die Quelle momentan nicht wirklich weit weg sein, da der Sender nicht laut genug ist. Dafür müsste noch der Lautsprecher verstärkt werden. Dies haben wir unter Anderem bereits mit MOSFETs ausprobiert, sind jedoch noch nicht zu einem brauchbaren Ergebnis gekommen.

Außerdem wird er momentan wahrscheinlich nicht immer eine Quelle hinter sich finden, da wir bisher nur Mikrophone vorne, rechts und links angebaut haben. Generell bräuchte der Roboter um wirklich effizient zu sein sehr viel mehr Mikrophone, da die selbsgebauten Ultraschallmikrophone stark gerichtet sind. Das ist zwar sehr gut für die Ortung, erzeugt jedoch viele tote Winkel. Dafür müsste die Software dann auch noch auf die vielen Mikrophone optimiert werden, da die momentane Software probiert das Meiste aus den drei vorhandenen Mikrophonen zu holen. Es wäre bei sehr vielen Mikrophonen ausreichend den Roboter einfach zu dem Mikrophon zu drehen, welches den höchsten Wert misst und nicht wie in unserer Software jedes Mikrophon mit jedem zu vergleichen. Dieses Aufrüsten mit mehr Mikrophonen wäre zwar sehr aufwändig und repetetiv(jeder Lautsprecher muss gebaut werden), würde aber wahrscheinlich sehr gute Ergebnisse erzeugen. Die Reichweite würde sich dadurch auch erhöhen, da im Optimalfall immer ein Lautsprecher genau auf das Soundmaximum zeigt und somit auch kleinere Signale einfacher gemessen werden können.

Zusätzlich hatten wir auch ursprünglich vor den Sender aufzunehmen und zurück zum Ausgangspunkt zu bringen. Das konnten wir aus Zeitgründen allerdings nicht mehr verwirklichen. Dafür müsste man sich noch überlegen, wie man den Weg speichert um ihn korrekt zurück zu fahren, als auch wie man den Sender aufnimmt.

Hindernissumfahrung war auch etwas, dass wir gerne umsetzten wollten und unser Plan war dies durch die natürlichen Schalleigenschaften zu tun (Schall breitet sich um Hindernisse herum aus). Das hat in unseren Tests allerdings nicht immer zuverlässig funktioniert, daher könnte man noch zusätzliche Infrarotsensoren zur erweiterten Hindernissumgehung einbauen.

projektesose18/orupublic/start.txt · Zuletzt geändert: 2018/11/09 11:02 von d.golovko