Simulatorsteuerung in NISP

Bearbeitungszeitraum vom 10.12.2002 bis 17.12.2002

Vorgaben:


Nutzung des Simulators auf den Lehrstuhlrechnern

Um den Simulator auf den Lehrstuhlrechnern verwenden zu können müssen noch einige Einstellugnen vorgenommen werden. Der Simulator ist wie SNNS im Verzeichnis /usr/stud/muellear/local/bin installiert und heißt piosim. Das Verzeichnis müsste nach der letzten Aufgabe schon in eurer Umgebungsvariable PATH stehen. Falls nicht, hier noch einmal die Zeile, die in der Datei .login.user stehen muss:

setenv PATH /usr/stud/muellear/local/bin:${PATH}

Der Simulator benötigt aber auch noch ein paar Bibliotheken. F"ugt deshalb noch folgende Zeilen in eurer .login.user hinzu:

setenv ROBOCUP_DIR /usr/stud/muellear/RoboCup
setenv LEDAROOT /usr/proj/pioneer/leda
setenv ARCHITECTURE i486-unknown-linux2.0.0
setenv LD_LIBRARY_PATH ${ROBOCUP_DIR}/lib/${ARCHITECTURE}:${LEDAROOT}/lib/${ARCHITECTURE}/g++:${LD_LIBRARY_PATH}


Der Simulator benötigt beim Aufruf noch eine Konfigurationsdatei. Ihr könnt den Simulator mit dieser Testdatei ausprobieren. Gebt einfach

piosim test-script

ein. Es sollte der Simulator starten und ein Spiel von vier gegen vier laufen.


Steuerung des Simulator aus Nisp

Zur Steuerung des Simulators aus Nisp wird die in der Simulatorbeschreibung erklärte Kommunikationsbibliothek verwendet. Diese benötigt auch noch zwei Umgebungsvariablen. Fügt diese wieder der Datei .login.user hinzu:

setenv IPC_SEMAPHORE_KEY 311
setenv IPC_SHARED_MEMORY_KEY 161

Die beiden Werte sollte jeder anders setzen. Der Wert ist aber egal.

In der Simulatorbeschreibung werden die beiden Tools ipcs und ipcrm für IPC erwähnt. Es ist immer sehr aufwendig den Shared-Memory Bereich und die Semaphoren manuell nach einem Hänger zu löschen, daher gibt es im Verzeichnis /usr/stud/muellear/local/bin noch das ein kleines Skript rmipc, das euch die Arbeit abnimmt. Es hat keine Parameter und liest die beiden Umgebungsvariablen aus und entfernt die IPC-Ressourcen.


Beschreibung der Quelldateien

Nach dem entpacken des Archivs weist das Verzeichnis folgende Struktur auf: Alle Dateien werden wieder mit (nisp:prak) geladen und die Nispsteuerung des Simulators startet ihr dann mit (robot-run). Diese Funktion soll dann am Ende den Roboter eine Runde im Simulator fahren lassen.

Links

Allegro Lisp Dokumentation zum Paket foreign-functions
Dokumentation zu System V IPC