Posts

Implementation der Spielstrategie in der Computersoftware

Bild
Nachdem die lineare Bewegung nun ohne Probleme funktioniert, bin ich aktuell mit der rotativen Bewegung beschäftigt. Die Herausforderungen sind eine entsprechende Reaktionsfähigkeit, als auch eine schnelle Bewegung, um den Ball zu beschleunigen. Aktuell versuche ich durch verschiedene Versuche zu ermitteln, ob ein High-Speed Servo oder ein Schrittmotor für die Anwendung am besten geeignet ist. Im vorherigen Post ging es auch um die Grundlagen für die PC-Software. In der Zwischenzeit habe ich alle Softwarebausteine implementiert. Vom Einlesen des Kamera-Streams mittels der IDS-Softwarebibliothek zur Auswertung der KI-Daten, sind nun alle Softwarebausteine in einzelne Threads separiert. Eine große Herausforderung war dabei die Parallelisierung zur Geschwindigkeitsoptimierung. Sobald ein Bild von der Kamera eintrifft, wird nun gleichzeitig des Spielfeld von einer KI analysiert, als auch die Spielfeldabmessungen mittels Fiducials festgestellt. Damit ist es nun möglich, 200 mal pro Seku...

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 Software...

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 Positio...

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 Grafikkar...

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...