Streckeneditor


Die Dokumentation gliedert sich in folgende Abschnitte:

[Homepage]




Einleitung


Beim Streckeneditor handelt es sich um ein grafisches Front-End zur Definition von Streckenverläufen, die den Weg des Fahrzeugs in realen Umgebungen darstellen. Es können beliebig viele Strecken verwaltet werden, wodurch sich das Fahrzeug komfortabel an verschiedene Umgebungen anpassen läßt.

Durch die Version 1.0 des Streckeneditors wurde ein Programm ersetzt, mit dem bisher die einzelnen Streckenparameter in einer Schleife abgefragt und nach Beenden der Schleife an die Steuerhardware übertragen wurden. Dieses Programm diente lediglich zu Testzwecken und besaß eine einfache textuelle Benutzeroberfläche.
Um ein benutzerfreundliches Interface zur Verfügung zu stellen, wurden folgende Anforderungen an den Streckeneditor gestellt:

  • grafische Darstellung
  • komfortable Editiermöglichkeiten
  • Verwaltung mehrerer Streckenverläufe
  • All diese Anforderungen konnten in der Version 1.0 des Streckeneditors realisiert werden.
    Das Programm wurde mit dem GNU C++ Compiler in der Version 2.7 erstellt. Um die Fensterverwaltungsfunktionen und die Grafikoperationen nicht von Grund auf selbst programmieren zu müssen wurde LEDA ab der Version 3.2.3 verwendet (siehe LEDA Ressourcen im Internet).

    Die Streckeneingabe unterliegt der Einschränkung, daß sich immer ein Kurvensegment und ein Geradensegment abwechseln müssen. Diese Bedingung wurde aufgrund von technischen Überlegungen aufgestellt, da es mit einem Fahrzeug nicht möglich ist auf plötzliche Richtungsänderungen "unmittelbar" zu reagieren. An einer Stelle, an der 2 Geradensegmente miteinander verbunden sind, müßte der Fahrzeugrechner die Kreisbahn interpolieren. Um Fehler durch die Interpolation zu vermeiden, wurde der Ansatz gewählt eine Richtungsänderung immer durch ein Kurvensegment zu definieren. Es hätte zwar die Möglichkeit bestanden, ein Kurvensegment für den Schnittpunkt zweier Geradensegmente vom Editor berechnen und zeichnen zu lassen, doch hätte dies die Programmierung des Editors komplexer gemacht, da eine spezielle Behandlung beim Editieren der Strecke nötig geworden wäre.

    Als erstes wird also der Startpunkt der Strecke festgelegt, es folgt ein Geradensegment und darauf ein Kurvensegment. Die beiden letzten Segmenttypen wiederholen sich anschließend bis die Eingabe beendet wird. Das Geradensegment ist dabei immer eine Tangente an den letzten Kreis, das Kurvensegment immer ein Kreis, der die letzte Gerade als Tangente hat, wobei die Kurvenrichtung durch die Lage des Mauszeigers in Bezug auf die zuvor gezeichnete Gerade gegeben ist, d.h. liegt der Mauszeiger rechts von der Geraden, dann wird eine Rechtskurve gezeichnet und umgekehrt.

    Die Größe der Zeichenfläche ist relativ und läßt sich mit einem Faktor beliebig skalieren. Der Skalierungsfaktor wurde auf cm festgelegt, da in Anbetracht der geringen Geschwindigkeit keine groessere Einheit und wegen der Breite des Fahrzeugs und des sich damit ergebenden Wendekreises von ca. 40 cm auch keine kleinere Einheit sinnvoll gewesen waere.

    Der Streckenverlauf kann nach Abschluß der Eingabe in einer Datei gespeichert werden und bei Bedarf wieder aus dieser geladen werden. Das Programm merkt sich dabei jeweils den letzten Dateinamen vor seiner Beendigung. Dieser wird dann beim nächsten Start wieder als Dateiname angeboten.

    Der Streckenverlauf kann editiert werden, indem das jeweils letzte Segment gelöscht wird. Diese Einschränkung ist durch die Tatsache gegeben, daß der momentane Verlauf von der geometrischen Position aller benachbarten Segmente abhängt. Eine direkte Verschiebung einer Geraden wuerde eine Verschiebung der benachbarten Kurven und der daran angrenzenden Geraden nach sich ziehen. Bei direkter Verschiebung einer Kurve, würden sich nur die angrenzenden Geraden verändern. Diese Art der Streckenbearbeitung hätte die Programmierung des Editors wesentlich umfangreicher gemacht, weshalb in dieser Version schließlich darauf verzichtet wurde.


    [Homepage | Bedienung | Aufbau | Besonderheiten]



    Bedienung


    Nach dem Start präsentiert sich der Streckeneditor als Fenster mit einer Optionsfläche und der eigentlichen Zeichenfläche. Im Optionsbereich sind Eingabefelder enthalten, mit denen man Programmoptionen einstellen kann, sowie Schalter, über die sich bestimmte Funktionen aufrufen lassen. Der Zeichenbereich hat anfänglich eine quadratische Größe von 100 * 100. Das Fenster sollte nicht in seiner ursprünglichen Größe verändert werden, weil LEDA die Zeichenfläche unter Beibehaltung des Seitenverhältnisses skaliert und dadurch die Zeichnung verzerrt.

    Der Dateiname wird beim ersten Start des Editors mit dem Standardwert "Strecke.lst" initialisiert. Wird der Dateiname vom Benutzer verändert, dann wird beim nächsten Start dieser Name als Standard-Dateiname angeboten. Der Name wird in der Datei "editor.ini" abgespeichert. Ist diese Datei nicht vorhanden, dann wird sie beim Verlassen des Editors automatisch erzeugt.
    Ein Dateiname wird vom Editor nur als gültig erkannt, wenn er die Endung ".lst" besitzt. Vergißt der Benutzer diese 4 Zeichen an den Dateinamen anzuhängen, dann wird dies beim Speichern automatisch vom Programm durchgeführt. Dabei erkennt der Algorithmus aber lediglich ".lst", wenn aber zum Beispiel der Punkt vergessen wurde, dann wird der Dateiname trotzdem um ".lst" erweitert.


    [Homepage | Einleitung | Aufbau | Besonderheiten]



    Aufbau


    Das Programm ist in C++ geschrieben. Die folgenden Darstellungen basieren auf der objektorientierten Modellierungsmethode OMT (Object Modelling Technique) nach Rumbaugh. Das Modell ist jedoch nicht vollständig, es werden jeweils nur die wichtigsten Teile zum Zwecke der Dokumentation dargestellt.

    Objektmodellierung


    Funktionale Modellierung

    Auf die grafische Darstellung des funktionalen Modells wurde an dieser Stelle verzichtet, für Einzelheiten sei deshalb direkt auf den Quelltext verwiesen.

    [Homepage | Einleitung | Bedienung | Besonderheiten]


    Besonderheiten der Transferfunktion


    [Homepage | Einleitung | Bedienung | Aufbau]