Kurzanleitung zum Soccersimulator

Die Befehle und Skripte stehen im Roboterlabor (hawk, kite, buzzard, eagle, falcon) im normalen Pfad des Benutzers zur Verfügung. Falls auf einem anderen Rechner gearbeitet werden soll, kann der Quelltext des Soccersimulators hier runtergeladen werden. Bitte keine Simulationen auf owl starten, da dies der Server ist und so die Arbeit an allen Klientenrechnern stark beeinträchtigt wird.

Starten des Soccerservers:

Der Start des Soccerservers und eines Soccermonitors erfolgt mit Hilfe des Skripts: sserver

Starten des Soccerservers mit Aufzeichnung von logs:

Um Logs von den Spielen aufzuzeichnen steht das Skript: sserver-with-log zur Verfügung. Es muss mit zwei Parametern aufgerufen werden, die für die zwei unterschiedlichen Logs des Soccerservers verwendet werden.
Die beiden Logs unterscheiden sich folgendermaßen:
  • Die binäre Datei ist eine Aufzeichnung der Daten die vom (Soccer-)Simulator zum (Soccer-)Monitor übertragen werden. Sie dient dazu ein Spiel später nochmal anzusehen.
  • Die ASCII-Datei ist eine Aufzeichnung sämtlicher Kommandos aller Klienten und dient zur Fehlersuche im Klienten, insbesondere kann hier Festgestellt werden, welche Kommandos beim Server ankamen.
  • Abspielen einer Spielaufzeichnung:

    Das script logplay dient dazu, aufgezeichnete Spiele wieder abzuspielen. Es benötigt als Argument den Dateinamen des Logs. Beispiele für Spiele sind unter  http://www.ida.liu.se/~pausc/RC99/Results.html zu finden. Dort sind auch Varianten zu finden, wie eine dreidimensionale Darstellung oder eine automatisch erzeugte Analyse der Spiele.

    Quelltext und Dokumentation für die Übungen:

    Für die Übungen steht eine (von Übung zu Übung erweiterte) C++ Bibliothek (robotlib) zur Verfügung. In diesem Archiv ist unter robotlib/doc/index.html der für die Übung relevante Teil der Klassenbibliothek dokumentiert. Dokumentation zum Simulator besteht aus dem Manual und dem Quelltext (siehe oben). Die exakten Positionen der Flaggen des Spielfeldes sind in folgendem Headerfile abgelegt:simconsts.

    Korrekturen zum Stamina/Turnneck Problem:

    ersetze in File robotlib/src/simpacketdata.cc in Methode operator+=() die Zeile: if (second.turn_necks > turn_necks) stamina1 = second.turn_necks; durch if (second.turn_necks > turn_necks) turn_necks = second.turn_necks; oder lade die korrigierte Fassung der C++ Bibliothek (robotlib-korr)

    Weitere Verbesserungen,

    sowie ein Beispiel eines Coaches sind nun in der allerneuesten Version der Bibliothek vorhanden:robotik-uebung-coach. Es existiert nun die Möglichkeit die SoccerSimulatorConnection mit der Methode setNonBlocking() auf non-blocking IO zu schalten, das hat zur Folge, daß man einen negativen Rückgabewert bekommt, falls readPacket() fehlschlägt weil kein Paket vorhanden ist. Bisher (und weiterhin als Defaulteinstellung) war nur blocking IO möglich, was bedeutet, daß readPacket() im Notfall auf ein Paket wartet (inaktiv, d.h. ohne Rechenzeit zu verbrauchen). Im Verzeichnis example befindet sich nun ein Beispiel-Coach-Klient. Der Coach muß die Informationen vom Server explizit anfragen, mittels (look). Als Antwort kommt dann ein "See"-Paket vom Server, welches ganz normal mittels readPacket() abgeholt werden kann. Die Kommandos die dem Coach zu Verfügung stehen, sind im Manual auf Seite 18 und 19 beschrieben. Achtung, bisher sind nur die Antworten auf (look) Befehle parsbar, aber die Befehle zum Setzen des Playmode und der Position von Objekten sollten funktionieren (wenn auch die Antwort vermutlich einen Parseerror produziert), bei Problemen bitte ich um Rückmeldung. Achtung: Um den Coach verwenden zu können muß ein spezieller Soccerserver gestartet werden: sserver-coach.

    Link zum Q-Lernen

    Die Webversion des "Reinforcment Learning" Buchs von Sutton und Barto:Reinforcement Learning