kramann.info
© Guido Kramann

Login: Passwort:










5.10 SUMO-Roboter Umsetzung an NASREM orientiert

5.10 (EN google-translate)

5.10 (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:



Prinzipielle Struktur von NASREM / NASREM stark vereinfacht.

Bild 5.10-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:

Möglicher Entwurf der Softwarearchitektur.

Bild 5.10-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:

  • Einfacher Reflexagent
  • Regel basierter Reflexagent (Wenn Räder blockiert, dann schnell weg usw.)
  • Regel basierter Reflexagent mit Wissen über Umwelt und inneren Zustand (Eigene Position / Stärke des Gegners usw.)
  • Lernender Regel basierter Reflexagent mit Wissen über Umwelt, inneren Zustand und Erfahrung.

HINWEISE zum Vorgehen:

  • Nach grundlegenden Tests werden die Sensoren und Aktoren über Singleton-Klassen zugreifbar gemacht. (Ebene 1)
  • Zustände und Manöver werden wiederum durch übergeordnete Klassen bzw. deren Methoden repräsentiert. (Ebene 2)
  • Aus Zuständen können Situationen erschlossen werden (Gegner in der Nähe, nahe am Rand usw.), In untergeordneten Zustandsdiagrammen können mehrere Methoden abhängig von Situationen verknüpft werden. (Ebene 3)

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.