DE EN


B-Human Logo

Das Projekt B-Human nimmt seit 2009 an den Roboterfußballwettbewerben des RoboCup und dessen regionalen Ablegern in der Standard Platform League teil. In dieser verwenden sämtliche Teams den humanoiden Roboter Nao der Firma SoftBank Robotics, um gleiche Hardwarevoraussetzungen zu gewährleisten. Somit konzentriert sich die Arbeit des Projektes vornehmlich darauf, die Software der Roboter weiterzuentwickeln und zu verbessern. Dies umfasst diverse verschiedene Aufgabenfelder, unter anderem Bilderkennung, Lokalisierung sowie autonome Agenten. Dem Projekt B-Human gelang es, aufbauend auf der Software der Vorgänger, bisher neunmal die RoboCup GermanOpen für sich zu entscheiden. Auch international ist B-Human äußerst erfolgreich: Insgesamt konnten wir sieben Weltmeistertitel nach Hause bringen, den letzten 2019 aus Sydney.

Aufgrund der diesjährigen Corona-Pandemie und den damit einhergehenden Kontaktbeschränkungen, musste der Robocup für dieses Jahr leider abgesagt werden. Die German Open in Magdeburg wurden in den Spetember verschoben. Da leider auch der Projekttag nur digital stattfinden kann, haben wir stattdessen ein paar Videos für euch gedreht, welche einen Einblick in die diversen Tätigkeitsbereiche des Projektes geben sollen. Wenn ihr Interesse habt, könnt ihr euch auf unserem Kanal auch richtige Fußballmatches anschauen, die wir bei vergangenen Wettbewerben aufgenommen haben.

German Open Replacement Event 2022

Vom 11.04.2022 bis zum 17.04.2022 hat das Projekt B-Human am GORE 2022 teilgenommen, welches in der Handelskammer Hamburg stattfand. Neben dem RoboCup im Juli ist das GORE definitiv einer der Höhepunkte während des Projektes. Teilgenommen haben nicht nur Teams aus ganz Deutschland, sondern auch aus Italien, Australien und Irland, welche von den vor Ort anwesenden Teams Roboter gestellt bekamen und tatkräftig unterstützt wurden. GORE steht für German Open Replacement Event, da die German Open bedingt durch die Corona-Pandemie in den letzten Jahren nicht wie gewohnt stattfinden konnten.

Nach zweieinhalb Tagen Setup begannen für B-Human am Freitag die Spiele. Obwohl es während des Turniers noch jede Menge Code zu verbessern und Bugs zu fixen gab, liefen die Spiele von Anfang an hervorragend und unsere NAOs konnten sich ohne Niederlage und gegnerische Tore den Gesamtsieg erspielen!

Wir alle sind sehr stolz auf unsere Leistung und danken vor allem unseren Betreuern Tim Laue und Thomas Röfer sowie den B-Human Alumni, welche sich so aktiv in das Projekt einbringen und solche Erfolge erst ermöglichen! Trotz einiger krankheitsbedingter Ausfälle bei den Projektteilnehmern gab es so genug Hände um auch vor, zwischen und nach den Spielen einen reibungslosen Ablauf zu ermöglichen.

Bis zum RoboCup haben wir nun noch einiges zu verbessern, um dann hoffentlich an diesen Erfolg anknüpfen zu können.

Koordiniertes Passen und Positionieren

von Jo Lienhoop

Ein Roboter im Ballbesitz muss sich permanent zwischen verschiedenen Aktionen entscheiden:

  • in eine Richtung dribblen,
  • zu einem Mitspieler passen,
  • oder auf das Tor schießen.

Dafür habe ich Bewertungsfunktionen konstruiert, um Torschuss und Passmöglichkeiten gegeneinander abwägen.

Intuitiv wird abgeschätzt:

  • “Wie wahrscheinlich ist es, dass der Pass ankommt?”,
  • “Wie wahrscheinlich ist es, dass der Torschuss trifft?”.

Generiert man Bewertungen von 0 bis 1 für Positionen eines Rasters auf dem Feld, so kann man diese farblich von dunkel bis hell interpolieren und als Heatmap visualisieren.


Eine typische Spielsituation aus dem Simulator
Das schwarze Team ist im Ballbesitz greift das Tor des blauen Teams an. Doch sollte der Roboter direkt auf das Tor schießen, oder zu einem der beiden Mitspieler passen?

Weltmodell des ballspielenden Roboters überlagert mit Heatmap der Bewertungsfunktion für Passmöglichkeiten.
Schwarze Rechtecke sind Mitspieler und blaue Rechtecke sind Gegner. Helle Bereiche sind offene Passziele, während dunkle Bereiche von Gegnern blockiert werden.

Weltmodell des ballspielenden Roboters überlagert mit Heatmap der Bewertungsfunktion für Torschussmöglichkeiten.
Helle Bereiche haben einen großen freien Öffnungswinkel auf das Tor, während dunkle Bereiche von Gegnern oder Torpfosten blockiert werden oder weit vom Tor entfernt sind.

Auswertung der beiden kombinierten Bewertungsfunktionen als Teil der Strategie im Verhalten.
Ein direkter Torschuss des ballspielenden Roboters hat die geringste Erfolgswahrscheinlichkeit. Allerdings kann der obere Mitspieler mit einer geschätzten Wahrscheinlichkeit von etwa 72 % den Pass empfangen und anschließend ein Tor schießen. Deshalb wählt das Verhalten diese Passmöglichkeit als Aktion aus.

Im nächsten Schritt sollen sich die Spieler “freilaufen” oder “anbieten” können, wenn sie gerade nicht am Ball sind. Dafür positionieren sie sich so, dass ihre Bewertung maximiert wird und somit für einen Pass mit anschließendem Torschuss attraktiv macht.

PenaltyMarkClassifier

von Finn M. Ewers und Simon Werner

Ziel dieses Projektes ist es, Strafstoßpunkte mit einem neuronalen Netz zu erkennen, um die Lokalisierung der Roboter auf dem Spielfeld zu verbessern. Penalty Marks werden bisher schon recht zuverlässig mittels konventioneller Bildverarbeitungsmethoden erkannt. Allerdings müssen Kandidatenregionen dafür ziemlich konservativ gewählt werden, um diese erkennen zu können, wodurch recht selten überhaupt Strafstoßpunkte erkannt werden.

Wir haben einen Datensatz von über 35.000 Bildern erstellt und ein convolutional neural network darauf trainiert, welches auch auf Kandidatenregionen in größerer Entfernung sehr gute Ergebnisse liefert. Im Gegensatz zum vorherigen Erkenner, kann unser Modul Strafstoßpunkte bis zu einer Entfernung von 3,5m zuverlässig erkennen. Zusätzlich ist geplant, das Modul welches die Kandidatenregionen zur Verfügung stellt so anzupassen, dass man auch im Nahbereich mehr Kandidaten bekommt.


Abbildung: Lokalisierung im Raum


Video: Verbesserte Reichweite des Strafstoßpunkterkenners

Klassifikation von Linienkreuzungen

von Laurens Schiefelbein

Ein Mittel damit die Roboter ihre Position auf dem Spielfeld kennen, ist die Erkennung von Linienkreuzungen. Momentan erfolgt dies über den IntersectionsProvider, welcher Schnittstellen von Feldlinien erkennt. Die momentane Klassifikation dieser erkannten Kreuzungen ist bisher jedoch noch relativ unzuverlässlich.


Abbildung: Klassifizierung von Linienkreuzungen

Das Ziel dieses Projektes ist, den aktuellen Klassifikator, welcher konventionelle Bildverarbeitungsmethoden verwendet, durch einen Machine Learning Klassifikator zu ersetzen. Hierbei wird ein Convolutional Neural Network trainiert, welches Kandidatenregionen von Linienkreuzungen aus dem IntersectionsProvider bekommt und diese in drei verschiedene Klassen einteilt: T-Kreuzungen, L-Kreuzungen und X-Kreuzungen.


Abbildung: Jeweils ein Trainingsbild für die drei Klassen

Die Trainingsdaten können aus den Logs von vorherigen Turnieren und Testspielen extrahiert werden, was das Sammeln der mehreren tausend Bildern erheblich vereinfacht.

Erkennung von Mit- und Gegenspielern auf Basis von Bildverarbeitungsmethoden

von Florian Scholz und Lennart Heinbokel

Genau wie im regulären Fußball ist es auch beim Roboter-Fußball von Vorteil, wenn man als Spieler sehen kann, wer die Mit- und wer Gegenspieler sind. Bei B-Human wurden die eigenen Mitspieler in der Vergangenheit jedoch nicht mit Bildverarbeitungs-Methoden identifiziert. Roboter werden zwar mittels Deep Learning Verfahren in den Kameradaten lokalisiert, es wird jedoch zu diesem Zeitpunkt nicht klassifiziert, ob es sich bei dem erkannten Roboter um einen B-Human oder einen des gegnerischen Teams handelt. Dies wurde in Vergangenheit bestimmt, indem jeder Roboter allen Teammitgliedern über Netzwerkkommunikation mitteilt, an welcher Position er sich aktuell befindet.

In Vergangenheit konnten mit diesem Ansatz überzeugende Resultate erzielt werden. Die diesjährig neu dazugekommenen Regeln der Roboter-Fußball Weltmeisterschaft schränken die Möglichkeiten der intra-Team-Kommunikation jedoch stark ein, was dazu führt, dass dieser Ansatz in Zukunft nicht weiterverwendet werden kann. Aufgrund dieser Regeländerung wurde während dieses Projekts ein Computer-Vision-basierter Ansatz implementiert, der auf Basis des Bild-Ausschnitts eines erkannten Roboters entscheidet, ob es sich bei diesem um einen Mitspieler, einen Feind, oder auch um eine Fehlerkennung - ein „False Positive“ - des Roboter-Erkenners handelt.


Abbildung 1: Architektur OppoNet

Die Klassifizierung der Trikot-Farben ist jedoch weniger trivial als es sich zunächst anhört, denn die Farben der Roboter sind auf den kleinen Ausschnitten, die in unterschiedlichsten Lichtbedingungen aufgenommen wurden und teilweise starke Bewegungsunschärfe aufweisen, selbst für uns Menschen gar nicht so leicht zu erkennen. Trotzdem ordnet das in TensorFlow implementierte Modell derzeitig ~95% aller Beispiele in den Test-Daten der richtigen Klasse zu. In den folgenden Abbildungen sind einige Beispiele für Eingangsdaten und Ausgabe des Modells zu sehen.


Abbildung 2: Beispiel für die Vorhersage des Modells

Abbildung 3: Beispiel für die Vorhersage des Modells

Abbildung 4: Beispiel für die Vorhersage des Modells

Neben der Entwicklung des eigentlichen Modells wurde sich mit der Akquise, dem Labeling und der Aufbereitung der benötigten Daten beschäftigt. Um Beispiele für das maschinelle Lern-Problem zu erzeugen, wurden bis dato 15 tausend Bilder von Robotern verschiedener RoboCup Teams aus Aufzeichnungen von RoboCup Wettbewerben der vergangenen Jahren verwendet. Die verwendeten Daten wurden dafür mit der Data Versioning Control Bibliothek versioniert und gespeichert.

Visual Referee Challenge

von Michelle Gusev, Ayleen Lührsen und Sina Schreiber

Im Rahmen des RoboCups finden auch immer wieder sogenannte Technical Challenges statt. Diese sind losgelöst von den normalen 5vs5 Spielen und können die Implementierung von gänzlich anderen Funktionen und Verhaltensweisen nötig machen. Eine der diesjährigen Challenges ist die Visual Referee Challenge, bei welcher der Roboter einem menschlichen Schiedrichter gegenübersteht und von diesem ausgeführte Gesten einer Situation im Spiel und dem entsprechenden Team zuordnen muss, in dem er die Pose imitiert und akkustisch ausgibt. Beispiele dafür wären zum Beispiel: “Goal Left Team” oder “Penalty Kick Right Team” (Elfmeter).

Wir haben uns bei dieser Aufgabe bewusst dagegen entschieden, ein eigenes Neuronales Netz zu trainieren, welches die Posen erkennt, da dieses mit viel Aufwand bei möglichst vielfältigen Trainingsdaten und dem Labeln verbunden gewesen wäre. Stattdessen verwenden wir MoveNet. Dies ist ein Netz, welches auf Bildern und Videos Personen und die Position ihrer wesentlichen Körperteile erkennt. Diese Positionen der Gelenke verwenden wir dann, um anhand des Abstands und Winkels von Schulter-Ellenbogen-Handgelenk zu überprüfen, ob die aktuelle Haltung des Schiedrichters einer der vorgegebenen Posen entspricht. Dafür wurden für jede der Posen mehrere Regeln bezüglich der Abstände und Winkel je zweier Gelenke hinterlegt. Noch zu erledigen der Einbau einer “Gedächnisfunktion”, welche es uns ermöglicht die Erkennung zu stabilisieren, da die erkannten Keypoints derzeit noch oft umherspringen oder zittern. Dies muss bis zum RoboCup noch ausgeglichen werden.

Verlassen illegaler Bereiche

von Jo Lienhoop und Sina Schreiber

Während eines RoboCup Spiels existieren Bereiche auf dem Feld, die die Roboter nicht betreten dürfen. Ein Betreten dieser Bereiche hat eine Zeitstrafe zur Folge, welche verhindert werden soll. Unter anderem dürfen laut Regelwerk nicht betreten werden:

  • die gegnerische Hälfte, während eines Anstoßes
  • der Mittelkreis, während eines gegnerischen Anstoßes
  • der eigene Strafraum, von mehr als drei Spielern des eigenen Teams
  • der Ballbereich, während eines “Einkicks” oder Freistoßes des gegnerischen Teams

Ein illegaler Bereich wird in der Weltansicht der Roboter als rotes Rechteck visualisiert. Stellt der Roboter fest, dass sich seine aktuelle Position in einem illegalen Bereich befindet, verlässt er diesen seitlich, indem er entlang eines Potentialfeldes läuft. Ist ein Roboter kurz vor einem illegalen Bereich, so bleibt dieser einfach stehen und betritt den Bereich nicht. Dabei ist zu beachten, dass die 5 cm breiten Feldlinien Teil des jeweiligen Bereichs sind und von uns um einen Pufferbereich von 20 cm erweitert wurden. Wollte der Roboter zuvor zum Ball gehen, richtet er sich nach Verlassen des Bereiches so aus, dass er diesen stehend beobachten kann und direkt hinläuft, sobald der Ball freigegeben wurde.