Dies ist eine alte Version des Dokuments!
Gruppenmitglieder: Andre Schäffer, Varian Schröder, Jan Broermann, Tray Watson
Der Gießroboter ist ein Roboter, der automatisch auf eine Pflanze zufährt und sie dann gießt. Außerdem ist man in der Lage, die Wassermenge der Pumpe, durch Knopfdruck zu regeln.
Wir bauen einen mobilen Roboter, der in der Lage ist, anhand bestimmter Daten, mehrere verschiedene Pflanzen in einem Raum zu bewässern. Dabei bewegt er sich autonom (ohne aktive Steuerung durch den Menschen) zu den einzelnen Pflanzen, wenn Wasserbedarf besteht. Der Roboter soll eine ihm vorgegebene Wassermenge für jede Pflanze aufbringen, die durch eine Steuereinheit initialisiert wird. Die einzige Aufgabe des Menschen wird sein, den Tank einmalig mit Wasser zu füllen und dem Roboter mitzuteilen, welche Wassermenge zu jeder Pflanze gehört, da der Roboter alle anderen Aufgaben vollautomatisch übernimmt. Der Roboter soll sich eigenständig im Raum bewege können. Dazu benötigt er (a) ein Antriebssystem und (b) eine Sensorik, die ihm einen Überblick über seine nähere Umgebung gibt um somit die Pflanze anzusteuern. Neben der mechanischen Umsetzung müssen Programmroutinen entwickelt werden, die die Sensordaten verarbeiten und die Motoren dementsprechend ansteuern. Letztendlich muss der Roboter so robust konstruiert sein, dass er potentielle Zusammenstöße mit der Umgebung unbeschadet übersteht.
1.) Zuerst sollte in einigen wenigen Sätzen ein grober Überblick über die tatsächlich gewählte Lösung gegeben werden, der hilft, die folgenden Details einzuordnen.
2.) Danach legt eine Beschreibung der Hardware und ihrer Funktionen die Grundlage für die Beschreibung der verwendeten Algorithmen.
3.) Und als Abschluss (und am ausführlichsten) folgt eine Beschreibung des zur Lösung der Problemstellung verwendeten Verfahrens/der Software und Algorithmen.
Der Roboter muss sich zum Erfüllen seiner Aufgabe flexibel im Raum bewegen können, ohne dabei zwischen Hindernissen stecken zu bleiben. Darüber hinaus muss er es schaffen, einen bis zu 5 kg schweren Wassertank zu befördern und genug Platz für einen Aufbau bereitstellen, der als Gießarm dienen soll, ohne durch seine Trägheit das Gleichgewicht zu verlieren. Wir setzten auf eine runde Konstruktion, die nach außen hin abgeschlossen ist (keine über den Rand ragenden Bauteile, innerhalb der Grundfläche platzierte Räder), um ein Hängenbleiben an Hindernissen zu verhindern. Das System aus 3 Rädern, von denen zwei angetrieben werden, ist ausreichend, um genügend Stabilität zu liefern und den Roboter in alle Himmelsrichtungen fahren zu lassen. Der Tank befindet sich auf der tiefsten Ebene, damit sich das schwerste Gewicht möglichst tief am Boden befindet (Stabilität). Eine darüber liegende Ebene sorgt für einen guten Zugang zur Technik und genug Platz für den Gießarm. Somit ist der Roboter sehr beweglich, stabil und unempfindlich gegenüber Kanten.
Die größten Probleme bei der Programmierung und Planung des Bewegungsablaufes war die Programmierung der präzisen Drehung um berechnete Winkel und die Optimierung des Infrarot-Empfängers auf zuverlässige Messungen. Ersteres stellte einen vor allem vor mathematische Probleme, da die gemessenen Werte der Elektromotoren mehrmals umgerechnet werden müssen und sich die zurückgelegte Strecke nur über eine vereinfachte Integralbildung aus Geschwindigkeitsmessungen berechnen lässt. Zweiteres musste an verschiedenen Stellen optimiert werden. Zuerst mussten wir den Empfangskegel des Empfängers durch eine schwarze Aluröhre einschränken und dann die Signalstärke durch Hinzunahme eines zweiten Senders erhöhen. Letztendlich wäre eine feste Montierung des Infrarot Empfängers einfacher gewesen, da wir uns die Winkelmessung, die Fahrt ins Drehzentrum und die Programmierung der kontrollierten Drehung hätten sparen können. Der Roboter würde sich einfach nur um sich selbst drehen, bis er ein Signal gefunden hätte und dann geradeaus fahren. Allerdings bietet die jetzige Methode Spielraum für zukünftige Optimierungen (z.B. einer Fahrtrichtungskorrektur während der Fahrt, Ausweichen vor Hindernissen usw.).
Zur Orientierung im Raum benutzen wir einen Infrarotsender, der an einer Holzvorrichtung montiert ist. Als Alternativideen zum Infrarotsender hatten wir uns überlegt mit Radiowellen oder Wärmebildkameras zu arbeiten. Der Infrarotsender erschien uns aber als kostengünstigste und vom Zeitaufwand am besten zu bewältigende Lösung.
Die Sendeeinheit besteht aus 2
Infrarotsendern, die hintereinander
geschaltet sind, 2 parallel geschalteten
Widerständen und einem MOSFET
Transistor.
Wir hatten Probleme mit der
Reichweite des Senders, daher haben wir
unter anderem ein paar Versuche
vorgenommen um die Reichweite des
Infrarotsignales zu maximieren. Dazu
haben wir zunächst das Programm des
Senders modifiziert. Wir haben das
Infrarotsignal in hochfrequenten Intervallen
blinken lassen, umso mit dem Empfänger
zu harmonisieren. Damit bei die
Auswertung des Infrarotsignales trotzdem
konstant bleibt haben wir einen
Kondensator eingebaut der den Stromfluss ausgeglichen hat. Außerdem
ist am Infrarotsender eine Sammellinse montiert, die somit Strahlen
gebündelt hat und nur in eine Richtung strahlte. Diese haben wir
abgeschliffen, um einen flächendeckenden Strahl herzustellen. Dieses
Vornehmen hatte allerdings die Reichweite wieder etwas minimiert.
Der Infrarotempfänger ist auf einem Servo platziert, der Wiederrum vorne an dem Roboter angebracht ist.
Er besteht aus einem Empfänger, einem Kondensator, einer Hülse und einem Widerstand. Der Empfänger ist an einem Servo angebracht, da durch seine rotierende Bewegung die Richtung des nfrarotsignales leichter auszumachen ist, ohne den Roboter bewegen zu müssen. Um
den Breitgefächerten Aufnahmebereich des Empfängers inzuschränken und zu fokussieren haben wir eine Hülse an dem
Empfänger befestigt, die Signale von der Seite abschirmt, da der Roboter sonst nicht weiß wo genau das Signal herkommt.
Der Roboter erkennt eine Pflanze in dem er
dem Infrarotsignal, die von ihr ausgeht, sucht
und auf sie zufährt.
Wir hatten eigentlich vor,
einen weiteren Infrarotsender mit geringer
Reichweite an der Pflanze anzubringen aber
durch Zeitmangel waren wir nicht mehr in der
Lage diese Aufgabe zu bewältigen. Daher
haben wir uns entschieden einen
Abstandsensor am Roboter anzubringen, weil
wir dadurch wenigstens die Möglichkeit haben
die Pflanze zu identifizieren. Der
Abstandsensor sendet nämlich ein
Infrarotsignal aus welches er, wenn das Signal
auf einer Oberfläche reflektiert wird, wieder
empfängt und den Abstand auswertet, Wenn der Abstand erreicht ist( ca.
15-20cm), hält der Roboter an und beginnt den Bewässerungsvorgang.
Aufgrund der Fehlenden Zeit mussten wir am Ende des Projektes ein paar Abstriche machen.Zum einen mussten wir von einem leeren Raum ausgehen. Hindernissen auszuweichen wäre unser nächstes Teilprojekt gewesen, da wir es vom Zeitaufwand her nicht geschafft hätten. Zu dem hatten wir Überlegungen angestellt einen höhenverstellbaren Gießarm zu bauen, um somit den Gießhahn der Topfhöhe anzupassen. Außerdem wollten wir einen weiteren Infrarotsender mit einer anderen Frequenz bauen um somit mehrere Pflanzen nacheinander anzusteuern und zu bewässern. Des weiteren war eine App im Gespräch, über welche man den Gießroboter sagen könnte welcher Pflanze er wie viel Wasser zugeben hat. Wir hatten auch überlegt ein Feuchtigkeitssensor in den Pflanzen einzubauen, der den Roboter benachrichtigt wenn die Pflanze Wasserbedarf hat.
Zurzeit kann unser Roboter sich nur anhand des Infrarotsignals und des Abstandssensors orientieren. Es fährt auf das Signal zu und wenn ihm ein Objekt im Weg steht bzw. die Topfpflanze wird sie durch den Abstandssensor erkannt und begossen. Das Problem hierbei ist das wir noch nicht in der Lage sind die Pflanze als eigentliche Pflanze zu erkennen und zu gießen. Daher wäre der nächste Schritt gewesen, eine Möglichkeit zu finden die Pflanze eindeutig zu erkennen und ihn, nachdem er die erste Pflanze begossen, auf andere Pflanzen hinfahren zu lassen.
Art | Pin | Verwendungszweck |
Analog | 0 | Abstandssensor |
Analog | 1 | Bestätigen (Wassermenge) |
Analog | 2 | Addieren (Wassermenge) |
Analog | 3 | Subtrahieren (Wassermenge) |
Analog | 4 | Wasserpumpe |
Analog | 5 | Standbyknopf |
Analog | 6 | Piezo |
Analog | 7 | Infrarotempfänger |
Digital | 1 | |
Digital | 2 | Vorwaertsspin linkes Rad |
Digital | 3 | Servo |
Digital | 4 | Rueckwaertsspin linkes Rad |
Digital | 5 | PWM-Pin |
Digital | 6 | |
Digital | 7 | Rueckwaertsspin rechtes Rad |
Digital | 8 | Vorwaertsspin rechtes Rad |
Digital | 9 | Hall-Sensor 2 linkes Rad |
Digital | 10 | Hall-Sensor 1 linkes Rad |
Digital | 11 | Hall-Sensor 1 rechtes Rad |
Digital | 12 | Hall-Sensor 2 rechtes Rad |
Digital | 13 | Wassermengen Steuereinheit |