[previous][map][next]

8 Testszenarien

8.1 Graphische Darstellung

Die Algorithmen wurden für einen Editor entwickelt. Dieser stand während der Programmentwicklung noch nicht zur Verfügung. Daher wurde zur Visualisierung der Ergebnisse eine Bibliothek erstellt. Die graphische Darstellung der Geometrie-Elemente war notwendig, weil die Parameter der Klotoiden keine unmittelbaren Rückschlüsse auf das Aussehen der Trasse zulassen, und die Qualität der Einrechnung am schnellsten visuell zu beurteilen ist. Die Funktionen der Bibliothek erhalten ein oder mehrere Geometrie-Elemente und erzeugen einen Linienzug, der durch das Programm gnuplot dargestellt werden kann. Bei Bedarf können neben den Geometrie-Elementen auch deren Anfangs- und Endpunkte dargestellt werden. Die Enden der Geometrie-Elemente können durch kleine Kreuze markiert werden. Damit ist eine schnelle Identifikation der Übergangspunkte zwischen den Geometrie-Elementen möglich.
Die Geometrie-Elemente Kreis und Klotoide approximiert man durch kurze Geradenstücke. Die Anzahl der Geradenstücke kann vom Benutzer frei gewählt oder es kann auf den Defaultparameter zurückgegriffen werden.
Die Geradenstücke werden in die Standardausgabe geschrieben und können dann in eine Datei umgeleitet werden. Die erzeugte Datei kann von gnuplot gelesen und dargestellt werden. Dadurch ist eine schnelle Auswertung der Einrechnung möglich. Die Ausgabe von gnuplot kann neben dem Bildschirm auch für diverse andere Formate wie Postscript erzeugt werden.
Der Aufruf zum Zeichen der Trassen lautet:
gnuplot command.gplot
command.gplot ist hierbei der Name für eine Steuerdatei. Mit Hilfe dieser Datei lässt sich die Ausgabe von gnuplot manipulieren.
Der Inhalt der Textdatei command.gplot lautet:
plot "input.txt" with lines 3
pause -1
input.txt steht für den Namen der erzeugten Eingabedatei. Die genaue Beschreibung der mannigfaltigen Steuerungsmöglichkeiten von gnuplot findet man in den Manpages.
Beispiel für den Inhalt der Datei input.txt:
163.57 92.1474
163.432 96.5427
163.018 100.921

162.33 105.264
161.371 109.556
160.144 113.779

Jede Zeile der Datei input.txt steht für die Koordinaten eines Punktes. Die Punkte werden der Reihe nach durch einen Linienzug verbunden. Eine Leerzeile beendet den Linienzug. Danach beginnt ein neuer Linienzug. In obigen Beispiel werden zwei Linienzüge erzeugt. Der erste beginnt in P1(163.57, 92.1474) und geht über P2(163.432, 96.5427) nach P3(163.018, 100.921). Der zweite Linienzug beginnt in P4(162.33, 105.264) und geht über P5(161.371, 109.556) nach P6(160.144, 113.779).

8.2 Prüfung der auftretenden Fälle

Für jeden der möglichen Übergänge wurde ein Satz Prüfdaten generiert, der diverse Lagen, sowie Richtungen und Krümmungen der Zwangspunkte abprüft. Daraus ergibt sich ein umfassendes Testszenario, das auch extreme Fälle abdeckt, die bei normalen Trassierungen nicht auftreten.

8.2.1 Klotoidenberechnung

Viele Algorithmen benötigen die Einrechnung einer Klotoide von einer Gerade in einen Kreis. Hier sieht man ein Testbild.

Es wurden von Geraden mit diversen Steigungen Einrechnungen in den Kreis gemacht. Zu sehen sind der Zielkreis sowie Teilstücke der Geraden und die eingerechneten Klotoidenäste. Folgende Fälle müssen getestet werden:

8.2.2 Übergang Gerade - Kreis

Der einfachste Fall der Einrechnung zwischen zwei Punkten ist der Fall Gerade - Kreis. Es gilt neben obigen Unterscheidungen zusätzlich folgende Fälle zu testen:
In der Abbildung sieht man je einen Repräsentanten pro Kategorie.

8.2.3 Übergang Gerade - Gerade

Etwas aufwendiger als die Einrechnung Gerade Kreis ist die Einrechnung zwischen zwei Punkten mit Krümmung null, also zwischen Geraden. Folgende Fälle müssen getestet werden:
In der folgenden Abbildung wurden jeweils Trassen vom Ursprung zu mehreren Zielpunkten eingerechnet. Die Trasse im Ursprung hat eine leicht negative Richtung. Die Zielpunkte sind P1(-50, 100), P2(0, 100), P3(50, 100), ... P10(-50, -100), P11(0, -100), P12(50, -100), ...
Zu den Endpunkten wurden teils mehrere Trassen mit verschiedenen Endrichtungen berechnet. Die Endrichtungen z.B. in P3 lauten im Bogenmaß 0.79 und 2.35.
Die Trasseneinrechnungen zu P3 lauten dann
straight2StraightTest 0 0 -0.1 50 100 0.79
straight2StraightTest 0 0 -0.1 50 100 2.35
Die ersten zwei Parameter nach dem Funktionsnamen geben die Koordinaten des Startpunktes an. Im Beispiel ist dies P1(0, 0), also der Ursprung. Der nächste Wert steht für die Richtung im Bogenmaß. Der Winkel wird dabei relativ zur x-Achse gemessen. Im Beispiel ist er -0.1. Das nächste Zahlenpaar enthält die Koordinaten des Endpunktes. Oben wurde der Punkt P2(50, 100) verwendet. Der letzte Wert steht für die Richtung des Gleises im Endpunkt. Im Beispiel werden Trassen mit einer Endrichtung von 0.79 und 2.35 erzeugt. Zusammenfassend lautet der Aufruf also
straight2StraightTest x1, y1, direction1, x2, y2, direction2
Im nächsten Test wurde der Schwerpunkt auf S-Kurven sowie extreme Einrechnungen gelegt. Der Startpunkt ist P(10, 10) die Endpunkte liegen bei einem x-Wert von 110, die y-Werte variieren. Pro Endpunkt wurden drei Trassen eingerechnet. Man sieht, dass der Algorithmus bei drei Einrechnungen, die nach unten durchgebogen sind, keine ideale Trassierung generiert. Jedoch wird ein derartiger Trassenverlauf in der Realität vom Anwender feiner unterteilt. Dadurch liefert der Algorithmus wieder bessere Ergebnisse.

8.2.4 Übergang Kreis - Kreis

8.2.4.1 Wendelinien

Der Aufruf zum Test von Wendelinien lautet:
revCurvTest x1 y1 direction1 radius1 x2 y2 direction2 radius2
Analog zum Übergang Gerade Gerade sind die einzelnen Parameter zu belegen. radius1 und radius2 stehen dabei für die Radien in den Anfangs- und Endpunkten. Es sind negative Radien zugelassen. Diese deuten auf eine Rechtskrümmung hin. Damit es sich um eine Wendelinie handelt, müssen die Radien unterschiedliches Vorzeichen haben.
Es gilt folgende Fälle zu testen:
In unterem Beispiel sind Einrechnungen verschiedener Eilinien zu sehen. Zur Veranschaulichung wurden zu den Radien in den Punkten die zugehörigen Kreise dargestellt.

8.2.4.2 Eilinien

Neben diversen relativen Lagen der Kreise zueinander gibt es folgende Fälle zu unterscheiden:
Für jeden Fall ist in der Abbildung ein Beispiel zu sehen. Die Kreismittelpunkte sind jeweils markiert.

8.2.5 Prüfung des allgemeinen Falls

Zum Test der allgemeinen Trassierung wurde die Funktion point2PointTest geschrieben. Sie wird wie folgt aufgerufen:
point2PointTest x1 y1 direction1 radius1 x2 y2 direction2 radius2
Die Aufrufparameter sind wie oben zu übergeben.

8.3 Prüfung der Geometrie-Berührpunkte

Um eine exakte Überprüfung der eingerechneten Trasse durchzuführen, reicht eine visuelle Betrachtung nicht aus. Diese hilft zwar das Ergebnis zu prüfen, ausschlaggebend sind aber auch die Abweichungen an den Übergängen der Geometrie-Elemente. Nur wenn diese Werte innerhalb der zulässigen Toleranzen liegen kann die Trasse verwertet werden. Die Qualität der Ergebnisse lässt sich nur anhand der erhaltenen Werte beurteilen, eine graphische Auswertung ist nicht möglich. Es wurde eine Funktion implementiert, die ein Rail durchläuft und die Abweichungen zwischen den Enden der Geometrie-Elemente prüft. Die Prüfung zerfällt in drei Teile.
Begonnen wird mit dem Startpunkt. Die Werte des Startpunktes werden mit dem Beginn des ersten Geometrie-Elementes verglichen.
Anschließend vergleicht man die Werte des Endpunktes jedes Geometrie-Elementes mit den Startwerten des darauffolgenden Elementes.
Abschließend wird das Ende des letzten Geometrie-Elementes mit den Werten des Endpunktes abgeglichen.
Ausgegeben werden jeweils die Unterschiede in Position Richtungswinkel und Krümmung. Somit lässt sich schnell die numerische Genauigkeit der Einrechnung überprüfen.


[previous][map][next]