FAQ für c't-Bot und c't-SIM
Seite 5: Programmierung c't-Sim
Programmierung c't-Sim
Beim Starten des c't-sim bekomme ich eine Exception und eine Meldung über "Unresolved compilation problems". Was mache ich falsch?
Falls als weitere Ursachen etwa "Point3f cannot be resolved to a type" oder "Vector3f cannot be resolved to a type" aufgeführt werden, weist dies darauf hin, dass die Java3D-Bibliothek nicht gefunden wurde. Diese muss ins benutzte "Java Runtime Environment" (JRE) installiert werden, wie in der Installationsanleitung beschrieben. Möglicherweise befindet sich auf Ihrem Rechner neben dem "Java Development Kit" (JDK), der sein eigenes JRE mitbringt (in einem Unterverzeichnis des JDK-Ordners), noch ein weiteres JRE, das zu einem früheren Zeitpunkt installiert wurde (unter Windows üblicherweise im Verzeichnis "Java" zu finden). Beim Ausführen von Java-Programmen greift die Java Virtual Machine (JVM) eventuell auf die alte Installation zurück. Fügt man auch dieser die Java3D-Bibliothek hinzu, sollte der Simulator starten.
Der Bot bleibt trotz programmierter Kollisionsvermeidung immer wieder an der Wand hängen. Sind die Abstandssensoren vielleicht nicht sauber implementiert?
Nein, die Modellierung der Abstandssensoren erfolgte zwar stark vereinfacht, aber orientiert sich durchaus an der Realität: Die Sensoren "blicken" parallel nach vorne, der Öffnungswinkel ihres Sichtkegels beträgt drei Grad. Zwar ist diese Implementierung eine Vereinfachung (im Original hängt der Öffnungswinkel vom Material des Hindernisses und von der Entfernung ab), aber auch der echte c't-Bot wird Schwierigkeiten haben, mit diesen Sensoren Wände zu erkennen, wenn er sich ihnen nahezu parallel nähert. Hier ist eine pfiffige Steuerungsroutine für den Bot gefordert, die ihn vielleicht nach einem bestimmten Streckenabschnitt kurz innehalten und einen Seitenblick riskieren lässt, bevor er seinen Weg fortsetzt.
Im c't-Sim-Paket befindet sich eine Datei build.xml — wozu ist die da und was mache ich damit?
Die Datei build.xml ermöglicht es, das Projekt c't-Sim mit dem Werkzeug Ant der Apache Software Foundation zu kompilieren und auszuführen. Ant ist vergleichbar mit dem aus der C-Welt bekannten make und automatisiert das Erstellen (build) eines Java-Softwareprojekts. Die Datei build.xml enthält alle wichtigen Kenndaten und Einstellungen des Projekts ct-Sim. Zusätzliche Anweisungen fordern Ant auf, die Java-Quellen zu kompilieren, ein Java-Archiv (.JAR) und die Java-Dokumentation (javadoc) zu erstellen sowie schließlich den c't-Sim zu starten. Eine Anleitung, wie man den Ant Build in Eclipse integriert sowie weitere Informationen finden sich in der Datei build.howto des Java-Projekts c't-Sim.
Ich will SOFORT mit dem Programmieren im Simulator anfangen! Was soll ich machen?
Bei den Robotersteuerungen in bot-logik.c und CtBotSimTest.run handelt es sich um einfache Implementierungen, die zwar in den meisten Fällen brauchbar arbeiten, aber den simulierten Bot weder zu hundert Prozent vor Kollisionen schützen noch verhindern können, dass der Roboter in eine "Deadlock"-Situation, gerät, aus der er nicht mehr von selbst freikommt. Daher empfiehlt sich das Ausknobeln einer wirklich wasserdichten Lenkungsroutine, um mit dem Simulator warm zu werden.
Wie erstelle ich selbst eine Jar-Datei, damit ich den c't-Sim per Doppelklick im Windows Explorer oder vom Desktop starten kann?
Eclipse kann solche Jar-Archive exportieren:
- rechter-Mausklick auf c't-Sim im Package-Explorer
- "Export" anklicken
- "JAR file" auswählen und dann "Next" anklicken
- "Next" anklicken
- "Next" anklicken
- In der mit "JAR Manifest Specification" betitelten Seite neben "Main Class" auf "Browse" klicken
- Controller auswählen und dann "OK" anklicken
- "Finish" anklicken
Wie starte ich den Simulator aus Eclipse heraus?
In der Eclipse-Symbolleiste befindet sich ein Pfeil im grünen Kreis. Über den kleinen schwarzen Pfeil daneben öffnet man den Dialog "Run...", in dem man sogenannte "run configurations" erstellen kann. Wenn Sie "Java Application" wählen und dann auf "New" klicken, können Sie den Projektnamen angeben, unter dem Sie den Simulator importiert haben (üblicherweise ct-Sim). Als "main class" wählen Sie "Controller", anschließend klicken Sie auf "Apply". "Run" startet den Simulator. Beim nächsten Start des Simulators reicht es dann, wenn Sie in der Eclipse-Symbolleiste auf den Pfeil im grünen Kreis klicken.
Der ParcoursLoader kann Linien nur auf grauem Untergrund zeichnen. Ich brauche aber Linien auf weißem Boden - wie bekomme ich die?
Alle Linienfelder nutzen den normalen grauen Boden als Hintergrund. Für Linien auf hellem Boden muss man den normalen Untergrund umfärben. Dazu ändert man in der XML-Datei, die den Parcours definiert, die Farben folgendermaßen: Fussboden im Labyrinth #FFFFFF #FFFFFF
Wie weiß diese Bodenplatten in der 3D-Darstellung erscheinen, hängt nicht zuletzt von der Beleuchtung des Parcours an der jeweiligen Stelle ab.