Software

Wir benutzen ROS als Middleware auf unseren Robotern. Dadurch ist unsere Software in einzelne Pakete unterteilt, die über asynchrone Nachrichten miteinander kommunizieren. Der Code ist in Python und C++ geschrieben und auf Github zu finden.

Vision

In den letzten Jahren haben wir Fully Convolutional Neural Networks für unsere Ballerkennung genutzt. In diesem Jahr sind wir für die Ball- und Torpfostenerkennung auf YOLO mit dem Darknet-Framework umgestiegen, wodurch wir deutlich bessere Ergebnisse erzielt haben. Andere Merkmale auf dem Feld, besonders Linienpunkte und andere Roboter, erkennen wir mit konventionellen Algorithmen. Der Feldrand wird mithilfe eines Grünfarbraums bestimmt. Weiße Punkte unterhalb des Feldrands werden als Linienpunkte klassifiziert und Hindernisse vor dem Feldrand werden je nach Farbe als gegnerische oder verbündete Mitspieler erkannt.

Um mit natürlichem Licht umzugehen, wird der grüne Farbraum dynamisch angepasst, indem fehlende Farben unter dem Feldrand live zum Farbraum hinzugefügt werden.

Nach dem Erkennen der Objekte auf dem Bild werden diese von den Koordinaten auf dem Bild mithilfe von direkter Kinematik und der Projektionsmatrix der Kamera in den Raum vor den Roboter projiziert.

Navigation

Zur Navigation benutzen wir das Paket move_base, das von ROS bereitgestellt wird.

Für die Lokalisierung haben wir zunächst AMCL (Advanced Monte Carlo Localization), das auf Particle Filtern basiert, ausprobiert. Da AMCL normalerweise auf den Daten eines Laser Scanners arbeitet, funktionierte es aber nicht sehr gut mit unseren Linienpunkten. Daher arbeiten wir momentan an einem auf Particle Filtern basierendem Ansatz, der Linienpunkte und Torpfosten verwendet.

Verhalten

Unser Verhalten funktioniert mit dem Dynamic Stack Decider (DSD), einer zustandsorientierten Alternative zu Behavior Trees, und benutzt Daten des Game Controllers, der Lokalisierung und der Vision um das Verhalten des Roboters zu bestimmen. Es ist in Kopf- und Körperverhalten aufgeteilt.

Hardware Control Manager

Die HCM (Hardware Control Manger) stellt eine Abstraktion vom zweibeinigen Roboter dar, indem er die Befehle des Laufens oder des Schusses unterbricht, wenn der Roboter fällt oder hochgehoben wird und stattdessen die passenden Reaktionen (wie Aufstehen) abspielt.

Walking

Unser Laufen ist das Quintic Walk, ein Open Loop Walking basierend auf Quintischen Splines.