Posts

Neuentwicklung der Motoransteuerung

Bild
Die aktuelle Spieleransteuerung hat nach einigen Tests viele Probleme aufgezeigt. Zum einen war mir die Schussgeschwindigkeit zu gering und zum anderen hat der lineare Antrieb zu sehr gestottert. Zunächst bin ich davon ausgegangen, dass das ein mechanisches Problem ist und die Bewegung durch noch bestehende Toleranzen einfach sehr laut verläuft. Als ich nun aber mich mit dem Redesign der Platine beschäftigt habe, um einen anderen Motor für die Schussbewegung zu nutzen, ist mir aufgefallen, dass es in der Software noch einen Logikfehler bei der Motoransteuerung gab. Grundsätzlich war der Gedanken sowohl für die Schussbewegung, als auch für die lineare Stellung den gleichen schnellen Motor zu verwenden. Dieser ist gekoppelt mit einem Encoder, der mit einem optischen Verfahren die aktuellen Position an den Microcontroller zurückliefert. Mein Gedanke war, wenn auf beiden Seiten die gleiche Hardware genutzt wird, sollte es auch möglich sein, den entsprechenden Softwarebaustein zu dupliziere...

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