Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise19:cat3000opublic:start

Projektdokumentation von CAT-3000

von Tanja, Robert, Simeon und Sinan

Abbildung 1: Vorderseite

Einleitung

Abbildung 2: Kleines YouTube-Video (https://www.youtube.com/watch?v=R4anpxoHkPI)

Unsere Idee für den Roboter kommt von diesem Video. Wir wollten ein Roboter bauen, der genau wie die Katze im Video Gegenstände vom Tisch wirft. Daher kommt auch der Name CAT-3000. Da das Projekt von einem Tier inspiriert wurde, sind wir technisch gesehen Bioniker*innen. Natürlich sollte unsere Roboter nicht nur Gegenstände vom Tisch schieben, sie sollte sich auch auf dem Tisch bewegen und Gegenstände dabei finden. Mit einem Infrarotsensor an der Vorderseite, sollte sie gezielt Gegenstände finden und anfahren. Daraufhin werden diese Gegenstände heruntergeworfen. Dabei war es uns wichtig, dass sie selber nicht vom Tisch fällt. Dies lies sich lösen, indem wir zwei Infrarotsensoren vorne anbringen und nach unten schauen lassen, die die Distanz zum Boden messen. Zeigen diese Sensoren eine größere Distanz als üblich an, wissen wir, dass sie sich an der Kante des Tisches befindet. Ein weiteres Hindernis waren zu schwere Gegenstände. Sie kann selbstverständlich nicht alle Gegenstände bewegen und könnte bei schweren Objekten schnell stecken bleiben. Als Lösung benutzen wir dafür Teile einer Maus, die erkennen kann, ob man sich bewegt oder nur auf einer Stelle fährt. Wir haben also ein Zusammenspiel von Katze und Maus.

Methoden und Umsetzung

Baugruppen

Karosserie

Abbildung 3: Roboter von oben

Unsere erste Baugruppe war natürlich die Karosserie selber. Für unser Grundgerüst haben wir uns für ein Rechteck entschieden (geplant war ein Achteck). Zuerst bauten wir eine Basis mit Platz für die Steckplatine des Arduinos, die zwei Stepper-Motoren und Säulen, um das Dach und die Vorderseite zu befestigen. An die Basis haben wir die Motoren und die Steckplatine mit Kabelbindern befestigt und Säulen als Verbindungspunkte für die Vorderseite befestigt. Daraufhin haben wir beschlossen ein Dach zu bauen und weitere Säulen implementiert, um das Dach zu halten. Das Dach brauchten wir, um genug Platz für den Akku zu haben. Den restlichen Platz haben wir dann mit LED-Lampen gefüllt, die genau anzeigen bei welchem Teil der Codes sich der Roboter zurzeit befindet. Das Wissen über die Steppermotoren haben wir uns während der Projektarbeit zusammengesammelt. Bei der Benutzung der Motoren gab es keine Probleme. Während des Projekts mussten wir leider teilweise die Kabelbinder verändern, um weiter zu arbeiten.

Vorderseite

Abbildung 1

Nachdem wir unser Grundgerüst fertig hatten, bauten wir eine Vorderseite, um Gegenstände zu schieben. Wir haben dabei eine Form gewählt, bei der wir die Gegenstände nicht auf dem Weg verlieren. Befestigt ist die Vorderseite, wie bereits erwähnt, an den Säulen des Daches. Außerdem befinden sich an der Vorderseite unsere drei Infrarotsensoren. Zwei schauen nach unten, um den Abstand zum Boden zu messen, damit wir Tischkanten erkennen können und nicht runterfallen. Der dritte Sensor wird benutzt, um Gegenstände zu sehen. Falls das Objekt runterfällt wird es nicht mehr gesehen und der Roboter sucht sich ein neuen Gegenstand. Die Infrarotsensoren waren ein großes Problem für uns. Da die Sensoren nur in einer Reichweite von 10-150 cm funktionieren, geben sie keine richtigen Werte für nahe Objekte aus und sind deshalb sehr ungenau. Abbildung 4a zeigt ein gutes Diagram wie die eigentliche Distanz im Verhältnis mit dem ausgegebenen Wert steht. Ein weiteres Problem war, dass der Sensor nur in bestimmten Intervallen misst und zwischen diesen Intervallen andere Werte ausgibt. Diese Werte sind zufällig und stimmen nicht mit der Distanz überein. Diese Probleme konnten wir mithilfe einer Infrarot Library lösen, die sich genau diese Probleme angeht. Abbildung 4b zeigt die Messungsintervalle vom Infrarotsensor.

Abbildung 4a: Da der Graph erst bei ca. 10 cm beginnt, können wir erkennen, dass davor keine richtigen Werte ausgegeben werden. (Quelle: https://www.sharpsde.com/fileadmin/products/Optoelectronics/Sensors/Specs/GP2Y0A60SZLF_TI_OP13005EN.pdf)

Abbildung 4b: Hier erkennen wir nicht nur ein delay zwischen Messungen, sondern auch eine Sektion „Unstable Output“, während dieses Zeit werden zufällige Zahlen ausgegeben, die wir rausgefiltert haben (mithilfe von einer Library). (Quelle: https://www.sharpsde.com/fileadmin/products/Optoelectronics/Sensors/Specs/GP2Y0A60SZLF_TI_OP13005EN.pdf)

Arduinos/Maus

Abbildung 5: Verkabelung während der Entwicklung

Unsere dritte Baugruppe besteht aus der Programmierung und endgültigen Verkabelung von CAT-3000. Viele unserer Kabel hatten wir bereits in den ersten zwei Phasen, jedoch haben wir in diesem Schritt unsere Kabel besser organisiert und endgültig an die Arduinos angeschlossen. Mithilfe der Maus erkennt unser zweiter Arduino ob es sich bewegt. Die Maus weiß natürlich, ob es eine Bewegung in der X oder Y Koordinate gibt (DeltaX/DeltaY). Falls beide dieser Deltas über mehrere Sekunden 0 ist, weiß der Arduino, dass er sich nicht mehr bewegt und versucht dann ein anderes Objekt zu finden. Der zweite Arduino (für die Maus) schickt dafür ein Signal an den ersten Arduino (mit Sensoren und Motoren). Da die kommunikation mit der Maus ziemlich zeitaufwändig ist, haben wir dies auf einen zweiten Arduino ausgelagert.

Abbildung 6: Endgültige Verkabelung

Letztendlich haben wir es geschafft, trotz des Zeitaufwandes dank ein wenig Multitaskting alles auf einem Arduino laufen zu lassen. Dies ermöglichte es uns alle Elektronik auf ein kompaktes Board zu löten, an das man mit Hilfe von Steckverbindungen alles andere anschließen kann.

Technische Daten

Bauteile Anzahl
Rad (d= 7,5 cm) 2
Stepper Motor 2
IR Sensor (GP2Y0A60SZLF) 3
Arduino Nano 1
Lochplatiene (20×20) mit Steckverbindungen 1
Stepper Treiber 2
Kondensator (100 µF) 2
Optische Maus Sensor 1
Kabel (mehradrig) mit Steckverbindungen 8
Kabelbinder (geschätzt) 10
Holzplatten 5
Schrauben und co. (geschätzt) 50
LED-Leiste 1
An/Aus Schalter 1

Pins

Abildung 7: Schematische Darstellung der Pinverbindungen; Stromversorgung zur Übersichtlichkeit nur angedeutet

Ergebnis und Diskussion

Die meisten Probleme hatten wir bei unseren Infrarotsensoren, da sie uns etwas verwirrt haben. Wir waren uns oftmals nicht sicher, ob diese Sensoren funktioniert haben, da sie falsche Werte ausgaben. Ein großen Punkt den wir im ersten Plan unbedingt haben wollten war Kartografieren des Tisches, damit der Roboter sind große Objekte (die er nicht verschieben kann) merkt und später dann Umfährt. Dafür bräuchten wir aber ein Raspberry Pi, den wir leider nicht ganz zum laufen gebracht haben, deshalb sind wir bei den Arduinos geblieben und haben die Lösung mit der Maus benutzt. Die Idee mit dem Raspberry Pi ist aber nicht ganz unter gegangen und kann sich später immer noch eine mögliche Erweiterung sein. Mit der Kartografierung könnten wir auch unseren Roboter immer wieder zu gleichen Stelle fahren lassen (z.B. vor einen Mülleimer). Dadurch wirft der Roboter die Objekte in den Mülleimer und könnte damit den Tisch aufräumen. Dies wär sogar eine sinnvolle Tat für unseren Roboter (Anstatt nur Objekte runterzuwerfen. Insgesamt lief unsere Projekt Arbeit jedoch sehr gut, da jede*r unterschiedliche Stärken/Schwächen hat und dadurch jede*r seine/ihre Stärken am Roboter freien lauf lassen konnte. Dadurch wurden wir in der Zeit fertig mit CAT-3000

Rohdaten

code.zip

code.zip/                                         
└── robot/                                        
    ├── FastLED.zip/          LED-Strip Libary    
    ├── SharpDistSensor.zip/  IR-Sensor Libary    
    ├── robot.ino             Main Arduino File   
    ├── mouse.h               Header for mouse.cpp
    └── mouse.cpp             Mouse Class File    
projektewise19/cat3000opublic/start.txt · Zuletzt geändert: 2020/04/07 14:38 von d.golovko