Pool-Billard Assistenz
Autoren: Christo Tsibadze, Kevin Penner
Betreuer: Prof. Schneider
Aufgabenstellung
Realisierung einer Billard-Assistenz-Software, mit Hilfe von Matlab und dessen Bildverarbeitungs-Tools: Es soll ein "Billard-Assistenz-Software" entwickelt werden, die aus einem Video (oder Live-Cam) Billard Kugel- und Queue -Positionen erkennt und mit einer Algorithmus die Abprallrichtung einer Zielkugel "vorhersagt" (berechnet). Vor dem Schlag soll anhand der Queue- und Kugel-Positionen erkannt werden in welcher Richtung die weiße Kugel geschlagen wird und falls die weiße Kugel einen anderen Kugel trifft, dann in welcher Richtung diese abprallen wird. Die berechnete Richtungen sollen auf dem Video eingeblendet werden. Für die Bildverarbeitung sowie Programmierung wurde MATLAB R2016a verwendet. Eine CAD-Software wurde während der Entwicklung des Algorithmus zur Prüfung der Ergebnisse eingesetzt.
Erwartungen an die Projektlösung
- Sammeln von weiteren Erfahrungen in Bildverarbeitung mit MATLAB
- Umsetzung der in die Vorlesung gewonnenen Kenntnisse in die Praxis
- Tieferer Einblick in die geometrische Physik
- Sammeln von Erkenntnissen durch Problemstellungen
- Erstellung eines spektakulären Videos, welches die Software demonstriert
Plannung
Projektplan
Die Gesamtaufgabe wurde wie folgt aufgeteilt:
- Kevin Penner:
- Automatische Erkennung von Queue- und Kugelpositionen in einer Videoquelle
- sowie Unterscheidung der Kugeln, weiße- oder Zielkugel
- Christo Tsibadze:
- Ein Algorithmus programmieren, der die Schlagrichtung der weißen Kugel berechnet
- Erkennung ob die weiße Kugel nach dem Schlag einen anderen Kugel trifft oder nicht
- Falls die weiße Kugel eine andere Kugel trifft, Berechnung in welcher Richtung die andere Kugel abprallt.
Die Aufgabe ist freiwillig. Zeitlich wurde im 6. Semester ca. 3 Stunden pro Woche investiert.
Zur Ideenfindung oder Besprechung der Problemlösungsstrategien wurde regelmäßiges Wochen-Meeting gehalten.
Konzeption/Entwurf
Realisierung
Hardware-Design
Bildschirm
Für die "Haut" der Konsole wurde eine weiße undurchsichtige Tapete mit bestimmtem Muster im Baumarkt gekauft. Die Tapete ist nicht transparent aber wie im Bild (links) zu sehen ist, kommen die Farben durch.
Eine Zeichnung von einer CAD-Baugruppe (Holzplatte mit positionierten LED-Streifen) wurde auf ein Brett geklebt und anschließend mit einem sehr scharfem Messer vorsichtig rechteckige Streifen ausgeschnitten. In die ausgeschnittene Bereiche wurden die LED-Streifen positioniert und verklebt. Zuvor wurden die LED-Streifen (60-LEDs pro Meter) in kleinere Streifen (18-LEDs pro Streifen) zugeschnitten. Aus dem Verschnitt wurde die letzte 18-LED-Streifen zusammengelötet. Die Verkabelung der LED-Streifen wurde durch kleine Bohrungen seitlich durch das Brett geführt.
Nachdem die dünne Platte mit den LED-Streifen fertiggestellt war, wurde mit der Bearbeitung einer dickeren Platte gestartet. Diese Platte soll auf die dünnere Platte draufkommen und mit 234 Bohrungen die Lichter der einzelnen LEDs von einander trennen. Zuerst wurden breite Bohrungen gebohrt und anschließend von beiden Seiten gesenkt.
Gamepads
Eine Lochrasterplatine wurde in kleinere Rechtecke geschnitten. Darauf wurden Knöpfe platziert und verlötet inklusive Verkabelung. Am ende der Kabelstrangbündel wurde ein VGA-Anschluss verlötet.
Aus den Rechteckigen Holzklötzen mit den Maßen des Gamepads wurde die untere Seite ausgefräst. Anschließend eine Schablone draufgeklebt und die Bohrungen für die Knöpfe in vorher bestimmten Positionen gebohrt.
Die Gamepad-Elektronik und Gamepad-Gehäuse wurden zusammengefügt. Die Leiterplatten wurden mit einem Klebstoff fest positioniert und verklebt. Für gleichmäßigen Abstand der Knöpfe wurden an jeder Ecke der Leiterplatten gleichgroße Schrauben als Abstandshalter verwendet.
Zur Kabelzugsentlastung wurde an dem Kabelbündel ein Doppelknoten mit einem Leitungsstück angebracht. Anschließend wurde eine dünne Platte als Deckel drauf geschraubt.
Leiterplatte und Verkabelung
Aus einer Lochrasterplatine wurde wieder ein Rechteck im passender Größe zur Arduino Uno zugeschnitten. Auf dieser Platine wurden Pins darangelötet mit dem sie auf das Arduino Board dadrauf gesteckt wurde.
Auf dieser Aufsteckplatine wurden Widerstände für die Knöpfe, ein Piezo-Speaker, ein linearer Potentiometer und Leitungen von den Anschlüssen für Gamepads sowie Datenleitung und Stromversorgung für die LED-Matrix verlötet.
Für die Stromversorgung wurde ein AC/DC Wandler (5V mit 3000mA) verwendet. Der Stecker wurde abgeschnitten und direkt auf die Aufsteckplatine gelötet, als Stromversorgung für Arduino und auch für die LEDs. Zwischen der Plus- und Minus Leitung wurde ein Kondensator mit 1000µF (bis 50V) verbaut.
Das Arduino-Board mit der Aufsteckplatine wurde auf der Rückseite der dünnen Platte (mit LED-Streifen auf anderer Seite) mit Kabelbinder und Klebepads für Kabelbinder befestigt.
Konsole
Die dünne Platte mit LED-Streifen und die Dicke Platte mit 234 Bohrungen wurden miteinander verschraubt. Aus der dickeren Holzplatte wurden zwei dreieckige Stützen nach technischen Zeichnungen zugeschnitten und auf die dünne Holzplatte hinten drangeschraubt. In den dreieckigen Stützen wurden auch die Anschluss-Stecker (male) montiert.
Anschließend wurde aus einer noch dünneren Platte die Deckel für Hinten inkl. Aussparungen für Potentiometer und Ein/Aus-Schalter gefertigt und an die Spielkonsole geschraubt.
Zum Schluss der Hardware-Fertigung wurde die Tapete zugeschnitten und damit die Konsole vorne und seitlich tapeziert.
Software-Design
Es wurde mit Hilfe von Arduino IDE programmiert. Die LED-Streifen wurden mit Hilfe der Bibliotheken "FastLED" und NEOPixel" angesteuert. Die Quellcodes wurden sowie die Fertigungspläne (technische Zeichnungen) wurden im SVN-Projektordner hochgeladen.
Steuerung
Zunächst wurde ein TEST-Programm für Hardware entwickelt, welches die Funktionalität der Tasten und Potentiometer prüft. Bei Betätigung der Tasten wird auf dem seriellen Monitor die Bezeichnung der gedrückten Taste ausgegeben. Auch der Wert der Potentiometer ist ablesbar
Sounds
Es wurden Soundausschnitte aus Super Mario-Melody und Star Wars-Melody mit Hilfe des Summers und Arduino Beispiel-Programms realisiert.
Als "Game Over"-Sound wurde ein Teil des Star Wars Melodie verwendet. Und als Anfangssequenz ein Teil aus Super Mario.
Bei jedem "Frucht" der Snake gegessen hat wird auch ein Peepton abgespielt.
Super Mario:
Video: https://youtu.be/-kkxs_fekWM
HowTo: http://www.princetronics.com/supermariothemesong/
Star Wars Melody:
Video: https://youtu.be/cye_wiaqybk
HowTo: http://www.instructables.com/id/How-to-easily-play-music-with-buzzer-on-arduino-Th/
Snake
Nein, das Rad wurde nicht neu erfunden ;). Die Snake-Software als .cpp und .h-Datei wurde aus GitHub-Webseite heruntergeladen, angepasst und auf Arduino geflasht.
Snake-Quelldaten GitHup: https://github.com/emanuelk/Snake-Game-Library-for-Arduino.git
Zusätzlich wurde im Spiel ein farbiger Highscore-Balken eingebaut welches den aktuellen Fortschritt/Schwierigkeitsgrad anzeigt.
Präsentationssoftware für die Messe
Für die Messe wurde ein Quellcode zusammengestellt mit:
- einem Spielablauf (main-programm)
- Intro mit HSHL-Logo (wenn die Konsole angeschaltet oder neugestartet wird) mit SuperMario-Sound
- Selbstgeschriebener auf Zufall basierter Algorithmus für Lichtfarbeneffekt der nach dem GameOver erscheint bis wieder eine Taste betätigt wird zum Spielneustart
- Steuerung: Eingabe Gamepads und Potentiometer und Ausgabe: LED-Matrix
Dokumentation
Video
Hier wird ein Link zum Youtube bereitstehen wenn das Video von Professoren hochgeladen wird.
Fazit
Die von uns angestrebte Ziele wurden erreicht!
Die Entwicklung der Spielkonsole hat sehr viel Spaß gemacht. Es wurde ein komplettes mechatronisches System entwickelt, Hardware und Software von Entwurf bis zur Realisierung und Tests.
Die kreative Idee mit der Tapete und die Funktionalität der Tapete in diesem Projekt war verblüffend. Ist die Konsole ausgeschaltet, sieht es aus wie ein schönes Designer-Möbelstück. Erst wenn die Konsole angeschaltet ist werden die LEDs bzw. die einzelnen Pixeln sichtbar. Durch die spezielle Tapetenoberflächenstruktur sehen die einzelnen runden Pixeln wie 3-dimensionale Kugeln aus was einen schönen Effekt erzeugt.
Eigenkritik: Das Isolierband an den Gamepad-Kabelenden könnte noch durch Steckergehäuse ersetzt werden.
Medien: Das Projekt ist bei der Messe auch bei der Presse sehr gut angekommen, so das wir auf der Titelseite der Lippstädter-Zeitung derPatriot gekommen sind. Wir wurden sogar wörtlich zittert.
[1]
Auch die Professoren waren begeistert und zufrieden.
[2]
Ende gut, alles gut :)
→ zurück zum Hauptartikel: DSB SoSe2016