R-ZWEI KICKERS – Das RoboCup SPL Team der Hochschule Kaiserslautern

Darum 🙌

HS KL geht zur RoboCup German Open 2021!

Wer sind wir, die RZWEI-KICKERS ?

Wir sind ein gemischtes Team von Berufsschülern, Studierenden, Professoren, Industriepartnern – gegründet 2020 – und wir freuen uns jederzeit über Neuzugänge!

  • Adrian (Prof. Informatik): Hybride KI, Projektleitung
  • David (AI, 5. Sem.): Bilderkennung
  • Felix (AI, 5.Sem.): Teach-In, Optimierung Steuerung
  • Jonas (BBS KL): Cards, Deployment
  • Markus (AI, 5.Sem): Agiles Testen, Optimierung
  • Thomas (MI, 5. Sem): “the Trainer”, Code Quality
  • Yannis (AI., 1. Sem): RobCup Junior League Weltmeister (unser Joker)
  • und als unser Berater: Philipp (abat+): für den Transfer der Inhalte auf Industrie 4.0 und KI Projekte

Wir arbeiten agil, Scrum mit zwei-Wochen Sprints. Unsere “daily standups” sind jeden Morgen um 10.oo – 10.15 Uhr im Discord https://discord.gg/gTzSkj2 . Unsere Sprint Reviews sind öffentlich, Mittwochs, 14.oo – 15. Uhr und werden hier angekündigt.

Warum wir uns “R-ZWEI KICKERS” nennen?

Was findet ihr auf dieser Webseite? So ziemlich alles: worum es geht, wie wir arbeiten, welche Arbeitsmaterialien wir für neue Team Mitglieder vorbereitet haben – und ganz unten auf der Seite eine Liste der aktuellen Projekte und offenen Arbeiten. Viel Spaß beim Lesen😉

Worum geht es? Der RoboCup soll die Robotik und KI Forschung fördern und das vor einem öffentlichen Publikum. Ein Fußball spielender Roboter mag  wie eine eher wissenschaftliche Herausforderung aussehen, aber man muss dabei eine Fülle von Standard Problemen – wie man sie aus der heutigen Industrie kennt – lösen, und ist damit ein guter Einstieg in die Welt der KI.

Unser Kooperationspartner abat+ unterstützt uns deshalb bei Projekt- und Bachelor-Arbeiten in den Feldern robuste Bildverarbeitung, innovative Roboter Programmierung und Prozessoptimierung in der diskreten Fertigung, um neue Geschäftsfelder für die Industrie 4.0 zu erschließen.

Unsere Naos 😃

Macht sie nicht kaputt!

“kick their asses!”

Achtung, die neuen Corona Regeln beachten.

Unsere drei Roboter Regeln😎

Was ist die RoboCup Standard Platform League?

Der Robot Soccer World Cup ist die Fußball WM für Roboter. Der erste Wettkampf wurde 1997 bestritten und heute werden neben Fußball auch viele andere Wettkampf Arten ausgefochten, wie z. Bsp. auch die RoboCup Rescue League, bei dem die Roboter auf eine Rettungsmission entsandt werden.

Beim RoboCup lassen verschiedene Teams aus aller Welt ihr 5 Roboter in 2 Mannschaften gegeneinander wetteifern und dabei um den Fußball kämpfen, den Gegner austricksen und Tore schießen.  Die “Standard Platform League” (SPL) verwendet ausschließlich den gleichen Roboter, den NAO v6.

Die kleinen Roboter müssen sich vollständig autonom über das Spielfeld bewegen und dürfen nur wenig miteinander kommunizieren, um dennoch eine Team Strategie zu entwickeln, die zum Sieg führt. Dabei sollen sie trotz allem unabhängig voneinander agieren können.

Arbeiten mit dem NAO



Arbeitsumgebung

Der kleine humanoide Roboter NAO ist unser Spieler auf dem Spielfeld und wir sind sein Trainer.
Bei uns wird er sowohl mit C++ als auch mit Python programmiert. Dabei wird Python bei der Bilderkennung, wie zur Erkennung des Balls und des Tors, verwendet und C++ für den ganzen Rest. Darunter fällt zum Beispiel seine Bewegung über den Fußball Rasen.

Voraussetzung hierfür ist die im Projekt bereits mitgelieferte IDE CodeLite und das Betriebssystem Ubuntu 18.04 LTS.

Außerdem gibt es auch einen Simulator. Dann muss man nicht immer vor Ort sein um seinen Code zu testen. Der Simulator ‘SimRobot’ ist sogar von einem mehrfachen Siegerteam des RoboCup (B-Human – Uni Bremen und DFKI) entworfen. 


Beispiel Code

Wie gut müsst ihr programmieren können? Beantwortet es euch selbst.

Unten seht ihr ein Code Beispiel. Wenn ihr in der Lage seid, nachzuvollziehen was dort passiert, dann seid ihr bestens vorbereitet.

Sollte der NAO umfallen muss er laut Regelwerk selbst in der Lage sein wieder auf zu stehen. Der folgende Code erreicht das.

void FallEngine::safeFall(FallEngineOutput& output) const { // set stiffness of each joint for(int i = 0; i < Joints::numOfJoints; i++) output.stiffnessData.stiffnesses[i] = 10; // falling backwards ? sit up. if(output.fallingBackwards) { MotionUtilities::sit(output); } // falling forward ? stand up. else if(output.fallingForward) { MotionUtilities::stand(output); } } Weiterlesen