Robot Design

In der Kategorie Robot Design geht es um die Strategie und den Arbeitsprozess in der Entwicklung von Roboter und Code. Hierbei ist das Ziel, dass das gesamte Team mechanische und programmtechnische Kompetenzen erwirbt. Außerdem fließen hier die Aufgabenauswahl, die Zeitplanung und die Verbesserungsleistung des Roboters über den Verlauf der Saison ein.

Arbeitsprozess

Zu Beginn der Saison treffen wir uns gemeinsam, um das neue Spielfeld aufzubauen und eine erste Auswahl an Aufgaben und deren Gruppierung zu treffen. Danach teilen wir uns nach Interessen grob in zwei Gruppen auf: Eine kümmert sich vornehmlich um die Programmierung und verfeinert in dieser Zeit vor allem den bereits bestehenden Code, die Konstruktionsgruppe entwickelt bereits erste Prototypen zur Lösung einiger Missionen und fängt an, diese zusammenzuführen. Diese Aufteilung ist aber nicht sonderlich strikt, so ist es oft der Fall, dass Teammitglieder, die zu Beginn ausschließlich in der Konstruktion tätig waren, später vornehmlich an den Programmen arbeiten. Nach ungefähr vier Wochen sind die ersten sogenannten Aufsätze (siehe Konstruktion) programmierbereit. Für diese kann das grundlegende Programmkonstrukt schon erstellt werden, während die Baugruppe die restlichen Aufsätze fertig baut. Etwaige im Testprozess gefundene Probleme werden durch Umbauten auch in dieser Zeit durchgeführt. Die ausführlichen Tests der Runden nach ihrer Zuverlässigkeit finden also gemeinsam mit Bau und Programmierung statt, um so bei Ungenauigkeiten alle möglichen Problemfelder abzudecken und dann gemeinsam eine Lösung zu entwickeln.

Strategie auf dem Spielfeld

Wir versuchen, während der Robot-Game Runde möglichst viel Zeit in Aktion auf dem Spielfeld zu verbringen, um so möglichst viele Punkte in kurzer Zeit zu erreichen. Denn während eines Durchgangs darf der Roboter beliebig oft in die Homezone zurückkehren und dort umgebaut werden, wobei die Zeit allerdings weiterläuft. Neben der Zeit spielt für uns auch Zuverlässigkeit eine große Rolle, da wir unsere technisch machbaren Punktzahlen auch unter teils ungünstigen Wettkampfbedingungen regelmäßig erreichen wollen. Dafür überlegen wir uns zu Beginn der Saison, welche Aufgaben das beste Aufwand-Schwierigkeit-Punkteverhältnis haben und erstellen mithilfe dessen eine Rundenplanung. Dabei handelt es sich um eine Gruppierung der Aufgaben sowie der Wege dorthin, sowie Orte, an denen eine Ausrichtung möglich ist. Außerdem wird hier die Reihenfolge der Aufsätze festgelegt. Dabei fließt auch mit ein, wie wir unsere Fahrwege zu den Aufgaben zuverlässig gestalten und wo wir etwaige Ungenauigkeiten durch eine Ausrichtung an festen Spielfeldelementen wie Banden oder Missionsmodellen ausgleichen können. Dieses Jahr haben wir zum Beispiel dabei festgestellt, dass alle Aufgaben innerhalb der 2:30 Minuten Zeitbeschränkung gut lösbar sind, weshalb wir die maximal erreichbare Punktzahl von 410 Punkten angestrebt haben und diese nun technisch auch erreichen können.

Konstruktion

Um die Bearbeitungszeit für die Aufgaben während eines Durchlaufs effizient nutzen zu können,  haben wir uns entschieden, unseren Roboter in einen Baseroboter, der alle Sensoren, Motoren sowie die Recheneinheit enthält, sowie Aufsätze zu unterteilen. Dabei handelt es sich um selbstentwickelte, austauschbare Werkzeuge mit ansteuerbarer Mechanik. Diese werden von oben auf dem Roboter fixiert und haben die Aufgabe, Missionen auf dem Spielfeld zu lösen und mit ihnen zu interagieren. Sie lassen sich während dem Run leicht wechseln, wodurch wir Zeit sparen und viel mehr Aufgaben lösen können, als mit einem festen Roboter. Die Kraftübertragung erfolgt dabei über Zahnräder an der Oberseite des Baseroboters, die dann an der Unterseite der Aufsätze einrasten.

Als Grundplattform nutzen wir den neuen Lego Roboter „Spike Prime“, wodurch wir unseren Baseroboter kompakter gestalten können. Außerdem sind die neuen Motoren schneller und die Sensoren weniger fehleranfällig. Ein weiteres wesentliches Merkmal unseres Roboters ist die Positionierung der Lichtsensoren möglichst nah an den Rädern für schnelles Linienfolgen und Ausrichten sowie ihre Abschirmung von Außenlicht für erhöhte Genauigkeit. Die gelochte Oberseite unseres Roboters ermöglicht eine stabile und gleichzeitig vielseitige Befestigung von Aufsätzen.

Programmierung: Der Nutzung von Spike Prime bietet einen weiteren Vorteil, den nativen Support von Python, wodurch das Programmieren im Vergleich zum Vorgänger sehr viel effizienter wird. Wir nutzen allerdings nicht die einsteigerfreundliche, aber limitierende, offizielle Programmierumgebung von Lego, sondern arbeiten mit Visual Studio Code, weil dadurch schnelleres Programmieren und Versionsmanagement  möglich ist. Hierzu nutzen wir git über github, wo unser Code auch öffentlich zugänglich ist, sodass andere Teams problemlos auf Python umsteigen oder sich Inspiration holen können. Zu den besonderen Features unserer Programmierung zählt die Nutzung eines dynamischen, also sich selbst einstellenden PID-Systems. Die PID-Regler ermöglichen ein besonders genaues Fahren, sind aber von der aktuellen Geschwindigkeit abhängig. Allerdings haben alle unsere Fahrmethoden eine Beschleunigung und Verlangsamung, weshalb die Regler bei statischen Werten nur zu bestimmten Zeiten optimal eingestellt wären. Durch die automatische Anpassung der Werte umgehen wir dieses Problem und können äußerst genau und schnell fahren. Außerdem können wir mehrere Motoren gleichzeitig und unterschiedlich ansteuern, was nativ nicht möglich ist, da der Spike Prime einen Einkernprozessor verwendet. Hierzu zerlegen wir die Instruktionen in eine Liste, die dann nacheinander abgearbeitet wird, sodass wir auch im Fahren unsere Aufsätze ansteuern können. Dies führt zu einer Geschwindigkeitssteigerung, da wir für einige Aktionen nun nicht mehr anhalten müssen.

Kommentare sind geschlossen.