Posts

Lange Fehlersuche und Beginn der Steuerungs-Software

Bild
Wie sich herausgestellt hat, gab es mit der Ansteuerung, wie sie im letzten Post angesprochen wurde, noch ein größeres Problem. Bei einigen Bewegungen ist es passiert, dass der Referenzpunkt verloren gegangen ist. Sprich, der Controller wusste nicht mehr, wo sich der Spieler genau befindet. Das Resultat waren ungewollte Sprünge und verfehlte Bälle.  Zunächst war ich sicher, dass es sich dabei um einen Softwarefehler handelt. Sei es eine falsche Motoransteuerung oder ein Problem mit dem Interrupt, der die Software unterbrechen soll, sobald der verbaute Encoder ein Puls ausgibt. Diese Pulse werden (normalerweise) zuverlässig vom eingesetzten Encoder ausgegeben, wenn der Motor den Spieler verschiebt. Durch viele Tests konnte ich ermitteln, dass es einen Zusammenhang gibt, zwischen den Sprüngen, bei denen der Controller die Referenzposition verliert, zu Bewegungen um die eigene Achse, wenn zum Beispiel ein Schuss ausgeführt werden soll. Nachdem auch nach tagelangem Testen kein Softwarefehl

Entwicklung einer Platine zur Bewegung der Spieler

Bild
Um ein Männchen zu rotieren bzw. linear nach links und rechts zu bewegen, ist eine komplexes Zusammenspiel zwischen einem Motor, dem Drehgeber und einem Servomotor erforderlich. Das Ganze soll mit einem Microcontroller überwacht und gesteuert werden, der jeweils für eine Stange mit ihren Spielern zuständig ist. Wie bereits im ersten Blogpost gezeigt, wird von einer Seite eine Gewindestange im Inneren der Tischkickerstange rotiert. Dadurch kann sich das Männchen bewegen. Für diese Bewegung ist ein Motor erforderlich, der sowohl schnelle Bewegungen durchführen kann, als auch auf den Millimeter genau gebremst werden kann. Damit mein Programm später ermitteln kann, wo sich die Männchen befinden, ist direkt mit dem Motor ein inkrementeller Drehgeber, ein sog. Encoder, verbunden. Dieser gibt beim Feststellen einer Drehung je nach Richtung einen Impuls. Somit kann die genaue Position durch Zählen der Impulse bestimmt werden. Mehr zum Aufbau dieser Hardware in einem der nächsten Blogposts. Um

Automatische Spielfelderkennung mithilfe von Fiducials

Bild
Obwohl die Kamera durch zwei Rohre, wie im vorherigen Post beschrieben, befestigt ist, können Vibrationen doch das Sichtfeld verschieben. Für die Auswertung ist dies allerdings fatal, da die genau Position der Männchen des Gegners und des Balls nicht mehr mit der gemessenen Position übereinstimmen. Der Roboter würde so beispielsweise am Ball "vorbeispielen". Um dieses Problem zu lösen, habe ich an den Ecken des Spielfelds jeweils einen sog. Fiducial plaziert. Ein solcher Marker kann mit einer Identifikationsnummer eindeutig erkannt werden. Aufgrund der Größe habe ich mich hier für Fiducials des Typs "ArUco" entschieden. ArUco-Marker am Rande des Spielfelds Der große Vorteile dieser Marker ist die einfache und schnelle Klassifizierung mithilfe einer optischen Kamera. So kann nicht nur die Position des Fiducials im Bild, sondern auch Attribute, wie die 3D-Rotation festgestellt werden. Sind die Lageinformationen der vier Marker am Tischkicker bekannt, kann das Bild so

Montage der IDS Kamera über dem Tischkicker

Bild
High-Speed Tracking-Kamera von IDS Imaging über dem Spielfeld Die Kamera erfüllt eine wichtige Aufgabe in diesem Projekt. Nur durch sie kann der Algorithmus auf dem Computer erfahren, in welcher Position sich die Spieler befinden und wie der Ball gerade rollt. Neben der optimalen Perspektive, um das ganze Feld zu überblicken, ist es wichtig, dass die Befestigung möglichst Stoßfest ist. Damit kann das Bild auch bei intensiveren Spielen immer zentral das Spielfeld zeigen.  Um dies zu erreichen, habe ich zwei Rohre über den Tischkicker gebogen, sodass diese auf beiden Seiten des Tisches mit einem Flansch montiert werden können. Dafür wurden die Rohre über eine Holzform gezogen, um zwei identische auf der gleichen Höhe zu haben. Am obersten Punkt der beiden Stangen kann auf diese Weise ein Holzbrett mit der Kamera befestigt werden. Form zum Biegen der Rohre Mithilfe von Spanngurten konnten die Stangen an die Form gepresst werden. Mit einem Heißluftföhn habe ich anschließend die Position fi

Aufbau des Computersystems zur Spielberechnung

Bild
Wenn man sich genaue Gedanken darüber macht, was ein Mensch macht, während er Tischkicker spielt, wird deutlich, warum ein solches Projekt so aufwendig ist. Das Verarbeiten der aktuellen Spielsituation, Überlegung der nächsten Aktionen und dann die motorische Ausführung.  Um einen Vergleichswert zu haben, habe ich mir als Schätzung zugrundegelegt, dass ein Ball vom Torwart des einen Teams zum anderen Tor circa 100 ms benötigt. Demnach ist eine Berechnungsrate von 200 Hz des aktuellen Spielverlaufs unerlässlich. So fing die Planung eines Computersystems an, welcher diesen Anforderungen gerecht wird. Zunächst war klar, dass die Bilder von einer 200 fps Kamera von der Bandbreite erstmal durch einen Anschluss am PC entgegengenommen werden müssen. In meinem Fall durch USB 3.0. Die nächste Herausforderung ist die Erkennung der Ballposition und der Stellung der einzelnen Spieler. Da dieser Algorithmus auf künstlicher Intelligenz basiert, ist die Berechnung sehr belastend für die Grafikkarte.

Erste Tests zum KI-Tracking

Bild
Damit das System zu jeder Zeit genau weiß, wo die einzelnen Spieler sich befinden und wie der Ball rollt, befindet sich über dem Tischkicker eine Kamera, die mit einer hohen Bildwiederholrate auch schnelle Bälle erkennen kann. Um das System möglichst zuverlässig zu gestalten, sodass es bei verschiedenen Spiel- und Lichtbedingungen zuverlässig funktioniert, soll ein yolov8 Netzwerk eingesetzt werden. Mithilfe von über 3000 manuell markierten Bildern aus der Vogelperspektive konnten die KI lernen den Ball und die Männchen zuverlässig zu erkennen. Vollständig markiertes Bild mit roten und schwarzen Spieler und dem Ball Nach einiger Trainingszeit konnte das neuronale Netzwerk eine Genauigkeit von 98% erreichen. Beeindruckend ist, dass die künstliche Intelligenz sogar in der Lage ist durch Stangen verdeckte Bälle, als auch durch Bewegungsunschärfe verzogene Bälle zu detektieren. Das ist insbesondere dann wichtig, wenn schnelle Bälle von der einen Seite auf die andere geschossen werden und d

Erster Prototyp der Mechanik

Bild
Scroll down for english version! Das Ziel: Ein autonomer Tischkicker-Roboter! Ein menschlicher Mitspieler soll durch einen Roboter ersetzt werden. Es gilt zunächst die Mechanik und Elektronik zu entwerfen, sodass die Maschine die gleichen Möglichkeiten, wie der Mensch hat. Im folgenden Schritt soll dann das Programm, welches den Roboter steuert, solange optimiert werden, bis der Mensch geschlagen werden kann. Dafür verfolgt eine Kamera das Spielgeschehen und trackt Spieler und Ball in Echtzeit. Mithilfe von künstlicher Intelligenz kann der Spielverlauf der nächsten Sekunden vorhergesagt und entsprechend gehandelt werden. An allen vier Stangen benötigt der Roboter die Möglichkeit die Männchen nach links und rechts zu bewegen sowie zu drehen, um einen Schuss durchzuführen. Um die Technik möglichst kompakt zu halten, war das die ersten Idee des Prototypen: Befestigungsschraube für den Spieler im ersten Prototypen Durch die hohlen Stangen läuft eine Steilgewindespindel. Für jedes Männchen