SUMO-Roboter Umsetzung an NASREM orientiert
(EN google-translate)
(PL google-translate)
Teillösungen
SUMOBOT4.zip - LED-Klasse, test001_LEDs.cpp.SUMOBOT5.zip - TIMER1-Klasse, test001_ZEIT.cpp, Lauflicht mit Timer1, 1/3 Sekunde pro LED.
Anhand der prinzipiellen Struktur von NASREM und dem Umsetzungsbeispiel TURTLE, soll ein SUMO-Robot programmiert werden:
Bild 0-1: Prinzipielle Struktur von NASREM / NASREM stark vereinfacht.
turtle006.zip - Grundlegende Architektur von TURTLE als Referenz (vergl. Kapitel 5 / 5.4).
Verfeinerung der Architektur an NASREM orientiert und passend zu der geforderten Aufgabe:
Bild 0-2: Möglicher Entwurf der Softwarearchitektur.
Bei obigem Entwurf bezieht sich das Zustandsübergangsdiagramm auf eine sehr hohe Abstraktionsebene. Es wäre vorstellbar auch eines unter verwendung einer niedrigeren Ebene zu verwenden.
Übung
Die folgenden Darstellungen verstehen sich als Anregungen, aus denen sich viele Varianten ableiten lassen.
Es werden immer wieder erarbeitete Levels miteinander vergleichen und gemeinsam optimiert.
Einstieg in die Entwicklung bietet Kapitel 5.1, 5.2, 5.3 und 5.4.
Entwickeln Sie die Software für einen SUMO-Ringer.
Arbeiten Sie sich dabei langsam die Abstraktionsstufen hoch und erstellen für jede Ebene eine weitere Version, die zunächst getestet und optimiert wird, bevor zur nächst komplexeren Variante übergegangen wird:
|
HINWEISE zum Vorgehen:
|
Timer 1 kann gleichzeitig als PWM-Geber und Tick-Geber für eine Uhr verwendet werden (vergl. turtle006.zip).
Klassen einer Ebene können über Interfaces zusammengefaßt werden.
Klassen, die in Interfaces zusammengefaßt sind, können in Arrays gesammelt werden.
Befehle / Verhalten kann über solche Arrays ausgewählt werden (Realisierung eines Zustandsdiagramms).
LERNEN: Parametrisch (wie stark muß ich schieben, damit der Gegner sich bewegt), strukturell: wie flüchte ich am geschicktesten.