Das Saphira System

Bevor Sie mit dem Saphira System arbeiten wollen, müssen Sie zunächst

$ setup robot

eingeben. Dadurch wird die notwendige Entwicklungsumbegung eingerichtet. Anschließend können Sie den Simulator durch Eingabe von

$ pioneer

starten. Der Roboter kann nämlich nur dann Aufgaben ausführen, wenn er sich in einer Umgebung befindet - entweder in der realen Welt oder im Simulator.

Der Simulator

Man kann für den Simulator selbstdefinierte Umgebungen erstellen und laden. Unter dem Menüpunkt 'Load -> World' finden Sie bereits einige fertige Umgebungen (z.B. moran.wld, corridor.wld). Wird keine Welt geladen, so befindet der Roboter sich in einer nahezu unbegrenzten, hindernissfreien Welt. Befindet sich der Roboter in einer Welt mit Hindernissen, so werden diese (je nach Entfernung) durch seine Sonarsensoren erfasst.

Ein Saphira Client

Ein Saphira Client ist ein Programm, das die Steuerung des Roboters übernimmnt. Es kann in einer "komfortablen" Programmiersprache geschrieben werden, das durch einen mitgelieferten Compiler in ein gewöhnliches C File übersetzt wird, welches wiederum in ein ausführbares Programm (den Client) übersetzt wird. Diese Aufgabe übernimmt ein Makefile.

Wenn man den Clienten startet, erscheint ein Fenster, das u.a. die aktuelle Umweltwahrnehmung des Roboters anzeigt (LPS = Local Perceptual Space). Ein bereits vorhandener Saphira Client ist 'saphira':

$ saphira

Nach diesem Aufruf erscheint das Client Fenster, und in dem LPS sieht man ein Robotersymbol. Nun kann man den Client mit dem Simulator verbinden, indem man den Befehl 'Connect -> local server (/tmp/robot)' ausführt. Anschließend werden die aktuellen Sonarreadings in Form von kleinen blauen Kästchen angezeigt. Ist das Client Fenster aktiv, so kann man den Roboter mit den Cursor-Tasten steuern.

Eigenen Saphira Client schreiben

Es empfiehlt sich, für jeden Saphira Client ein eigenes Verzeichnis anzulegen. In jedem Verzeichnis befindet sich dann das eigentliche File (z.B. *.beh) und ein Makefile, das entsprechend angepaßt werden muß (die Variable SOURCE entsprechend ändern). Hier sind einige Beispiele (eingeschränkt auf Behaviors):