Posts

Posts mit dem Label "künstliche Intelligenz" werden angezeigt.

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

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

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