Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise1617:yumgunpublic:start

Dokumentation YumGun

Ein Projekt von Ulrike Niederschuh, Kyra Nitescu, Jonas Gesch und Sonja Wellnitz.

Idee

Zum Anfang des Semesters haben wir uns mit unterschiedlichen Ideen zusammengesetzt und überlegt welchem Projekt wir uns in diesem Labor widmen wollten. Wir waren uns einig, dass es etwas Spaßiges,aber auch Realisierbares sein sollte. Schließlich kam die Idee einer Skittleskanone auf, die später aus Sicherheitsgründen zu einer Marshmallowkanone umgedacht wurde; der YumGun.

Die YumGun ist eine Marshmallowkanone, die einem Menschen einen Marshmallow in den Mund schießen kann. Sie richtet sich selbstständig aus und wird manuell geladen und abgefeuert.

Sicherheit

Während der Realisierung der YumGun ist uns aufgefallen, dass diese als Waffe gesehen werden kann. Daher haben wir uns darüber erkundigt, was uns rein rechtlich erlaubt ist zu bauen und welche Beschränkungen wir zu beachten haben. Dabei haben wir uns die folgenden Fragen gestellt:

Welche Energie hat er der Marshmellow, also das Projektil, beim Abschuss? Liegt er damit noch unter dem Grenzwert für Spielzeugwafffen?

Die Antworten darauf lauten wie folgt:

Laut WaffG Anlage 2 zu §2, Abschnitt 2, Unterabschnitt 2, Nr. 1.1 sind Druckluftwaffen unter 7,5 Joule Geschossenergie in Deutschland ab 18 frei erwerblich. Laut Anlage 2, Abschnitt 3, Unterabschnitt 2, Nr. 1 sind sie unter 0,5 Joule vom Waffengesetz ausgenommen und daher ab 14 erwerblich.

Die Geschossenergie lässt sich nach der Formel $\frac{1}{2} m_G * v_G^2$ berechnen. Dabei ist $m_G$ die Geschossmasse in kg und $v_G$ die Geschossgeschwindigkeit in m/s. Relevant für unseren Versuchsaufbau ist die Auftreffenergie, d.h. die Energie, die der Marshmallow am Ziel hat. Diese ist durch den Luftwiderstand deutlich geringer als die Mündungsenergie, jedoch sehr schwer zu bestimmen. Außerdem wird zur Sicherheit für das Worst-Case-Szenario, dass sich jemand direkt vor der Mündung befindet und abgeschossen wird, die Mündungsenergie ausgerechnet.

Zur Bestimmung dieser Energie wird mit einer Lichtschranke die maximale Abschussgeschwindigkeit bestimmt. Das durchschnittliche Gewicht der Marshmallows wird durch Wiegen ermittelt.

Mit einer Lichtschranke und einer Reihe von Testschüssen haben wir eine Maximalgeschwindigkeit von 25 m/s herausgefunden. Das Überdruckventil des Kanisters reagiert bei 3 Bar. Daher lässt sich der Druck beim Abschuss und somit die Geschwindigkeit nicht weiter erhöhen. Der Marshmallow wiegt 0,7g.

Der Marshmallow hat folglich eine Geschossenergie von 0,21875 Joule. Dieser Wert liegt deutlich unter dem Grenzwert der Geschossenergie für Spielzeugwaffen, die von 14-Jährigen gekauft werden dürfen, von 0,5 Joule.

Daher ist unser Roboter nach dem geltenden Waffengesetz nicht von den dort formulierten Einschränkungen betroffen.

Realisierung

Montage und Schaltplan

Montage

Schaltpläne

Schaltplan der YumGun:

Schaltplan des Geschwindigkeitsmessers:

Die beiden Schaltungen hängen an dem selben Arduino. Für eine übersichtlichere Darstellung sind sie hier aber getrennt abgebildet.

Programmablauf im Überblick

1. Horizontale Ausrichtung

Die horizontale Ausrichtung erfolgt mithilfe der Gesichtserkennung der Kinect und der Steppermotoren. Das Programm gibt den Motoren den Befehl sich gegenläufig zueinander zu bewegen, sodass sich das Gesicht der Mitte des Sichtfeldes der Kinect-Kamera in immer kleiner werdenden Schritten annähert.

2. Vertikale Ausrichtung

Um den Lauf vertikal auf das Ziel auszurichten benötigen wir den Abschusswinkel, der an den Servo, der den Lauf bewegt, weitergegeben wird. Dieser Winkel wird mithilfe der Formeln des schiefen Wurfs ermittelt.

3. Abschuss

Der Abschuss erfolgt über Druckluft. Das Magnetventil wird mit einem Knopf auf dem Breadboard manuell geöffnet und so wird die Druckluft in den Lauf geleitet und der Marshmallow abgeschossen.

Programmablauf im Detail

1. Horizontal

Gesichtserkennung mit OpenCV

Damit sich die YumGun überhaupt horizontal ausrichten kann, muss sie zuerst ihr Ziel erkennen können. Zu diesem Zweck haben wir die OpenCV Library für processing verwendet. Mit deren Hilfe wird auf den Video-Feed, den die Kinect-Kamera liefert, ein „Detektor“ angewendet, der in unserem Fall das im Bild befindliche Gesicht herausfiltert (siehe Bild unten links). Von diesem Gesicht erhalten wir dann die Bildkoordinaten, sodass wir errechnen können, wo sich das Gesicht relativ zur Bildmitte befindet.

Da wir nun die Distanz in Pixeln kennen, die korrigiert werden muss, wird diese zunächst als String über einen Port von processing an den Arduino gesendet. Dabei wird zu Beginn des Strings entweder ein „r“ oder ein „l“ hinzugefügt, um die Richtung der Rotation zu bestimmen. Sobald der String empfangen wurde, wird zunächst der Buchstabe ausgewertet und abhängig davon werden die Räder durch Senden des entsprechenden Signals für eine Rotation nach links oder rechts vorbereitet. Dann müssen nur noch die Pixel in Stepps umgerechnet werden, woraufhin eine Funktion, welche immer einen Step ausführt, in einer Schleife entsprechend oft aufgerufen wird. Sollte das Ziel dann noch nicht horizontal zentriert sein, weil es sich bewegt hat oder die Werte ungenau waren, wird der Vorgang wiederholt.

2. Vertikal

Geschwindigkeit des Marshmallows

Um den Lauf vertikal auf den Mund ausrichten zu können verwenden wir die Formeln des schiefen Wurfs.

Um diese verwenden zu können, musste die Abschussgeschwindigkeit des Marshmallows ermittelt werden. Zu diesem Zweck haben wir zunächst die auf dem Bild gezeigte Lichtschranke konstruiert, mit der wir empirisch eine Durchschnittsgeschwindigkeit des abgeschossenen Marshmallows von ca. 15 m/s bestimmt haben. Diese haben wir dann bei der Berechnung des Abschusswinkels als konstant angenommen.

Das hat aber zu Problemen bei der Zielgenauigkeit geführt, da sich die Geschwindigkeit durch den abnehmenden Druck im Tank nach mehreren Schüssen verändert. Einer unserer Lösungsansätze war, den Tank zu füllen, bis das Überdruckventil in Aktion trat und dann erst zu schießen. So konnten wir sehen, wie gut die YumGun bei vollem Tank traf.

Später haben wir dann in Zehnerschritten den Tank aufgepumpt (sprich: erst 10 x pumpen, dann 20 x, etc.) und haben geschaut mit welcher Tankfüllung die YumGun am besten trifft. Auch haben wir verschiedene Öffnungsdauern des Ventils ausprobiert. Die Resultate dieser Messungen stehen hier:

Da uns diese Methoden aber zu ungenau war haben wir schließlich beschlossen die Lichtschranke direkt am Lauf zu befestigen (siehe Bild: Montage). Dadurch kann der Lauf immer mit der Geschwindigkeitsmessung des vorherigen Abschusses ausgerichtet werden und zielt somit deutlich genauer, als bei einer angenommenen konstanten Geschwindigkeit. Der Zeitabstand zwischen den zwei Messpunkten wird über den Port vom Arduino an den PC geschickt und dort in m/s umgerechnet.

Abschusswinkel berechnen

Wie bereits mehrfach erwähnt verwenden wir die folgenden Formeln des schiefen Wurfs:

Die Geschwindigkeits-Formeln:

  • Geschwindigkeit in X-Richtung : $v_x = v_0 · cos(α)$
  • Geschwindigkeit in Y-Richtung : $v_y = v_0 · sin(α) - g · t$

Die Strecken-Formeln:

  • Entfernung in X-Richtung : $x = v_0 · cos(α) · t$
  • Entfernung in Y-Richtung : $y = v_0 · sin(α) · t + 0,5 · (-g) · t²$

Daraus abgeleitet: \(t = \frac{x}{v_0 · cos(α)}\)

Mit:

  • $v_0$ = Anfangsgeschwindigkeit
  • $g$ = Erdbeschleunigung ≈ 9,81 m/s²
  • $α$ = Abschusswinkel
  • $t$ = Flugzeit

Durch die Farb- und die Tiefenkamera der Kinect ist dem Programm die Zielhöhe und -weite bekannt.

Die unten stehende Skizze zeigt im Wesentlichen wie wir den Abschusswinkel ermitteln. Bei einem bekannten Ziel gibt es mit einem beliebigen schiefen Wurf immer eine Wurfhöhe bei der Zielweite, die jedoch nicht unbedingt mit der Zielhöhe übereinstimmen muss. Wir lassen das Programm den Winkel bestimmen, indem wir durch die Formel

\[y = \frac{v_0 · sin(α) · x}{v_0 · cos(α)} -\frac{g}{2} · \frac{x}{(v_0 · cos(α))²}\]

\[y = tan(α) · x -\frac{g}{2} · \frac{x}{(v_0 · cos(α))²}\]

solange Winkel in 0,001-Schritten in einer Schleife durchlaufen lassen bis der errechnete y-Wert der Zielhöhe entspricht. Diese Entsprechung ist in der Theorie 100 %ig, in der Praxis ist es jedoch die beste Näherung, die das Programm in einem Intervall von Zielhöhe +/- 0,05 findet. Der Winkel der besten Näherung wird dann an die Geschwindigkeitsformel

\[Geschwindigkeit = -g · t + v0 · sin(α)\]

weitergegeben. Wenn die Geschwindigkeit negativ, sprich eine Fallgeschwindigkeit ist, dann erfolgt der Schuss nicht direkt auf das Ziel, sondern in einem Bogen. Wir haben lange direkt geschossen und sind an der Frage, wie wir in einem Bogen schießen können, gescheitert. Durch eine Kooperation mit dem Kreativität & Technik Labor sind wir auf die hier vorhandene Lösung gekommen.

Der Winkel, der die Geschwindigkeitsbedingung erfüllt, wird dann auf die gleiche Art und Weise wie zuvor die Werte für Links- und Rechtsdrehung über einen Port an den Arduino und von da an den an den Servo weiter gegeben, der den Lauf dementsprechend ausrichtet.

Damit ist dann die vertikale Ausrichtung abgeschlossen.

3. Abschuss

Der Abschuss wird mit Druckluft ausgeführt. Die Öffnung des Magnetventils wird mit einem Knopf manuell gesteuert. Bei Betätigung des Knopfs gibt der Piezo zuerst einen Countdown aus, an dessen Ende dann ein Signal an das Magnetventil gesendet wird, wodurch es für eine manuell einstellbare Zeit (hier 30ms) geöffnet und dann wieder geschlossen wird. Die in diesem Zeitraum ausgetretene Luft beschleunigt den Marshmallow dann auf eine Geschwindigkeit, die abhängig von der Tankfüllung ist.

Mechanischer Ablauf

Wenn alle Daten zur horizontalen Ausrichtung vorhanden sind, werden die beiden Motoren in gegenläufigen Richtungen angesteuert, damit sich die YumGun auf der Stelle drehen kann. Danach erfolgen die Berechnungen für den Abschusswinkel. Wenn diese fertig sind, dann dreht der Servo, der am Lauf befestigt ist, diesen in die richtige Position. Zum Abschuss wird der Knopf betätigt. Dadurch öffnet sich das Magnetventil und lässt die Luft durch den Schlauch in den Lauf und schießt den Marshmallow raus.

Reflexion/ Ausblick

Im Rückblick kann man sagen, dass wir weniger Zeit als gedacht für dieses Projekt gebraucht haben. Auch haben sich unsere erwarteten Schwierigkeiten als weniger dramatisch erwiesen, als wir dachten. Ursprünglich dachten wir, dass die horizontale Ausrichtung ziemlich viel Zeit in Anspruch nehmen würde, aber dann ging es doch überraschend schnell. Dafür haben wir den Zeitaufwand für die vertikale Ausrichtung unterschätzt. Die Formeln des schiefen Wurfes zu verstehen und zu unseren Zwecken umzuformen war intellektuell eins der anspruchsvollsten Probleme unseres Projektes. Es hat uns die letzten zwei Monate stetig begleitet und wurde immer wieder so umgearbeitet wurde, dass es unseren Ansprüchen besser gerecht wurde. Um letztendlich die gewünschte Flugbahn zu bekommen, haben wir Hilfe von einem der Tutoren von Kreativität und Technik bekommen.

Was wir noch ausprobieren wollen, ist der Abschuss mit der gebogenen Flugbahn in einem Raum, der hoch genug ist, um dabei nicht gegen die Decke zu schießen. Außerdem haben wir die Lichtschranke noch nicht zur Berechnung des Abschusswinkels verwendet.

Quelltext

Präsentation im Wissenschaftsfenster

Bestandteile der YumGun

Bauteil Anzahl
X-Box 360 Kinect 1
Drucklufttank 1
Magnetventil 1
Servo 1
Steppermotor (Polulu) 2
Stepper Motortreiber (Polulu A4988) 2
Plastikschlauch 1
Plexiglasrohr 1
Arduino 1
Phototransistor 2
LED 2
Piezo 1
Spannunngsregler 1
Rad (d=9cm) 2
Stützrad 1
Breadboard 2
projektewise1617/yumgunpublic/start.txt · Zuletzt geändert: 2017/05/24 16:17 von c.jaedicke