Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektews1415:robobase

Einleitung:

Beschreibung des Roboters:


Unsere grundsätzlichen Ansprüche an einen Roboter waren, zum einen die Funktion sich frei in einem Raum bewegen zu können und zum anderen die Interaktion mit einem anderen Roboter. Aus diesen groben Vorstellungen enstand unser Projekt „RoboBase“.
Er ist ausgestattet mit vier Funktionen. RoboBase kann mithilfe von zwei nach vorne gerichteten, optischen Sensoren seine Umwelt warnehmen und auftauchenden Hindernissen ausweichen. Desweiteren ermittelt er durch zwei weiterer nach oben gerichteten, optischen Sensoren einen Tisch und bleibt an diesem stehen. Die dritte noch zu bewältigende Funktion ist der integrierte Fahrstuhl. Dieser bildet die Hauptfunktion unseres Roboters. Er soll das Projekt unser Kommilitonen „WallE“ auf einen Tisch anheben und sich mit diesem verständigen. Damit ist die vierte verbleibende Funktion die Interaktion zwischen den Robotik-Projekten RoboBase und WallE.


Hiermit wollen wir Sie auf das Projekt unser Mitstudierenden „WallE“ aufmerksam machen:
http://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=projektewise2014:walle:start


Umsetzung:

Überlick über das Gesamtsystem:


Beschriftung der Bestandteile des Roboters:



(Hierbei handelt es sich um ein Bild des Projektes mit Beschriftung aller verwendeter Bestandteile.)

Zu bewältigende Aufgaben:


1. Bewegung:

Zu aller erst mussten wir für die Bewegung und somit auch für die Stabilität unseres Roboters sorgen. Hierfür haben wir zwei Steppermotoren + Räder und ein zusätzliches nicht motorisiertes Rad verwendet. Das dritte nicht motoriserte Rad dient der Stabilität des Roboters. Somit entstand eine Drei-Rad-Konstruktion, wie man sie auf dem Bild sehen kann. Auf der unteren Seite des Roboters haben wir zwei Löcher gebohrt. Diese ermöglichen uns die Kabel der Motoren leichter mit dem Arduino zu verbinden. Wie Sie dem obigen Bild entnehmen können, dient uns ein Akku für die Stromversorgung der 12V Motoren. Für die Befestigung der Motoren verwendeten wir übliche Kabelbinder. Je zwei Kabelbinder wurden parallel zueinander über den Stepper angebracht. Eine Richtungsänderung des Roboters wird nicht durch eine eigentliche Lenkung geleistet, sondern durch Drehzahlveränderungen der Motoren direkt herbeigeführt. Bei den Motoren handelt es sich um Steppermotoren, die durch je ein Steuerungsbauteil, den Driver-Carrier angesteuert werden müssen. Verschieden Schrittmodi sind möglich, wir haben uns für Vollschritte entschieden um präzieses navigieren zu ermöglichen. Bei jedem beabsichtigten Vorwärtsschritt sendet der Arduino einen Impuls an den Driver-Carrier der den Motor eine Rotation des Rades um 1,8° durchführen lässt. Bei einer hohen Frequenz der ausgehenden Signale entsteht eine fast kontinuierliche Bewegung, realisiert durch definierte Wartezeiten im Code (ohne delay()!). Über einen seperaten Eingang des Driver-Carriers lässt sich ausserdem die Drehrichtung des Steppers ändern.





2. Wahrnehmung der Umgebung:

Der zweite Schritt war die Wahrnehmung seiner Umwelt. Um dieses zu ermöglichen bauten wir für rechts und für links je einen optischen Infrarotentfernungsmesser für den Bereich zwischen 10-200cm an (unten auf den aufgeführten Bildern zu betrachten). Diese senden einen Infrarotstrahl einer bestimmten Frequenz, der von den meisten Materialien reflektiert wird, mit leichter seitlicher Neigung aus. In Richtung der Neigung befinden sich mehrere Sensoren für eben diese Frequenz in einer Linie angeordnet, sodass ein Objekt, je weiter es entfernt ist von der Strahlungsquelle auf einen weiter äußeren Sensor reflektiert. Die Rückgabe des Bauteils ist jedoch nicht linear.

Orientierung im Raum:
Um das Erkennen von Wänden und anderen großen Objekten zu gewährleisten (der Roboter ist nicht für Räume mit vielen kleinen Objekten auf dem Boden ausgelegt) befinden sich an der Vorderseite des Roboters je aussen zwei Sensoren parallel zueinadner nach vorne ausgerichtet. Um der fehlenden Linearität Rechnung zu tragen sind sie ca. 10cm nach hinten versetzt. Außerdem arbeitet der Code nur mit Grenzwerten. Kommt ein Objekt einem der Sensoren zu nahe weicht der Roboter in die entgegengesetzte Richtung aus, immer mit der gleichen Rotation (Anzahl der Schritte), was zu einer zufälligen Wegfindung führt.



Bei den Infrarot-Sensoren muss man bedenken, dass der angegebene Abstand nicht zu groß sein darf, da er sonst zu ungenau wird. Daher ist es empfehlenswert bei der Verwendung dieser Sensoren einen kleineren Abstand zu wählen, da der gewünschte Effekt sonst nicht auftritt.



3. Erkennen eines Tisches:

Als nächstes haben wir uns um die Problematik der Erkennung eines Tisches gekümmert. Dort gingen wir wie bei der Wahrnehmung der Umgebung vor.Zwei vorne, außen, parallel nach oben angeordnete Sensoren, deren Rückgabe ab einem bestimmten Grenzwert, durch ein Objekt was sich in zu erwartender Tischhöhe vor einem der Sensoren befindet, als Tisch interpretiert wird. Der Roboter versucht sich genau an der Tischkante zu positionieren, indem der Motor, auf der Seite die den Grenzwert noch nicht wiedergibt, vorwärts rotiert bis dies der Fall ist.






4. Konstruktion des Fahrstuhls & Interaktion:

Wir wollen, dass unser Roboter so beweglich wie möglich bleibt, daher soll die gesamte, wirkende Kraft des Fahrstuhls von unten aufgebracht werden. Dafür haben wir uns das Prinzip einer üblichen Hebebühne (oder Scherenhebers) ausgesucht. Da die mechanischen Reibung der Materialien zu hoch ist, haben wir bis zum jetzigen Zeitpunkt noch keine Möglichkeit gehabt, diese Idee umzusetzen. Die Hebebühne soll mittels eines Motors hoch und runter bewegt werden. Dreht sich der Motor in die eine Richtung wird die Konstruktion zusammen geschoben und der Lift hebt sich, dreht er sich in die entgegengesetzte Richtung wird die Konstruktion auseinander gezogen und der Lift senkt sich.

Zusammenhängend mit dem Fahrstuhl ist die Interaktion zwischen den beiden Robotern. Für die Verständigung haben wir uns überlegt, eine Infrarotlampe zu verwenden. Diese würde sich anschalten sobald der Fahrstuhl auf die entsprechende Höhe gebracht wird und würde somit, den anderen Roboter aktivieren, damit er mit seinem Programm beginnen kann.





Verwendete Bauteile & Pinbelegungstabelle:


Anzahl Verwendete Bauteile
1x Arduino
4x Infrarot-Sensoren
2x Stepper-Motoren
2x Driver-Carrier
1x nicht-motorisiertes Rad
1x Batterie/Akku


Pin des Arduinos die Belegung
A3 Infrarot-Sensor (oben links)
A4 Infrarot-Sensor (oben rechts)
A5 Infrarot-Sensor (vorne links)
A6 Infrarot-Sensor (vorne rechts)




Beschriftung der Bestandteile des Arduinos:



(Hierbei handelt es sich um ein Bild des Arduinos mit Beschriftung aller verwendeten Bestandteile.)



Ergebnis:


Der Endstand unseres Projektes sieht wie folgt aus: jegliche Programme und Funktionen wurden überarbeitet und funktionieren nun zu unser Zufriedenheit. „RoboBase“ kann seine Umwelt wahrnehmen und bewegt sich in dieser fehlerfrei. Desweiteren erkennt er einen Tisch und richtet sich vor seinem Stillstand gerade an diesem aus. Bei den verbleibenden Funktionen konnten wir leider keinen Erfolg verbuchen, da wir für die Problematik der starken Reibung und der hohen aufzubringenden Kraft des Fahrstuhls noch keine Lösung gefunden haben. Desweiteren scheint die Suche nach passenden Materialien, für den Bau des Fahrstuhls, einer sprichwörtlichen Sisyphus-Arbeit zu gleichen. Die meisten Teile, die man in üblichen Baumärkten finden kann, sind so ohne weiteres nicht zugebrauchen.
Die Interaktion ist demzufolge auch kein Schritt weiter gekommen. Eine funktionierende Idee scheint gefunden zu sein, jedoch kann dieses erst verifiziert werden, wenn der Fahrstuhl zur Verfügung steht.

Somit werden alle interessierten Leser gerne dazu aufgerufen, die Idee zu überarbeiten, bzw. sie zu vervollständigen!!


Hier finden sie alle Seiten unseres fertigen Programms, sowie verwendete Libraries:
robobase.zip




Vielen Dank für das Durchstöbern unserer Seite!

»Wir hofffen es hat Ihnen gefallen und wir konnten Ihr Interesse an dem Bau eines eigenen oder ggf. den Weiterbau unseres Roboters wecken!«
:-D




© Thiemo Kluge und Jannek Kielczynski

projektews1415/robobase.txt · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)