Firmware

Nachdem die Roboterhardware und die elektronischen Komponenten des Roboters zusammengebaut wurden, fehlt noch ein Teil, um den Roboter zum Leben zu erwecken: Die Firmware, die das Verhalten des Roboters bestimmt. Sie verarbeitet die an den Roboter gesendeten Funkbefehle, steuert die Motoren, löst die Kicking-Schaltungen aus und sammelt Informationen über Fehler in verschiedenen Teilen des Roboters. Diese Aufgaben sind auf die Hauptplatine, die Motorplatinen und die Kickerplatine verteilt. Da dies eine Koordination zwischen den Boards erfordert, verwenden wir einen gemeinsamen CAN-Bus für die Kommunikation.

Die Verarbeitung auf jedem Board wird entweder von einem STM32F407 oder einem STM32F303 Mikroprozessor übernommen. Anstatt das Rad neu zu erfinden und ein weiteres Embedded-Betriebssystem zu schreiben, wurde die Firmware auf der Grundlage von ChibiOS implementiert. ChibiOS ist ein kleines Betriebssystem für eingebettete Geräte, das die meisten Low-Level-Hardware-Details abstrahiert und so die Entwicklung erheblich erleichtert. Die Programmierung der Boards erfordert zusätzliche Tools: Eine JTAG-Verbindung zwischen dem Roboter und dem Computer des Entwicklers wird von unserem JTAG-Programmer namens ERPROG hergestellt. Das eigentliche Flashen der Firmware erfolgt dann mit OpenOCD, das auch eine wertvolle Unterstützung beim Debuggen der Firmware direkt am Roboter bietet.

Wir verwenden einen einfachen Trick, um die Erkennung von Problemen zu erleichtern: Alle Boards sind mit einem „Heartbeat“ ausgestattet, einer rhythmisch blinkenden LED, die einen optischen Hinweis darauf gibt, ob die Firmware ordnungsgemäß läuft. Hinzu kommen eine LED zur Fehlersignalisierung und weitere Status-LEDs auf der Hauptplatine. Jede Platine verfügt außerdem über einen Watchdog des Mikroprozessors, der die Platine zurücksetzt, wenn sie stecken bleibt, was wiederum dafür sorgt, dass die Roboter auf dem Spielfeld nicht stecken bleiben.

Main Board

Die Hauptplatine ist das Herzstück des Roboters und vereint eine Vielzahl verschiedener Aufgaben:

  • Funkkommunikation von und zum PC
  • Bereitstellung der Befehle für die einzelnen Motorboards
  • Sammeln auftretender Fehlercodes der einzelnen Boards
  • Debugging mittels SD-Karte
  • Batteriespannungsüberwachung

Motor Boards

Jedes Motorboard kontrolliert jeweils einen Motor, was einiges an Arbeit bedeutet:

  • Messen der Motorströme
  • Messen der Motordrehzahlen
  • Steuern des Motors basierend auf mathematischen Modellen und gängiger Reglertheorien

Kicker Controller

Das Kicker Controller steuert die eigentliche Schusselektronik an, um Bälle zu kicken:

  • Erkennen des Balls mittels Infrarot-Lichtschranke
  • Auslösen des entsprechenden Schusses