Implementation der Spielstrategie in der Computersoftware

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 Sekunden die Spielsituation neu einzuschätzen. Mithilfe der Analysealgorithmen werden alle dafür nötigen Parameter extrahiert. Das schließt unter anderem die Position und die Geschwindigkeit des Balls, als auch die Position der gegnerischen Spieler mit ein. Folgende Abbildung zeigt das Spielfeld mit dem Overlay, welches die extrahierten Parameter zeigt:

Markierte Positionen des Balls und der gegnerischen Spieler mit extrapolierter Ballposition



Häufig kommt es zu dem Problem, dass der Ball aus der Top-Down Perspektive nicht zu erkennen ist, da er von einer Stange oder einem Spieler verdeckt wird. In diesem Fall ist es erforderlich die Position mathematisch aus der bekannten Geschwindigkeit zu extrapolieren. Einfach die vergangene Zeit mit der Geschwindigkeit zu multiplizieren ist dabei allerdings nicht ausreichend. Mit einigen Störfaktoren, wie Bälle, die unterhalb von einer Stange zum stehen kommen oder welche, die abgelenkt werden, ist ein solch primitiver Ansatz leider nicht geeignet. 
Daher suche ich aktuell noch nach Optionen, wie einem Kalman-Filter, um auf nicht messbare Störungen mittels stochastischer Modelle reagieren zu können. Eine mögliche Alternative wäre auch weitere Sensorik zu integrieren, die auch den verdeckten Ball aus einer anderen Perspektive detektieren kann.

Final gilt es noch den Aufbau für die eine Stange auf die drei weiteren Spielerposition zu replizieren. Dafür ist aber eine verlässliche Steuerung erforderlich, die noch durch weitere Tests sichergestellt werden muss. Bis dahin bin ich sehr gespannt, mit welchen Spielstrategien der Roboter später dem Mensch überlegen sein wird.

Kommentare

Beliebte Posts aus diesem Blog

Erster Prototyp der Mechanik

Entwicklung einer Platine zur Bewegung der Spieler

Automatische Spielfelderkennung mithilfe von Fiducials