Soccer Software
Von Programmen und Daten.
Die Software ist neben der Elektronik-, Hardware- und Strategieabteilung der vierte Hauptbestandteil unseres Teams. Die Aufgabe der Software ist es der Strategieabteilung eine Möglichkeit zu geben Befehle an die Roboter zu senden, um ein möglichst flüssiges und Taktisches Spiel zu ermöglichen.
Aber wie kann ein Computerprogramm diese Funktion erfüllen? Bevor wir uns mit den Einzelheiten befassen, sollten wir zunächst auf die allgemeinen Ziele der Software schauen.
Ziele der Software
Um an der RoboCup Small-Size League teilzunehmen, benötigen wir eine Software, die die Roboter effektiv koordiniert. Dazu muss die Software alle von der Liga bereitgestellten Daten empfangen und verarbeiten, Aktionen für die Roboter berechnen und schließlich die entsprechenden Befehle an die Roboter senden. Angesichts der Komplexität dieses Prozesses wird er in mehrere Module aufgeteilt, von denen ein großer Teil von der Strategie übernommen wird.
Das Gesamtlayout und der Datenfluss zwischen diesen Modulen sind in der nachstehenden Grafik dargestellt. Eine detaillierte Beschreibung der einzelnen Module ist weiter unten zu finden.

Software Module
Modul: python_bindings
Strategie
Um eine schnelle Entwicklung im Bereich der Strategie zu ermöglichen, ist die Verwendung von interpretierten Sprachen wie Python und Lua unerlässlich. Da unsere Hauptsoftware jedoch in C++ geschrieben ist, stellt die Gewährleistung einer nahtlosen Kommunikation zwischen der Kernsoftware und der Strategieschicht eine große Herausforderung dar. Um dieses Problem zu lösen, haben wir mit nanobind eine Schnittstelle entwickelt, die es der Strategie-Schicht ermöglicht, die notwendigen Funktionsaufrufe innerhalb unserer Software zu tätigen.
Modul: robot_control
Navigation
Die Navigation ist eine entscheidende Komponente, damit die Roboter ihre Ziele erreichen können. Diese Aufgabe übernimmt der Planer, der den effizientesten Weg zwischen zwei Punkten berechnet und dabei Hindernisse und andere sich bewegende Roboter berücksichtigt. Außerdem bestimmt er die optimale Geschwindigkeit und Drehung der Roboter, um die Zeit zu minimieren, die sie zum Erreichen ihrer Ziele benötigen.
Modul: ssl_interface und robot_interface
Kommunikation
Um an dem Wettbewerb teilnehmen zu können, muss unser System Daten vom Bildverarbeitungssystem empfangen und Befehle des Schiedsrichters befolgen. Diese Aufgaben werden von den Kommunikationsmodulen übernommen. Sie wandeln die ein- und ausgehenden Daten in die erforderlichen Formate um. Außerdem verwalten diese Module die Übertragung und den Empfang von Befehlen zwischen unserem System und den Robotern.
Modul: luhviz
Visualisierung
Um die Aktionen unserer Software zu überwachen und zu verstehen, wie unsere Strategie ausgeführt wird, benötigen wir eine Visualisierung des Spielfeldes zusammen mit zusätzlichen Daten. Dies wird durch das Modul „luhviz“ bewerkstelligt, das verschiedene Steuerelemente und Datenvisualisierungen bereitstellt. Die Visualisierung wurde mit ImGui erstellt und ist vollständig anpassbar, so dass wir sie nach unseren Bedürfnissen gestalten und verändern können.
Modul: game_data_provider und transform
Datenspeicherung & Filterung
Das Modul „game_data_provider“ dient als zentraler Datenspeicher für unsere Software. Dieses Design minimiert Abhängigkeiten über Modulgrenzen hinweg und bietet einen zentralen Ort für die Verarbeitung und Filterung von Daten. Die Filterung ist entscheidend, um aus den rohen positionsbasierten Eingaben, die wir erhalten, zusätzliche Erkenntnisse zu gewinnen, z. B. Roboter- und Ballgeschwindigkeiten.
Modul: config_provider
Konfigurationssystem
Das Modul „config_provider“ dient als zentrale Drehscheibe für die Verwaltung von Konfigurationen innerhalb der Software. Es stellt sicher, dass alle Komponenten Zugriff auf konsistente und aktuelle Konfigurationsdaten haben. Durch die Zentralisierung der Konfigurationsverwaltung vereinfacht dieses Modul das Einstellen und Auslesen von Konfigurationswerten und ermöglicht deren Einstellung über unsere Visualisierung „luhviz“.
Unsere Software ist Open Source!
Im Rahmen der Open Source Challenge des RoboCups 2023 haben wir unsere Software komplett auf GitHub veröffentlicht. Open Source for the Win! Schaut euch dort also gern die einzelnen Module an.
Das Software-Team

Tim Füchsel
Mitglied seit Mai 2022

Sebastian Knackstedt
Mitglied seit Oktober 2021

Malte Sparenborg
Mitglied seit Januar 2023

Fabrice Zeug
Mitglied seit November 2019

Til Jacob
Mitglied seit November 2024

Andreas Mückl
Mitglied seit November 2024

Justus Gerken
Mitglied seit November 2024