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:
-
load.nsp: siehe Beschreibung vorherige Aufgabe
- Unterverzeichnis
02_simulator
load.nsp: lädt c-interface.nsp und nisp-control.nsp
c-interface.nsp: enthält die Schnittstelle zur C-Bibliothek
nisp-control.nsp: tragt hier euere Lösung ein
-
piosim-script: die Konfigurationsdatei, die ihr für eure Löosung verwendet;
Diese Datei wird automatisch von Nisp automatisch verwendet.
test-script: obige Testdatei
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