Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise18:roboshippublic:start

Projektdokumentation Robo Jordan

Themenbeschreibung/ Einleitung

Der Roboter Robo Jordan hat seinen Namen von der Basketball Legende Michael Jordan und soll nach seinem Vorbild Körbe mit einem Tischtennisball werfen. Das Feld besteht aus nur einem Korb mit einer gelben Halbkreislinie darum, von welcher aus der Roboter wirft. Der Boden ist dunkel, um ein möglichst großen Kontrast zur Linie zu schaffen.

Im Westentlichen besteht der Roboter aus drei Teilen: den zwei Steppermotoren, die den Roboter fahren lassen, zwei Helligkeitssensoren an der Unterseite des Roboters, die die Linie erkennen und einem Katapult, welches ,nachdem ein Hubmagnet ausfährt, den Ball in den Korb wirft. Der grobe Ablauf bis zu einem Wurf beginnt mit dem Platzieren des Balls auf dem Katapult sowie dem Einspannen des Hubmagneten im Katapult, sodass es „geladen“ ist. Der erste Befehl des Roboters ist es geradeaus zu fahren, bis er eine Linie auf dem linken oder rechten Helligkeitssensor erkennt. Daraufhin fährt er mit dem jeweils anderen Rad, sodass auch der Helligkeitssensor auf der anderen Seite eine Linie erkennt. Nun ist der Roboter ausgerichtet, der Hubmagnet wird aktiviert, das Gewicht fliegt nach unten und der Ball wird abgeworfen.

Baugruppen und Ablaufstrategie

Überblick der Baugruppen:

  • Fahrwerk

Bewegung im Raum durch zwei Steppermotoren und einem Stützrad

  • Linienerkennung

ein Phototransistor mit vier LED`s erkennt den Unterschied des reflektierten Lichts vom Untergrund

  • Wurfkatapult

Ein Wurfarm mit einem Gewicht an einem Ende schleudert den Ball in den Korb

Ablaufstrategie
Abbildung 1: Flussdiagramm der Ablaufstrategie des Roboters

Der Roboter beginnt immer damit, nach vorne zu fahren. Mit den beiden Steppern bewegt sich der Roboter stets ein kleines Stück weiter vorwärts, um dann konstant mit beiden Phototransistoren zu überprüfen, ob sie eine Linie detektieren. Falls einer der Sensoren auf einer Seite eine Linie erkennt hält der Roboter sofort an. Anschließend wird überprüft ob beide Sensoren sich auf der Linie befinden. Ist dies nicht der Fall fährt der Roboter mit dem Steppper auf der Seiten, wo keine Linie erkannt wurde langsam weiter nach vorne, sodass der Roboter rotiert. Sobald beide Sensoren sich auf der Linie befinden, womit sichergestellt wird, dass der Roboter orthogonal zur Linie steht, hält er erneut an und wartet eine Sekunde. Daraufhin wird der mechanische Wurfmechanismus ausgelöst, was den Hubmagnet ausfahren lässt und der Katapult den Ball in den Korb schleudert. Damit wird das Programm beendet.

Roboteraufbau
Abbildung 2: Der Roboteraufbau
Feldaufbau
Abbildung 3: Der Feldaufbau
Der Wurf
Abbildung 4: Video eines Korbwurfes

Detailbeschreibung der einzelnen Systembestandteile

Fahrwerk

Die Fähigkeit des Roboters zu fahren, hatte von Anfang an höchste Priorität. Um eine genaue Ausrichtung des Roboters auf der Linie zu gewährleisten, haben wir uns für zwei Steppermotoren mit einem Stützrad in der vorderen Mitte entschieden. Steppermotoren haben die Fähigkeit eine genaue Anzahl an Schritten zu machen und können über die Anzahl der durchgeführten Schritte ihre Geschwindigkeit kontrollieren. So kann der Roboter, nachdem auf einem der Phototransistoren die Linie erkannt wurde, sich schrittweise sehr genau mit dem zweiten Rad der Linie nähern und sich somit ausrichten.

Linienerkennung

Für die Erkennung der Linie haben wir einen eigenen Sensor gebaut, der auf Grund der Stärke der Reflexion des Lichts eine Linie erkennen kann. Wir haben uns dafür entschieden den Sensor selber zu bauen, da der Farbsensor auf die Entfernung von einem Centimeter schlechte Werte ausgegeben hat. Der Aufbau des Sensors ist relativ simpel. Auf einem quadratischen Stück Holz sind in den Ecken jeweils eine LED befestigt. In der Mitte befindet sich ein Phototransistor. Der physikalische Hintergrund dieses Aufbaus ist die unterschiedliche Reflexionsstärke von verschiedenen Farben. Weiß zum Beispiel reflektiert am meisten Lich, wobei dunkel blau nur sehr wenig Licht reflektiert und hauptsächlich Licht absorbiert. Somit fällt die Lichtstärke, die der Phototransistor misst, plötzlich, wenn sich dieser über der Linie befindet, da nun weniger Licht der LED's vom Boden reflektiert wird. An der Seite des Sensors haben wir zusätzlich Pappe angebracht, um flach einfallendes Licht aus der Umgebung zu minimieren und somit die Messwerte so stark wie möglich von Umweltbedingungen unabhängig zu machen. Ein Nachteil dieses Konzepts ist es, dass man bei der Änderung des Raums und somit des Bodens die Werte für die Linie verändern muss, da der Roboter den Unterschied der Lichtstärke zwischen Boden und Linie vergleicht.

Abbildung 5: Aufbau des Helligkeitssensors
Wurfkatapult

Im finalen Design des Wurfapparats haben wir uns für ein Katapult entschieden. Die Vorteile eines Katapults ist es, soweit die Konstruktion stabil ist, dass der Wurf wenig beeinflussbar ist und somit der Wurf meistens gleich aussieht und der Ball auf dem selben Punkt landet. Ein Katapult hat diese Eigenschaften, da das angebrachte Gewicht immer mit der selben Kraft, der Gravitation, zum Boden gezogen wird und somit die Abwurfgeschwindigkeit des Balls immer gleich ist. Um immer den gleichen Abwurfpunkt zu erhalten haben wir einen Stopper eingebaut, der so platziert ist, dass der Ball in einem Winkel von ca. 45° abgeworfen wird und so eine perfekte Flugbahn beschreibt. Das Katapult muss vor jedem Wurf zuerst „geladen“ werden. Dazu legt man den Ball in die Schale und führt die Öse zum Hubmagneten und hängt diesen dort ein. Das Gewicht wurde damit angehoben und potentielle Energie wurde aufgebaut. Wird nun der Hubmagnet ausgelöst ist der Arm des Katapults nicht mehr befestigt, das Gewicht saust zu Boden, wird am Stopper abgestoppt und der Ball wir durch den plötzlichen Stopp des Gewichts abgeworfen.

Rückschritte

Fahrwerk

Das Ansteuern der Steppermotoren mit Hilfe von Treibern war schnell herausgefunden, dennoch hatten wir einige Komplikationen, da wir den Roboter ständig verändert haben und somit mehr Gewicht auf den Rädern lag. Für mehrere Wochen haben wir die Anzahl der Schritte verändert, sowie die Schraube auf dem Treiber justiert, um die perfekte Kraftübertragung zu erhalten, da andernfalls die Räder nicht in der Lage waren sich zu drehen. Da alle Bemühungen nicht zu einem zufriedenstellenden Ergebnis geführt haben, haben wir ein Getriebemotor eingebaut. Ein Getriebemotor hat deutlich mehr Kraft als ein Steppermotor, dennoch erlaubt unser Aufbau ein Rad nur hinten mittig. Das führte dazu, dass der Roboter zwar geradeaus fahren konnte, die Steppermotoren aber zu schwach waren, um den Roboter eine Kurve fahren zulassen. In einem finalen Versuch unseren Roboter sicher fahren zulassen, haben wir auf einen Akku mit 14,8V umgestellt und mussten dafür auch die Treiber zu high-voltage Treibern wechseln. Den Schaltkreis mit 14,8V haben wir auf einem zweiten Steckbrett angebracht, da bei ersten Tests ein Kurzschluss einige Kabel angebrannt hatte. Die erhöhte Kraft war nun in der Lage den schweren Roboter zu bewegen.

Abbildung 6: Roboter mit Getriebemotor
Wurfmechanismus

Unser erster Entwurf des Wurfapparats hat uns viele Probleme bereitet und viel Zeit gekostet. Die Idee war es den Ball mit Luftdruck in den Korb zu schießen. Die Vorteile dieses Designs sind, dass es deutlich leichter ist und es keine Probleme mit den Steppern gegeben hätte und dass wir durch das Projekt MarshmallowGun schon viele gute Informationen zu dem Luftdrucktank hatten. Wir haben lange an einem System gearbeitet, wo wir einen kleinen Tank auf dem Roboter mit Luft aus dem großen Tank füllen und die gespeicherte Druckluft mit einem Ventil auf den Ball in einem Rohr leiten. Die Hauptprobleme waren, dass der Tank nicht abgedichtet werden konnte, somit kein Luftdruck gespeichert wurde, dass die Ventile für Wasser ausgelegt sind und Luft nicht schnell entweichen lassen und dass das Barometer im Tank nur ungenaue Werte angezeigt hat. Somit hat der Ball nicht genug Luft unter hohem Druck abbekommen und ist gerade so aus dem Loch gefallen. Zusätzlich hat das Barometer unter diesen Druckverhältnissen nicht richtig funktioniert und wir hätten die Abwurfdistanz nicht genau bemessen können. Da diese Probleme hauptsächlich daran lagen, dass wir keine Bauteile bekommen können, die exakt den Anforderungen entsprechen, haben wir die komplette Idee verworfen und haben das Katapult konstruiert.

Abbildung 7: Luftdrucktank mit eingebautem Barometer

Schaltplan

Abbildung 8: Der Schaltplan vom Roboter

Materialliste

Abbildung 9: Die Materialliste aller verbauten Komponenten

Pinbelegung Arduino

Abbildung 10: Die Pinbelegung des Arduinos

Ergebnisse und Analyse

Von unseren Muss-Kriterien haben wir Ball werfen, Korb treffen, Linie identifizieren und korrekte Positionierung auf der Linie soweit erfüllt. Robojordan kann fahren, eine gerade Linie erkennen und auf dieser anhalten. Von der Position aus wird der Wurfmechanismus ausgelöst und der Tischtennisball wird in Richtung des Korbes geworfen. Bei der korrekt abgemessenen Distanz zum Korb und der relativ genauen Positionierung des Roboters am Anfang trifft Robojordan in der meistens. Die ursprüngliche Idee, dass die Linie einen Halbkreis um den Korb bildet, haben wir noch nicht perfektioniert. Der Roboter richtet sich zwar zum Korb aus dennoch ist die tangentiale Positionierung auf der Linie noch zu ungenau und der Roboter wirft leicht daneben oder auf das Brett des Korbs in einem falschen Winkel, sodass der Ball knapp vorbei fällt. Unsere Kriterien die der Roboter können sollte und die nett gewesen wären haben wir leider nicht geschafft. Das ist uns aber auch schon früh im Planungsprozess aufgefallen. Somit ist die Erkennung eines abgeschlossenen Korbs und das Aufsammeln des Balls nicht implementiert. Außerdem hatten wir geplant, dass unser Roboter die Linie von selbst findet, wenn er in einem bestimmten Bereich beliebig abgestellt wird. Der Bereich sollte mit einem Tape begrenzt werden, das eine andere Helligkeit als unsere Wurflinie hat und somit auch von den Fotodioden erkannt werden kann. Jedoch haben die gemessenen Helligkeitswerte von den Tapes zu geringe Unterschiede, damit sie klar unterschieden werden konnten. Dazu war immer noch die Frage, wie kann man den Halbkreis um den Korb ausreichend gut hinbekommt. Diese Funktionen wären tendenziell umsetzbar, soweit sich eine neue Gruppe in kommenden Semestern diese Probleme zur Aufgabe machen würde.

Kommentierter Code.zip

Abschlusspräsentation

robojordan.pptx

Die Doku ist sehr gut, mit guten Abbildungen. Die Diskussion muss noch fertig geschrieben werden (die Gliederung sieht gut aus). Nummeriert bitte automatisch die Abbildungen ⇒ s. dazu das Beispiel in den Hinweisen zur Projektdoku.

projektewise18/roboshippublic/start.txt · Zuletzt geändert: 2019/04/03 01:21 von d.golovko