Ballerkennung: Unterschied zwischen den Versionen

Aus Kicker (internals)
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
(Link auf den Code im SVN-Repository hinzugefügt.)
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Vorgeschichte ==
== Vorgeschichte ==
Eine zuverlässige und flinke Lokalisierung des Balls ist Voraussetzung für eine automatische Kicker-Steuerung.
Eine zuverlässige und flinke Lokalisierung des Balls ist Voraussetzung für eine automatische Kicker-Steuerung.
Für einige Jahre war eine Ballerkennung mit zwei S/W-Kameras in Betrieb: Durch einen schmalen Schlitz am Spielfeldrand wurde der Bereich unter den Füßen der Spieler beobachtet. Die Ballposition wurde mit Triangulation bestimmt. Diese Lösung war gegenüber Fremdlicht sehr empfindlich, weil Reflexe nicht zuverlässig vom Ball unterschieden werden konnten.
Für einige Jahre war eine Ballerkennung mit zwei S/W-Kameras in Betrieb, die im Rahmen einer [https://opac.bib.hm.edu/TouchPoint/perma.do?q=+1035%3D%22BV040698109%22+IN+%5B2%5D&v=fhm&l=de Diplomarbeit] entwickelt worden war: Durch einen schmalen Schlitz am Spielfeldrand wurde der Bereich unter den Füßen der Spieler beobachtet. Die Ballposition wurde mit Triangulation bestimmt.


<gallery>
Datei:Embedded Kamera.JPG|Embedded-Kamera
Datei:Kamera_montiert.JPG|Kamera montiert
Datei:Ballerkennung_Kamerapositionierung.png|Positionierung der Kameras
</gallery>


Diese Lösung war schnell und hinreichend genau, allerdings gegenüber Fremdlicht sehr empfindlich, weil Reflexe nicht zuverlässig vom Ball unterschieden werden konnten.
== Aktuelle Lösung ==
Im WiSe 24/25 wurde eine von Grund auf neue Ballerkennung realisiert, die von oben auf Spielfeld blickt und den nunmehr farbigen Ball lokalisiert:
<Verweis auf Masterarbeit hier>



Nach Abschluss der Masterarbeit wurden folgende Änderungen / Verbesserungen an der Ballerkennung vorgenommen:
== Neue optische Ballerkennung ==
=== Master-Projekt ===
Im WiSe 24/25 wurde eine von Grund auf neue Ballerkennung realisiert, die von oben auf Spielfeld blickt und den nunmehr farbigen Ball lokalisiert. Details dazu finden sich in der entsprechenden [https://opus4.kobv.de/opus4-hm/frontdoor/index/index/docId/743 Masterarbeit], einige Impressionen dazu im [https://kicker.ee.hm.edu/wiki/index.php/Impressionen_WiSe_24/25 externen Wiki].

=== Weiterentwicklung ===

Solch ein Projekt ist natürlich nie fertig: Nach Abschluss der Masterarbeit wurden folgende Änderungen / Verbesserungen an der Ballerkennung vorgenommen:
{| class="wikitable"
{| class="wikitable"
|-
|-
Zeile 25: Zeile 35:




=== Neue Parameter für die Farberkennung ===
==== Neue Parameter für die Farberkennung ====
Mit den ursprünglich in der Masterarbeit genutzten Parameter konnten ins Spielfeld ragende Körperteile fehlerweise als Ball erkannt werden.
Mit den ursprünglich in der Masterarbeit genutzten Parameter konnten ins Spielfeld ragende Körperteile fehlerweise als Ball erkannt werden.
Eine nachfolgende Analyse mit 189 Testbildern von Körperteilen über dem Spielfeld wurden bessere Parameter ermittelt: Die Werte aus Tabelle 11 der Masterarbeit, Zeile "1,5%" sind diesbezüglich deutlich robuster, ohne dass die Erkennung des Balls beeinträchtigt wird.
Eine nachfolgende Analyse mit 189 Testbildern von Körperteilen über dem Spielfeld wurden bessere Parameter ermittelt: Die Werte aus Tabelle 11 der Masterarbeit, Zeile "1,5%" sind diesbezüglich deutlich robuster, ohne dass die Erkennung des Balls beeinträchtigt wird.
Zeile 40: Zeile 50:
|}
|}


==== MQTT-Output ====
Die [[Softwareumgebung#Interprozesskommunikation | Interprozesskommunikation]] zwischen den Software-Komponenten ''Ballerkennung'', ''Spielsteuerung'', ''SPS'' und ''Grafikausgabe'' erfolgt zur Zeit über eine selbstgeschriebene UDP-basierte Kommunikationsstruktur. In den letzten Jahren hat sich [https://de.wikipedia.org/wiki/MQTT MQTT] als Kommunikationsprotokoll in verteilten Systemen durchgesetzt. Deswegen soll auch die Software-Architektur des Kickers entsprechend modernisiert werden.


Die Ballerkennung wurde als erste Komponente um einen MQTT-Client ergänzt. Diese Erweiterung ist in der neuen Klasse ''output_mqtt.py'' enthalten. Die Ausgabe der erkannten Ballpositionen kann per Startargument von UDP auf MQTT umgestellt werden. Die Verbindungsdaten des MQTT-Brokers sind in der Einstellungsdatei ''settings.yaml'' hinterlegt.


=== Code ===

Der Code wurde im SVN-Repository in den Branch '''trunk''' eingepflegt und findet sich im Verzeichnis [https://kicker.ee.hm.edu/WebSVN/listing.php?repname=Kicker-SVN&path=%2Ftrunk%2F20_Revival%2F20_Software%2F030_Ball_Detection%2F& '''020_Software/030_Ball_Detection'''].
=== MQTT-Output ===
Die neue Klasse ''output_mqtt.py'' fügt eine weitere Output-Möglichkeit hinzu, die per Startargument aktiviert werden kann.
Die Verbindungsdaten des MQTT-Brokers sind in der Einstellungsdatei ''settings.yaml'' hinterlegt.

Aktuelle Version vom 29. Juli 2025, 16:56 Uhr

Vorgeschichte

Eine zuverlässige und flinke Lokalisierung des Balls ist Voraussetzung für eine automatische Kicker-Steuerung. Für einige Jahre war eine Ballerkennung mit zwei S/W-Kameras in Betrieb, die im Rahmen einer Diplomarbeit entwickelt worden war: Durch einen schmalen Schlitz am Spielfeldrand wurde der Bereich unter den Füßen der Spieler beobachtet. Die Ballposition wurde mit Triangulation bestimmt.

Diese Lösung war schnell und hinreichend genau, allerdings gegenüber Fremdlicht sehr empfindlich, weil Reflexe nicht zuverlässig vom Ball unterschieden werden konnten.


Neue optische Ballerkennung

Master-Projekt

Im WiSe 24/25 wurde eine von Grund auf neue Ballerkennung realisiert, die von oben auf Spielfeld blickt und den nunmehr farbigen Ball lokalisiert. Details dazu finden sich in der entsprechenden Masterarbeit, einige Impressionen dazu im externen Wiki.

Weiterentwicklung

Solch ein Projekt ist natürlich nie fertig: Nach Abschluss der Masterarbeit wurden folgende Änderungen / Verbesserungen an der Ballerkennung vorgenommen:

Zeitpunkt Bereich Änderung
April 2025 Ballerkennung Geändert: Parameter der Farberkennung, um Fehlerkennungen durch Körperteile zu vermeiden.
Mai 2025 Kommunikation Neu hinzugefügt: Daten-Output via MQTT


Neue Parameter für die Farberkennung

Mit den ursprünglich in der Masterarbeit genutzten Parameter konnten ins Spielfeld ragende Körperteile fehlerweise als Ball erkannt werden. Eine nachfolgende Analyse mit 189 Testbildern von Körperteilen über dem Spielfeld wurden bessere Parameter ermittelt: Die Werte aus Tabelle 11 der Masterarbeit, Zeile "1,5%" sind diesbezüglich deutlich robuster, ohne dass die Erkennung des Balls beeinträchtigt wird.

Diagram Ergebnisse: Ball Ergebnisse: Körperteile
Ballerkennung farbparameter analyse.png Ballerkennung farbparameter analyse beispiel ball.png Ballerkennung farbparameter analyse beispiel mensch.jpg

MQTT-Output

Die Interprozesskommunikation zwischen den Software-Komponenten Ballerkennung, Spielsteuerung, SPS und Grafikausgabe erfolgt zur Zeit über eine selbstgeschriebene UDP-basierte Kommunikationsstruktur. In den letzten Jahren hat sich MQTT als Kommunikationsprotokoll in verteilten Systemen durchgesetzt. Deswegen soll auch die Software-Architektur des Kickers entsprechend modernisiert werden.

Die Ballerkennung wurde als erste Komponente um einen MQTT-Client ergänzt. Diese Erweiterung ist in der neuen Klasse output_mqtt.py enthalten. Die Ausgabe der erkannten Ballpositionen kann per Startargument von UDP auf MQTT umgestellt werden. Die Verbindungsdaten des MQTT-Brokers sind in der Einstellungsdatei settings.yaml hinterlegt.

Code

Der Code wurde im SVN-Repository in den Branch trunk eingepflegt und findet sich im Verzeichnis 020_Software/030_Ball_Detection.