Kollisionsvermeidung für Fahrzeuge als Beispielanwendung für ein

Transcription

Kollisionsvermeidung für Fahrzeuge als Beispielanwendung für ein
Technische Universität München
Fakultät für Informatik
Lehrstuhl IX
Angewandte Informatik / Kooperative Systeme
Diplomarbeit in Informatik
Kollisionsvermeidung für Fahrzeuge als Beispielanwendung
für ein ontologisches Kontextmodell
Georg Lutz
Aufgabensteller:
Prof. Dr. Johann Schlichter
Betreuer:
Robert Eigner
Abgabedatum:
15.07.2007
Ich versichere, dass ich diese Diplomarbeit
selbständig verfasst und nur die angegebenen
Quellen und Hilfsmittel verwendet habe.
München, den 15.Juli 2007
Georg Lutz
2
Zusammenfassung
In dieser Arbeit wird sowohl eine Anwendung zur Kollisionsvermeidung für Fahrzeuge entwickelt, als auch ein ontologisches Kontextmodell, dessen sich die Anwendung bedient. Ziel der Arbeit ist es herauszufinden, inwieweit sich die Erwartungen, die mit dem Einsatz von Ontologien zur Kontextmodellierung verbunden
sind, erfüllen, und ob ihr Einsatz im Zusammenhang mit Berechnungen zur Kollisionsvermeidung überhaupt sinnvoll ist.
Um ontologische Modelle zu entwickeln und in ein Programm einbinden zu
können, benötigt man unterschiedliche Werkzeuge, wie zum Beispiel einen Ontologieeditor, eine Sprache zur Beschreibung der Ontologie und eine Programmierumgebung. Die in dieser Arbeit verwendeten Werkzeuge werden hier ebenso
vorgestellt wie mögliche Alternativen. Auch eine Abgrenzung zu anderen Varianten der Kontextmodellierung wird vorgenommen und die Vorteile des Einsatzes
von Ontologien werden untersucht.
Von der Anwendung zur Kollisionsvermeidung, genannt Fahrerassistent, werden
zwei Varianten entwickelt. Die erste Variante bedient sich eines einfachen Kontextmodells, das sich auf die Erfassung der Fahrzeugdaten aller Verkehrsteilnehmer,
die sich in der Nähe befinden, beschränkt. Die zweite Variante erweitert dieses
einfache Kontextmodell um eine Ontologie, die umweltbezogene Sensordaten wie
Temperatur oder Helligkeit modelliert, und eine Ontologie, die das Straßennetz
modelliert. Es zeigt sich, dass es mit Hilfe der zusätzlich zur Verfügung stehenden
Kontextinformationen möglich ist, sowohl bessere Unfallvorhersagen zu treffen, als
auch die Daten zur Verfügung zu stellen, die für die Ermittlung einer der Situation
angemessenen Reaktion auf die Unfallvorhersagen nötig sind.
Ein Vergleich der beiden Varianten zeigt, dass zusätzliche Kontextinformationen
einerseits zu einer besseren Qualität der Kollisionsvorhersage führen, andererseits
aber auch die Gefahr besteht, dass sie die Geschwindigkeit des Fahrerassistenten erheblich verringern. Die Untersuchung der Geschwindigkeiten führt zu dem
Ergebnis, dass Ontologien den Anforderungen des Fahrerassistenten als Echtzeitanwendung genügen, wenn sie nicht zu umfangreich und komplex sind. Auch die
Möglichkeit, externe Ontologien in das eigene Modell einzubinden, um zum Beispiel auf Herstellerdaten zugreifen zu können, wird untersucht.
Für beide Varianten werden mögliche Erweiterungen der Kontextmodelle und
der Funktionalität des Fahrerassistenten vorgestellt. Auch denkbare Verallgemeinerungen und sich daraus ergebende Einsatzmöglichkeiten der Ontologien im Straßenverkehr allgemein werden am Ende dieser Arbeit angedacht.
Inhaltsverzeichnis
1 Einleitung
1.1 Idee und Motivation
1.2 Aufgabenstellung . .
1.3 Begriffserläuterungen
1.4 Aufbau der Arbeit .
.
.
.
.
7
. 7
. 9
. 9
. 12
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
14
14
16
17
17
19
19
19
20
21
21
23
24
26
29
30
31
32
32
35
36
38
39
39
3 Erste Variante des Assistenten
3.1 Beschreibung des Szenarios . . . . . . . . . . . . . . . . . . . . . . .
3.2 Anforderungen an Ontologie und Architektur . . . . . . . . . . . . .
3.3 Ontologie und Regelsatz . . . . . . . . . . . . . . . . . . . . . . . .
41
41
41
43
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Architektur
2.1 Aufgabenstellung und Szenarien . . . . . . . . . . . . . . . . .
2.2 Anforderung an Anwendungen und Architektur . . . . . . . .
2.3 Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Überblick über die logischen Komponenten . . . . . . .
2.3.2 Verkehrssimulator . . . . . . . . . . . . . . . . . . . . .
2.3.3 Hauptprogramm . . . . . . . . . . . . . . . . . . . . .
2.3.4 Ein- und Ausgabe . . . . . . . . . . . . . . . . . . . . .
2.3.5 Ontologie und Reasoner . . . . . . . . . . . . . . . . .
2.3.6 Anwendung . . . . . . . . . . . . . . . . . . . . . . . .
2.3.7 Auswertung der Kontrollsignale . . . . . . . . . . . . .
2.4 Verwendete Werkzeuge und Erwartungen an die Ontologie . .
2.4.1 Visual Traffic Simulation . . . . . . . . . . . . . . . . .
2.4.2 OWL . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.3 Protégé . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.4 SPARQL . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.5 Jena . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.6 Java . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.7 Erwartungen an die ontologische Kontextmodellierung
2.5 Alternativen . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Andere Verkehrssimulatoren . . . . . . . . . . . . . . .
2.5.2 OWL-QL . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.3 RDF und RDF Schema . . . . . . . . . . . . . . . . . .
2.5.4 Weitere Alternativen . . . . . . . . . . . . . . . . . . .
4
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3.4
3.5
3.6
3.3.1 Grundsätzliches und Aufbau . . . . . . . . . . . . .
3.3.2 Fahrzeugontologie . . . . . . . . . . . . . . . . . . .
3.3.3 Importbeispiel . . . . . . . . . . . . . . . . . . . . .
3.3.4 Regelsatz . . . . . . . . . . . . . . . . . . . . . . .
Kollisionsberechnung . . . . . . . . . . . . . . . . . . . . .
3.4.1 Fahrzeuge als sich bewegende Rechtecke . . . . . .
3.4.2 Die Fourier-Motzkin-Elimination . . . . . . . . . .
3.4.3 Erfüllbarkeit und Lösung . . . . . . . . . . . . . . .
3.4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . .
Implementierung des Fahrerassistenten . . . . . . . . . . .
3.5.1 Die Klasse OntoCar.java . . . . . . . . . . . . . . .
3.5.2 Die Klasse InputOutput.java . . . . . . . . . . . . .
3.5.3 Die Klasse OntoAssistant.java . . . . . . . . . . . .
3.5.4 Die Klasse ExtOntology.java . . . . . . . . . . . . .
3.5.5 Die Klasse Inquiry.java . . . . . . . . . . . . . . . .
3.5.6 Die Klasse Evaluation.java . . . . . . . . . . . . . .
3.5.7 Die Klasse FMElim.java . . . . . . . . . . . . . . .
3.5.8 Die Klasse CollisionLogic.java . . . . . . . . . . . .
3.5.9 Weitere Klassen . . . . . . . . . . . . . . . . . . . .
3.5.10 Änderungen am Verkehrssimulator . . . . . . . . .
Ergebnisse, Schwachpunkte und Erweiterungsmöglichkeiten
3.6.1 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . .
3.6.2 Schwachpunkte und mögliche Lösungen . . . . . . .
3.6.3 Erweiterungsmöglichkeiten . . . . . . . . . . . . . .
3.6.4 Zusammenfassung . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
43
43
49
50
53
54
57
59
63
64
65
67
67
68
68
69
70
70
71
71
74
74
78
80
83
4 Zweite Variante des Assistenten
4.1 Beschreibung des Szenarios . . . . . . . . . . . . . . . . . . . . . .
4.2 Unterschiede und Gemeinsamkeiten bei Ansprüchen an Ontologie,
Regeln und Architektur im Vergleich zum ersten Szenario . . . . .
4.3 Die neuen Ontologien und die Erweiterung der Fahrzeugontologie
4.3.1 Umweltontologie . . . . . . . . . . . . . . . . . . . . . . .
4.3.2 Straßenontologie . . . . . . . . . . . . . . . . . . . . . . .
4.3.3 Erweiterung der Fahrzeugontologie . . . . . . . . . . . . .
4.4 Änderungen an der restlichen Implementierung . . . . . . . . . . .
4.5 Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
5 Vergleich und Schlussfolgerungen
5.1 Vergleich der beiden Szenarien . .
5.2 Weitere Einsatzmöglichkeiten . .
5.3 Mögliche Verallgemeinerungen . .
5.4 Anpassungsfähigkeit und Grenzen
101
. 101
. 106
. 110
. 112
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
84
. 84
85
85
85
91
96
96
98
6 Diskussion
114
6.1 Erwartungen und Ergebnisse . . . . . . . . . . . . . . . . . . . . . . 114
6.2 Eignung des Ansatzes der ontologischen Kontextmodellierung . . . 115
6.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Abbildungsverzeichnis
119
Literaturverzeichnis
120
Quellcode, Ontologien und Regeln
CD-ROM
6
1 Einleitung
1.1 Idee und Motivation
Moderne Fahrzeuge werden mit immer mehr Elektronik ausgerüstet. Eine Vielzahl von Sensoren liefern Informationen über das Fahrzeug und seine Umgebung.
Fahrzeugbezogene Informationen sind zum Beispiel die aktuelle Geschwindigkeit,
die Bremsbeschleunigung, eine eventuell eingestellte Höchstgeschwindigkeit oder
der Einschlagswinkel des Lenkrads. Beispiele für Umgebungssensoren sind Thermometer, Regensensoren, Helligkeitssensoren oder Sensoren, die den Abstand zum
nächsten Objekt vor oder hinter dem Fahrzeug messen.
Auch der Einsatz von Computern in Fahrzeugen nimmt zu. Sie unterstützen oder
korrigieren das Verhalten des Fahrers beziehungsweise übernehmen Funktionen
der Mechanik. So ist es zum Beispiel möglich die Bremssignale elektronisch zu
übertragen beziehungsweise die Bremskraft elektronisch so anzupassen, dass ein
Blockieren der Räder verhindert wird.
Eine weitere Neuerung, die mehr und mehr zunimmt, sind die Satelliten gestützten Navigationssysteme. Sie erlauben zum Beispiel die Bestimmung des genauen
Standorts und finden für den ortsunkundigen Fahrer den Weg zu seinem Ziel.
Diese vielzähligen Informationen sind bis jetzt noch auf das einzelne Fahrzeug
beschränkt, aber in Zukunft sollen die Fahrzeuge miteinander vernetzt werden, so
dass dem einzelnen Fahrzeug neben seinen eigenen Sensoren noch weitere Daten
über die anderen Verkehrsteilnehmer zur Verfügung stehen. Ein solches Netzwerk
von Fahrzeugen bezeichnet man auch als Vehicular Ad Hoc Network (VANet).
VANets sind eine spezielle Form der Mobile Ad Hoc Networks (MANet) [wik07a].
Da die Knoten eines VANets sich bewegende Fahrzeuge sind, ist seine Struktur
dezentral und selbstorganisierend.
Die zusätzlichen Daten sollten es einerseits ermöglichen, viele unterschiedliche
Dienste und Anwendungen in einem VANet einzusetzen. So könnten sich die Fahrzeuge zum Beispiel gegenseitig vor Unfällen oder Glatteis warnen. Auch wesentlich
verbesserte Systeme zur Kollisionsvermeidung sind denkbar. Andererseits muss eine solche Vielzahl von Informationen wohl strukturiert werden. Die Fahrzeuge
müssen ihre Daten in Formaten organisieren und übers Netzwerk senden, die austauschbar sind, da sonst keine wirkliche Kommunikation möglich ist.
Zur Lösung dieses Problems bieten sich die Techniken einer weiteren Entwicklung der letzten Jahre an, des Semantic Webs. Hier werden Informationen mit Hilfe
von Ontologien in maschinenlesbarer Form organisiert. Ontologien beschreiben Informationen durch abstrakte Konzepte, deren Eigenschaften und Beziehungen mit
7
Hilfe einer eindeutigen, formalen Sprache. In einem ontologischen Modell können
unter anderem Begriffshierarchien definiert werden. So kann man zum Beispiel
festlegen, dass sowohl ein PKW als auch ein LKW Fahrzeuge sind und der Begriff
Auto dasselbe beschreibt wie der Begriff PKW. Somit muss also ein Auto auch ein
Fahrzeug sein. Außerdem erlauben es Ontologien Regeln aufzustellen, wie aus vielen, relativ einfachen Daten, komplexere Informationen gewonnen werden können.
Des Weiteren ist es möglich festzulegen, wie zwei unterschiedliche Ontologien aufeinander abzubilden sind, was den Informationsaustausch zwischen Anwendungen,
die sich unterschiedlicher Ontologien bedienen, erheblich vereinfacht. Auch stehen
Reasoner zur Verfügung, die unter anderem den Zugriff auf implizites Wissen und
die Überprüfung der Widerspruchsfreiheit ermöglichen.
Ontologien bieten also die Möglichkeit, die große Anzahl von Sensorinformationen in einem Fahrzeug zu beschreiben und zu organisieren. Außerdem erlauben
sie es, dass Anwendungsprogramme auf diese Informationen zugreifen und auch
komplexere Schlüsse aus der Kombination von relativ einfachen Informationen wie
zum Beispiel der Temperatur oder der Luftfeuchtigkeit schließen.
Dank der Möglichkeit die semantische Gleichheit von unterschiedlichen Begriffen
zu definieren, ist es auch leichter mit Daten von unterschiedlichen Herstellern zu
arbeiten.
Somit bietet die steigende Anzahl und Qualität von Sensoren in Fahrzeugen,
verbunden mit der Vernetzung der Verkehrsteilnehmer, interessante Möglichkeiten
zur Entwicklung von unterstützenden Anwendungen, die sich der Technik der Modellierung der zur Verfügung stehenden Informationen in Ontologien bedienen.
Besonders interessant erscheinen die Möglichkeiten für Anwendungen zur Kollisionsvermeidung bei Fahrzeugen, die sich hier ergeben.
Zuerst lässt sich sagen, dass das Sicherheitsbewusstsein den Straßenverkehr betreffend in den letzten Jahren gestiegen ist. So hat die Schwedische Regierung
zum Beispiel 1997 beschlossen, bis 2015 alle Straßen so sicher zu gestalten, dass
es zu keinen Verkehrstoten mehr kommt1 und auch die Europäische Union hat
mit eSafety2 ein Projekt zur drastischen Reduzierung der Verkehrstoten ins Leben
gerufen. Verbesserungen an den Fahrzeugen haben allgemein zu einer erheblichen
Reduktion der Anzahl von Verkehrstoten geführt.
Allerdings führen viele Verbesserungen an Fahrzeugen nur zu leichteren Verletzungen im Falle eines Unfalls, helfen aber kaum Unfälle wirklich zu vermeiden.
Verbesserte Kollisionsvermeidung bei Fahrzeugen könnte die Anzahl von Unfällen
reduzieren und somit auch die Zahl von Toten und Verletzten im Strassenverkehr.
Eine elektronische Unterstützung des Fahrers kann bei der Unfallvermeidung helfen. Der Mensch hat zum Beispiel eine relativ lange Reaktionszeit, ein Computer
kann auf plötzlich auftretende Gefahrensituationen, so er sie erkennt, schneller reagieren. Auch schätzen Fahrer Situationen oft falsch ein oder übersehen Fahrzeuge,
1
2
http://www.vv.se
http://ec.europa.eu/information society/activities/esafety/index en.htm
8
entweder aus Unkonzentriertheit, oder weil die Sichtverhältnisse schlecht sind. Hier
kann der Computer zusätzliche Informationen zur Verfügung stellen beziehungsweise den Fahrer vor schwer sichtbaren Fahrzeugen warnen.
Vielfältige Sensordaten, Vernetzung der Fahrzeuge und Organisation von Informationen in einem ontologischen Kontextmodell sollten die Entwicklung einer
solchen elektronischen Fahrerunterstützung vereinfachen.
Es ist zu erwarten, dass mit den Informationen, die durch die Fahrzeugsensoren
und die Vernetzung der Fahrzeuge gewonnen werden, sich die Situation, in der sich
das Fahrzeug befindet, mit Hilfe eines ontologischen Kontextmodells genauer beschreiben lässt als ohne diese Kontextinformationen. Somit ist es für Anwendungen
möglich, die Umgebung und die allgemeine Situation besser zu berücksichtigen. Besonders bei der Unfallvermeidung ist dies wichtig, da hier meist mehrere Fahrzeuge
involviert sind.
Andere Möglichkeiten der Modellierung sind zwar ebenfalls denkbar, bieten aber
nicht dieselben Vorteile wie ein ontologisches Kontextmodell. Einen Überblick über
diese Alternativen findet sich in Abschnitt 2.4.7.
Wenn die Sensorinformationen in Fahrzeugen in Ontologien organisiert sind, sollte es also möglich sein, bessere Ergebnisse bei Anwendungen zur Kollisionsvermeidung zu erzielen, als bei Systemen, die den Kontext nicht oder nur kaum beachten.
Eine einfache Abstandsmessung zum vorderen Fahrzeug sollte wesentlich schlechtere Ergebnisse liefern als wenn man zusätzlich die unterschiedlichen Geschwindigkeiten, Beschleunigungen beziehungsweise Bremsbeschleunigungen und die Richtungen der Fahrzeuge in die Berechnungen miteinbezieht. Zusätzliche Kenntnis
über Straßenbedingungen und Straßenverlauf sollte zu einer noch besseren Vorhersage führen.
1.2 Aufgabenstellung
Ziel dieser Arbeit ist es also eine Anwendung zur Kollisionsvermeidung für Fahrzeuge zu entwickeln und sich dabei der ontologischen Kontextmodellierung als
Werkzeug zur Kontexterfassung zu bedienen. Es ist zu untersuchen in wieweit
die Erwartungen, die man an das ontologische Modell stellt, erfüllt werden, oder
allgemein ob ontologische Kontextmodellierung bei Anwendungen zur Kollisionsvermeidung Sinn macht.
1.3 Begriffserläuterungen
In diesem Abschnitt werden ein paar zentrale Begriffe, die für diese Arbeit von
Bedeutung sind, geklärt.
9
Modell
Eine allgemeine Definition des Begriffs Modell findet sich in [mey07a]:
“1) allgemein: Vorbild, Muster, Entwurf von Gegenständen, auch gedankliche Konstruktionen”
Ebenfalls aus [mey07a] entnommen ist folgende Definition des Begriffs Modell für
den Bereich von Naturwissenschaften und Technik:
“4) Naturwissenschaften, Technik: materielles Objekt oder theoretisches Konstrukt,
das einem Untersuchungsgegenstand in bestimmten Eigenschaften oder Relationen
entspricht...”
In dieser Arbeit bezieht sich der Begriff Modell natürlich auf ein theoretisches
Konstrukt. Nach [Sta73] hat ein Modell drei wesentliche Merkmale:
1. Das Abbildungsmerkmal besagt, dass Modelle stets Abbildungen eines
Originals sind. Dies kann auch wiederum ein Modell sein.
2. Das Verkürzungsmerkmal beschreibt die Tatsache, dass Modelle nicht alle Aspekte des zu modellierenden Originals wiedergeben. Der Erschaffer des
Modells beschränkt sich auf die ihm wichtig erscheinenden Aspekte des Originals.
3. Das pragmatische Merkmal besagt, dass Modelle eine Ersetzungsfunktion
erfüllen. Sie werden für bestimmte Benutzer erstellt, haben einen Zweck und
erfüllen ihre Ersetzungsfunktion nur eine Zeit lang.
Ein Modell bildet also immer nur die Wirklichkeit teilweise ab, da der Erschaffer
des Modells nur jene Aspekte in dem Modell erfasst, die ihm für den Zweck des
Modells wichtig erscheinen.
Kontext
Ebenfalls zu klären ist die Bedeutung des Begriffs Kontext. [AD99] definiert Kontext für das “context-aware computing field”, also den Bereich der kontextsensitiven
EDV, folgendermaßen:
“Context is any information that can be used to characterize the situation of an
entity. An entity is a person, place, or object that is considered relevant to the
interaction between a user and an application, including the user and applications
themselves.”
Kontext ist also jede Art von Information, die zur Beschreibung der Situation einer
Entität verwendet werden kann. Eine Entität kann entweder ein Ort, eine Person
oder ein Objekt sein, das für die Interaktion von Benutzer und Anwendung von
Interesse ist. Benutzer und Anwendung können ebenfalls Entitäten sein.
Situation
Im Zusammenhang mit dem Begriff des Kontexts sollte auch der Begriff der Situation geklärt werden. Eine Definition von Situation findet sich in [MH69]:
“A situation s is the complete state of the universe at an instant of time.”
10
Eine Situation ist also der Zustand des Universiums zu einer bestimmten Zeit.
Eine vollständige Erfassung der Situation ist nach dieser Definition nicht möglich,
es können immer nur bestimmte Fakten über eine Situation angegeben werde. Im
Gegensatz zum Kontext sagt die Situation nichts über die Relevanz der einzelnen
Aspekte für die Lage eines bestimmten Objekts aus und beschränkt sich auf einen
bestimmten Zeitpunkt.
Ontologie
Der Begriff der Ontologie kommt ursprünglich aus der Philosophie. Die Ontologie
ist die “philosophische Disziplin, die nach der grundlegenden Struktur des Seienden und der Wirklichkeit fragt” [mey07b]. In der Informatik versteht man unter
dem Begriff Ontologie nicht mehr die Lehre vom Sein, sondern eine “explicit specification of a conceptualization.” [Gru93]. Es gibt hier nicht die eine Ontologie
als wissenschaftliche Disziplin, sondern viele unterschiedliche Ontologien. Die oben
zitierte Definition von [Gru93] wurde später von [SBF98] verfeinert:
“An ontology is a formal, explicit specification of a shared conceptualization.”
Eine conceptualization ist ein abstraktes Modell eines Aspektes der Welt. Es besteht aus Definitionen von für diesen Aspekt wichtigen Konzepten, deren Eigenschaften und Beziehungen. Shared bedeutet, dass das modellierte Wissen allgemein
akzeptiert ist, also nicht die Sicht eines einzelnen auf die Welt darstellt. Die Forderung nach einer formal, explicit specification ist so zu verstehen, dass die Ontologie
in einer eindeutigen Sprache formalisiert werden muss, so dass sie nicht nur für
Menschen, sondern auch für Maschinen interpretierbar ist [SBF98, SS04].
Beschreibungslogik
Nach [SS04] sind Beschreibungslogiken (englisch Description Logics) “a family of
knowledge representation languages that can be used to represent knowledge of an
application domain in a structured and formally well-understood way.” Es handelt
sich also um Sprachen zur Wissensrepräsentation, mit deren Hilfe es möglich ist,
das Wissen um ein Gebiet strukturiert und formal darzustellen.
Die meisten Beschreibungslogiken sind Untermengen der Prädikatenlogik erster
Stufe, ihre Semantik ist formal und basiert auf Logik. Wichtige Aspekte des zu
modellierenden Gebiets werden durch abstrakte Konzepte beschrieben. Diese Konzepte werden aus einstelligen und zweistelligen Prädikaten, sogenannten atomaren
Konzepten und Rollen, konstruiert. Welche Konstruktoren, wie zum Beispiel das
logische Und oder die Negation, zur Verknüpfung von atomaren Konzepten und
Rollen zugelassen sind, hängt von der jeweiligen Beschreibungslogik ab.
Fast alle Beschreibungslogiken unterscheiden zwischen der sogenannten TBox
und der ABox [Baa03]. Die TBox besteht aus den Definitionen der Konzepte, also
den terminological axioms, die ABox aus den dazugehörigen konkreten Instanzen,
genannt assertions. Um die Widerspruchsfreiheit von TBox und ABox zeigen, und
auf das in ihnen enthaltene implizite Wissen zugreifen zu können, gehören zu
Beschreibungslogiken auch entsprechende Algorithmen, die dies ermöglichen.
11
Reasoner
Ein Reasoner ist ein solches Ableitungssystem für Beschreibungslogiken. Die ersten Systeme für Beschreibungslogiken bedienten sich sogenannter structural subsumption algorithms, moderne Systeme der tableau-based algorithms oder einer
Transformation in Modallogik [SS04, Baa03].
Mit Hilfe eines Reasoner ist es möglich eine Hierarchie von Konzepten einer Beschreibungslogik zu erstellen. Auch die Widerspruchsfreiheit von Konzepten und
Instanzen kann der Reasoner automatisch überprüfen. Ebenso ist es möglich Instanzen automatisch einem Konzept zuzuordnen. Beispiele für Reasoner sind RACER [HM01] und FaCT [Ian98].
OWL
In [SWM04] findet sich folgende Beschreibung von OWL: “The OWL Web Ontologoy Language is a language for defining and instantiating Web ontologies”. OWL
ist also eine Sprache zur Beschreibung von Ontologien, und speziell für den Einsatz im Internet konzipiert. Die Spezifikation wurde von der W3C Web Ontology
Working Group entwickelt und hat den Status einer W3C recommendation. In
Abschnitt 2.4.2 werden OWL und seine drei Versionen genauer beschrieben.
Semantic Web
Mit dem Semantic Web bezeichnet man eine mögliche Weiterentwicklung des jetzigen Internets. Während das Internet so, wie es zur Zeit existiert, seine Informationen hauptsächlich dem menschlichen Benutzer präsentiert, soll das Semantic
Web auch maschineninterpretierbare Informationen enthalten. Im Semantic Web
werden alle Dokumente mit Metainformationen, die ihren Inhalt beschreiben, erweitert. Diese Metainformationen können in Ontologien organisiert werden und
müssen maschinenlesbar sein. Somit können Programme unter anderem auf die
Informationen in den Dokumenten zugreifen und diese weiterverarbeiten. Das Ziel
des Semantic Web ist es, das menschliche Wissen, das zum Beispiel im Internet
enthalten ist, maschineninterpretierbarer zu machen und somit den Einsatz von
allerlei Anwendungen zu ermöglichen, die sich dieses Wissens bedienen [DFv03].
1.4 Aufbau der Arbeit
Am Anfang dieses ersten Kapitels wurden die Idee und Motivation dieser Arbeit
erläutert. Im zweiten und dritten Abschnitt wurde sowohl auf die Aufgabenstellung
eingegangen als auch ein paar wichtige Begriffe, die für das Verständnis der Arbeit
wichtig sind, geklärt.
Im zweiten Kapitel wird zuerst die Aufgabenstellung nochmals genauer erläutert.
Dann werden die Anforderungen an die zu entwickelnde Anwendung untersucht
und ihre Architektur vorgestellt. Die Wahl der verwendeten Sprachen, Frameworks
und Programme wird ebenso begründet wie mögliche Alternativen zu diesen analysiert werden. Außerdem wird noch auf die Erwartungen, die sich an den Einsatz
12
eines ontologischen Kontextmodells knüpfen, eingegangen.
Das zweite Kapitel beinhaltet eine ausführliche Beschreibung der ersten Version
der entwickelten Anwendung zur Kollisionsvermeidung. Hier wird besonders auf
die Ontologie und die Kollisionsberechnung eingegangen. Eine Beschreibung der
wichtigsten Java-Klassen der Anwendung findet sich in diesem Kapitel ebenso wie
eine Diskussion von Ergebnissen und Erweiterungsmöglichkeiten.
Im vierten Kapitel wird die zweite Version der entwickelten Anwendung vorgestellt. Der Schwerpunkt liegt hier auf den zwei neuen Ontologien und den Abweichungen von der ersten Version.
Die Unterschiede zwischen beiden Anwendungen werden im fünften Kapitel analysiert. Auch weitere Einsatzmöglichkeiten für die entwickelten Ontologien werden
hier genannt, ebenso wie mögliche Verallgemeinerungen, Anpassungsfähigkeit und
Grenzen der Ontologien.
Im sechsten Kapitel wird schließlich untersucht, inwieweit die Erwartungen an
den Einsatz eines ontologischen Kontextmodells erfüllt werden. Auch die grundsätzliche Eignung des Ansatzes sich eines ontologischen Kontextmodells für eine
Anwendung zur Kollisionsvermeidung bei Fahrzeugen zu bedienen, wird hier untersucht. Am Ende des Kapitels steht ein kurzer Ausblick.
13
2 Architektur
In diesem Kapitel wird allgemein die Architektur der zu entwickelnden Anwendung beschrieben. Zuerst wird die Aufgabenstellung genauer betrachtet, dann die
sich daraus ergebenden Anforderungen und der logische Aufbau der Anwendung.
Ebenso werden die Entscheidungen bezüglich der verwendeten Sprachen und Frameworks erläutert und zum Schluss des Kapitels werden noch mögliche Alternativen erwähnt.
2.1 Aufgabenstellung und Szenarien
In dieser Arbeit soll eine Anwendung zur Kollisionsvermeidung bei Fahrzeugen
entwickelt werden, die sich eines ontologischen Kontextmodells bedient.
Wichtig ist es zu erwähnen, dass Kollisionsvermeidung das Ziel der Anwendung
ist und sie somit klar von einem Autopiloten zu unterscheiden ist. Die Anwendung
soll nicht wie ein Autopilot dazu in der Lage sein, ein Fahrzeug autonom ohne
menschliches Eingreifen im Straßenverkehr zu steuern, sondern Funktionen zur
Kollisionsvermeidung bereitstellen. Sie dient also der Unterstützung eines menschlichen Fahrers. Diese Unterstützung geschieht durch die Gewinnung von Informationen, auf die entweder Fahrer oder auch das Fahrzeug reagieren können. Es
handelt sich also um einen Fahrerassistenten und nicht um einen Piloten.
In dieser Diplomarbeit werden zwei Ausführungen eines solchen Fahrerassistenten zur Kollisionsvermeidung erstellt. Beide Ausführungen bauen auf folgenden
Prämissen auf:
1. Alle Fahrzeuge können ihre Position und Richtung exakt bestimmen.
2. Die Fahrzeuge sind teil eines VANets und senden ihre Positions- und Geschwindigkeitsdaten regelmäßig an die anderen Verkehrsteilnehmer, die sich
in Reichweite ihrer Sender befinden.
Die beiden Varianten des Fahrerassistenten unterscheiden sich durch den Umfang
an Kontextinformationen, die in die Berechnungen zur Unfallvorhersage mit einfließen.
Erste Variante des Fahrerassistenten
In der ersten Variante des Fahrerassistenten werden relativ wenige Informationen über die Fahrzeuge und vor allem die restliche Umgebung verwendet. Sie beschränkt sich auf die aktuellen Positionswerte, die Richtung, die Geschwindigkeit,
14
die Beschleunigung und die Bremsbeschleunigung der Fahrzeuge. Natürlich müssen
auch die Maße der einzelnen Fahrzeuge bekannt sein. Informationen zum Streckenverlauf, Vorfahrtsregeln, Geschwindigkeitsbeschränkungen, Straßenverhältnisse usw
stehen nicht zur Verfügung.
Das Interessante an diesem Szenario ist es herauszufinden, welche Ergebnisse
sich mit diesen wenigen Daten erzielen lassen. Erstens soll untersucht werden, ob
man Unfälle korrekt vorhersagen kann und welche Arten von Fehleinschätzungen
auftreten. So könnten entweder mögliche Gefahren nicht erkannt werden, oder es
werden harmlose Situationen als gefährlich eingestuft. Zweitens ist zu beachten,
wie effizient eine Ontologie in diese Anwendung integriert werden kann, beziehungsweise ob der Einsatz eines ontologischen Modells hier überhaupt Sinn macht. Es
soll ermittelt werden, ob der Aufwand eine Ontologie in die Anwendung einzubinden gerechtfertigt ist und inwieweit zum Beispiel Zugriffe auf die Ontologie den
Fahrerassistenten verlangsamen.
Zweite Variante des Fahrerassistenten
In der zweiten Variante des Fahrerassistenten werden dem Programm mehr Kontextinformationen zur Verfügung gestellt. Bis jetzt beruhen die Berechnungen nur
auf fahrzeugbezogenen Daten, in dieser Variante kommen Informationen zum Straßennetz und zu allgemeinen Umweltbedingungen dazu.
Fahrzeuge erfassen zum Beispiel Informationen zur Helligkeit, und die Reaktionen des Assistenten werden den errechneten Sichtverhältnissen angepasst. Der
wesentliche Unterschied zum ersten Szenario ist aber die Modellierung des Straßennetzes. Jedes Fahrzeug kennt die Topographie des Straßennetzes. Um diese Informationen nutzen zu können, werden die reinen Fahrzeugdaten mit Daten zum
Straßennetz erweitert, das heißt die Fahrzeuge wissen sowohl auf welchem Straßenabschnitt sie sich befinden, als auch auf welchen Straßenabschnitten die restlichen
Verkehrsteilnehmer sind.
Ziel dieses Szenarios ist es zu untersuchen, ob und inwieweit sich mögliche
Mängel bezüglich der Unfallvorhersage der ersten Version des Assistenten durch
zusätzliche Kontextinformationen beheben lassen. Ebenso soll herausgefunden werden, wie aufwendig es ist das Kontextmodell, und somit die Ontologie des ersten
Szenarios, mit den zusätzlichen Konzepten, also Umweltbedingungen und Straßennetz, zu erweitern beziehungsweise die alte Ontologie mit neuen Ontologien zu
verknüpfen, die diese Konzepte modellieren. Auch der Einfluss des komplexeren
Modells auf die Performance des Assistenten ist bei der Bewertung dieses Szenarios
zu beachten.
15
2.2 Anforderung an Anwendungen und Architektur
Vor der Beschreibung des logischen Aufbaus des Fahrerassistenten sind zuerst die
Anforderungen an das Programm und die dazugehörende Architektur genauer zu
analysieren.
Situation
Die Anwendung soll in einer Situation eingesetzt werden, die sich in vielen Aspekten ständig ändert. Sowohl das eigene als auch die anderen Fahrzeuge ändern
laufend ihre Position, bremsen ab und beschleunigen und ändern dadurch ihre
Geschwindigkeit. Auch die Fahrtrichtung ist nicht konstant. Es ist sehr schwer
vorherzusagen wohin sich ein Fahrzeug bewegt, ob es an einer Kreuzung abbiegt,
ob die Spur gewechselt wird, ob es plötzlich abbremst oder mit konstanter Geschwindigkeit weiterfährt. Somit folgen die fahrzeugbezogenen Daten keinem Muster, auf das man sich verlassen kann. Auch wenn alle bisherigen Fahrzeuge an
einer Kreuzung geradeaus gefahren sind, heißt das noch lange nicht, dass es auch
alle nachfolgenden tun werden.
Anders sieht es bei den Umweltbedingungen aus. Temperaturschwankungen sind
meist nicht sehr plötzlich, Helligkeitsänderungen dagegen schon, zum Beispiel bei
der Einfahrt in einen Tunnel.
Das Straßennetz an sich ändert sich nur sehr langsam, Eingriffe in die Streckenführung kommen nur sehr selten vor. Probleme könnten temporäre Änderungen
zum Beispiel an Baustellen ergeben. Anders sieht es bei Vorfahrtsregeln aus, hier
müssten vor allem Ampeln beachtet werden.
Anforderungen
Aus dieser Situation ergeben sich mehrere Anforderungen an den Fahrerassistenten. Um sinnvolle Berechnungen durchführen zu können, benötigt man ständig die
aktuellen Daten aller Verkehrsteilnehmer. Aus veralteten Daten könnte man zwar
die neue Position abschätzen, dies ist aber sehr ungenau.
Auch die Sensordaten, die die Umweltbedingungen erfassen, sollten stets aktuell
sein. Änderungen der Sichtverhältnisse lassen sich ebenfalls nicht so leicht voraussagen. Allerdings ist der Einfluss auf die Qualität des Ergebnisses hier nicht so
dramatisch wie der einer falsch berechneten Fahrzeugposition.
Das Straßennetz dagegen muss nur sehr selten auf den neuesten Stand gebracht
werden. Der Straßenverlauf ändert sich quasi nicht, somit kann das Einlesen des
Straßennetzes länger dauern als die Aktualisierung von Fahrzeug und Sensordaten.
Vorfahrtsregeln dagegen müssten öfters überprüft werden, denn auch hier kann eine
falsche Schlussfolgerung fatale Folgen haben.
Wie sich diese von den Anforderungen an die Fahrzeugdaten unterschiedlichen
Forderungen an die Aktualität der Umwelt- und Straßendaten auf die Ontologien
zur Modellierung des Straßennetzes und der Umweltbedingungen auswirken, wird
in Abschnitt 4.2 und 4.3 genauer erläutert.
16
Zu beachten ist außerdem, dass Unfallvermeidung eine sicherheitskritische Anwendung ist. Somit müssen alle Berechnungen in Echtzeit durchgeführt werden
können. Fehler bei den Berechnungen sollten ebenfalls vermieden werden. Verspätete korrekte oder rechtzeitige falsche Ergebnisse können fatale Folgen haben,
wenn eine Gefahrensituation übersehen wird und es zum Unfall kommt. Problematisch ist hier, dass die Sensordaten immer mit Unsicherheit behaftet sind. Die
Messung der Position kann zum Beispiel nicht beliebig genau erfolgen und Messinstrumente können komplett ausfallen oder falsche Werte liefern. Nach [BK01]
können solche Unsicherheiten durch Erweiterung der zur Modellierung verwendeten Logik um Werte wie “notwendig” und “möglich” ausgedrückt werden. Diesen
Ansatz verfolgt zum Beispiel die Modallogik. Auch wahrscheinlichkeitstheoretische
Ansätze oder das Arbeiten mit unscharfen Mengen ist möglich [BK01]. In dieser
Arbeit wird aber nicht auf die Problematik unsicherer Daten eingegangen, der
Einfachheit halber wird angenommen, dass alle Daten korrekt und präzise sind.
Weitere Anforderungen an Architektur und Anwendung ergeben sich aus dem
Einsatzbereich. Da es im Straßenverkehr sehr viele verschiedene Fahrzeugtypen,
die von unterschiedlichen Herstellern produziert werden, gibt, ist ein hohes Abstraktionslevel der Anwendung von Vorteil. Eine abstrakte Anwendung, die nicht
auf einen Fahrzeugtyp abgestimmt ist, kann bei mehr Verkehrsteilnehmern zum
Einsatz kommen.
Von Vorteil wäre es auch, wenn es möglich wäre herstellerspezifische Daten zu
integrieren. Wenn also ein Hersteller Daten zu seinen Fahrzeugen in einer Ontologie
beschreibt, sollte es möglich sein, diese Daten in die Ontologie des Fahrerassistenten zu integrieren.
Als letzte Anforderung wäre die Ausbaufähigkeit um zusätzliche Kontextinformationen für andere Anwendungen zu erwähnen. Der Vorteil eines ontologischen
Kontextmodells ist seine Wiederverwertbarkeit für neue Anwendungen und seine
Erweiterbarkeit mit neuen Konzepten. Dies sollte bei den Ontologien des Fahrerassistenten ebenfalls gegeben sein.
2.3 Aufbau
Nach der Analyse der Voraussetzungen und Anforderungen wird in diesem Abschnitt der logische Aufbau des Assistenten erläutert. Der Aufbau unterscheidet
sich nicht für beide Szenarien, sie bestehen aus den selben logischen Komponenten.
Die Unterschiede zwischen beiden Anwendungen werden später in Kapitel 3 und
Kapitel 4 aufgezeigt.
2.3.1 Überblick über die logischen Komponenten
In Abbildung 2.1 wird ein Überblick über die einzelnen logischen Komponenten
gegeben. Dies sind im Einzelnen:
17
Abbildung 2.1: Die logischen Programmkomponenten
1. Der Simulator stellt die Inputdaten zur Verfügung, also zum Beispiel die Position und Geschwindigkeit aller Verkehrsteilnehmer und Daten zum Straßennetz, wenn die Anwendung diese benötigt. Außerdem reagiert der Simulator
auf den Output, das heißt Fahrzeuge werden gegebenenfalls abgebremst.
2. Mit Assistent wird in der Abbildung das Hauptprogramm des Fahrerassistenten bezeichnet. Es ist für die Koordination der einzelnen Anwendungskomponenten zuständig.
3. Über die Ein- und Ausgabe liest der Assistent die Daten der anderen
Fahrzeuge und die eigenen Sensordaten ein, leitet die Kontrollsignale weiter
und verschickt die Outputmessages mit den eigenen Fahrzeugdaten. Somit
stellt sie auch die Verbindung zum Netzwerk her.
4. Die Ontologie ist mit einem Reasoner verknüpft. Sie enthält das Kontextmodell in dem Fahrzeuge und gegebenenfalls auch Umweltsensoren und Straßennetz beschrieben sind. Die Ontologie wird regelmäßig mit neuen Daten
instanziiert und es können Anfragen an sie gestellt werden. Der Reasoner
leitet neue Fakten aus Modell und Daten ab.
5. Die eigentliche Anwendung stellt Anfragen an die Ontologie, wertet die
Daten aus und erstellt Kontrollkommandos, um die Reaktion auf die vorgefundene Situation zu steuern.
6. Die Kontrolleinheit im Fahrzeug reagiert auf die von der Anwendung erzeugten Signale, in dem sie zum Beispiel das Fahrzeug abbremst oder den
Fahrer warnt.
18
In den nächsten Abschnitten werden die Funktionen der einzelnen Komponenten
genauer erläutert.
2.3.2 Verkehrssimulator
Der Verkehrssimulator muss sowohl das eigene Fahrzeug und das Verhalten des
Fahrers, als auch die anderen Verkehrsteilnehmer in einem Straßennetz simulieren. Die durch die Verkehrssimulation erzeugten Daten bezüglich der Fahrzeuge
des Straßennetzes werden dem Assistenten als Inputdaten zur Verfügung gestellt.
Ebenso muss es möglich sein, den Simulator über die Anwendung zu steuern. Nur
so können die vom Fahrerassistenten errechneten Steuersignale auch umgesetzt
werden. Es ist also eine Schnittstelle zwischen Verkehrssimulator und Anwendung
nötig. Falls es in dem ausgewählten Verkehrssimulator nicht möglich ist die einzelnen Fahrzeuge direkt anzusprechen und zu steuern, muss der Simulator modifiziert
und an die Bedürfnisse des Fahrerassistenten angepasst werden.
Des Weiteren ermöglicht der Simulator auch eine Visualisierung der Anwendung.
Mit Hilfe des Simulators ist es möglich, die Reaktionen der einzelnen Fahrzeuge
auf die unterschiedlichen Verkehrssituationen zu veranschaulichen.
Ebenso hilfreich ist ein Verkehrssimulator zum Testen des Assistenten. Er stellt
einigermaßen realistische Verkehrsdaten zur Verfügung und erlaubt es, Mängel und
Fehlfunktionen des Assistenten zu finden. Auch der Einfluss des Assistenten auf
den Verkehrsfluss lässt sich mit dem Simulator untersuchen.
2.3.3 Hauptprogramm
Das Hauptprogramm des Assistenten koordiniert seine einzelnen Komponenten. Es
wird vom Fahrzeug, hier also vom Simulator, aus aufgerufen und mit Inputdaten
über eine spezielle Schnittstelle, die Ein- und Ausgabe, versorgt. Über dieselbe
Schnittstelle versendet es seine Outputmessages und die Kontrollsignale für die
Kontrolleinheit.
2.3.4 Ein- und Ausgabe
Die Ein- und Ausgabe dient als Schnittstelle zwischen dem Fahrzeugassistenten
und dem restlichen System. Über sie kommuniziert der Assistent mit dem Simulator und der Kontrolleinheit. Die Ein- und Ausgabe leitet die benötigten Sensordaten des Fahrzeugs vom Simulator an den Assistenten weiter, ebenso die Positionsund Geschwindigkeitsdaten der anderen Fahrzeuge. Der Assistent schreibt in umgekehrter Richtung seine zu verschickenden Outputmessages und die Steuerbefehle
in die Ein- und Ausgabe, von wo sie vom Simulator beziehungsweise der Kontrolleinheit im Fahrzeug ausgelesen und ausgewertet werden.
Somit ist der Assistent selber unabhängig vom verwendeten Simulator. Er sieht
nur die Ein- und Ausgabe und kommuniziert indirekt mit dem Simulator.
19
2.3.5 Ontologie und Reasoner
Die Ontologie beschreibt das abstrakte Modell des Kontextes, also je nach Szenario
entweder nur das der Fahrzeuge, oder auch der Umwelt und des Straßennetzes. Das
Modell ist in einer OWL1 -Datei beschrieben. Zum Erstellen einer solchen Datei ist
ein Editor sehr hilfreich (siehe Abschnitt 2.4.3).
Wenn die Ontologie auf andere Modelle zurückgreift, also zum Beispiel die Fahrzeugontologie um ein Modell des Straßennetzes erweitert wird, dann werden diese
Modelle, die ebenfalls in OWL-Dateien vorliegen müssen, geladen und in das ursprüngliche Modell importiert.
In der Ontologie wird aber nicht nur das abstrakte Modell selbst gespeichert,
sondern auch die aktuellen Fahrzeug-, Umwelt- und Straßendaten. Das Modell
wird also regelmäßig instanziiert.
Des Weiteren ist die Ontologie mit einem Reasoner verknüpft. Der Reasoner
muss natürlich die Sprache, in der die Ontologie beschrieben ist, verstehen, in diesem Fall also OWL, um die Sprachkonstrukte richtig zu interpretieren. Er leitet
aus dem Modell weitere Fakten ab, und zwar sowohl aus der Beschreibung des
Modells, als auch aus den Instanzen. So kann man zum Beispiel aus der transitiven Eigenschaft erreichbar schließen, dass wenn Straße B von Straße A aus
erreichbar ist, und Straße C von Straße B, auch Straße C von A erreichbar ist.
Weitere Möglichkeiten sind unter anderem die Klassifizierung von Instanzen und
das Überprüfen der Widerspruchsfreiheit von Datensatz oder Modell.
Von Vorteil ist es, wenn man den Reasoner mit eigenen Regeln erweitern kann.
So wäre es denkbar, eine Regel aufzustellen, dass wenn eine Straße nur eine Spur
hat und auf dieser Spur der Verkehr nur in eine Richtung erlaubt ist, die Straße
eine Einbahnstraße ist.
Das mit Daten instanziierte Modell beziehungsweise die Ontologie dienen der
eigentlichen Anwendung nun als “Datenbank”. Die Anwendung kann Anfragen an
die Ontologie stellen, also zum Beispiel gib mir alle Fahrzeuge vom Typ PKW oder
alle Fahrzeuge, die sich auf derselben Fahrbahn befinden und sich nicht bewegen.
In beiden Szenarien gibt es nicht nur eine Ontologie, sondern mehrere. So ist es
sinnvoll, die Sensordaten, wie zum Beispiel Temperatur und anderen Umweltfaktoren, von den Fahrzeugdaten getrennt zu halten. Ebenso werden die vom Reasoner
abgeleiteten Daten in eigenen Ontologien abgespeichert. Der Grund hierfür ist es,
dass kleinere, weniger komplexe und mit einer geringeren Anzahl von Instanzen
versehene Ontologien schneller auf Anfragen antworten können. Ebenso ist es leichter, komplett neue Ontologien mit einem Reasoner abzuleiten als das abgeleitete
Modell zu verändern, wenn quasi alle Daten sich laufend ändern, wie das in der
Fahrzeugontologie der Fall ist.
Mit jeder Ontologie kann ein eigener Reasoner verknüpft werden, der auf diese
Ontologie abgestimmt ist. Ebenso kann jeder Reasoner mit seinem eigenen Re1
http://www.w3.org/TR/owl-features/
20
gelsatz erweitert werden. Auch dies führt zu reduzierten und somit optimierten
Regelsätzen, die die Geschwindigkeit der Anfragen und des Reasoners erhöhen
können.
2.3.6 Anwendung
Die Anwendung führt die eigentlichen Berechnungen zur Kollisionsvermeidung
durch. Sie wird vom Hauptprogramm des Assistenten gestartet. Die nötigen Daten
für die Berechnungen erhält sie aus der Ontologie, an die sie Anfragen richtet. Das
Ergebnis dieser Anfragen wird ausgewertet und führt zu einer Abschätzung der Gefahrensituation. In beiden Szenarien wird der nächste Zeitpunkt einer möglichen
Kollision berechnet. Aus diesem Zeitpunkt wird ein Gefahrenlevel abgeleitet. Anhand des Gefahrenlevels werden die Signale erzeugt, mit denen die Kontrolleinheit
gesteuert wird. Die Signale werden über das Hauptprogramm an die Ein- und
Ausgabeeinheit weitergeleitet. Sowohl im ersten als auch im zweiten Szenario finden sich zwei Versionen dieser Anwendung, die beide vom Assistenten aufgerufen
werden. Eine berechnet, ob es zu einem Unfall kommt, wenn alle Fahrzeugdaten konstant bleiben, die andere überprüft bei niedrigen Geschwindigkeiten, ob es
möglich ist, zu beschleunigen ohne einen Unfall zu provozieren. Die Einführung
einer solchen zweiten Anwendung wird in Abschnitt 3.5.10 und 3.6.1 motiviert.
2.3.7 Auswertung der Kontrollsignale
Die letzte der logischen Komponenten ist die Einheit zur Reaktion auf die vom
Assistenten erzeugten Kontrollsignale. Sie empfängt ihre Daten über die Ein- und
Ausgabeeinheit, das heißt sie wertet die Kontrollsignale des Assistenten aus und
leitet aus ihnen die nötige Reaktion ab. Verschiedene Reaktionen sind möglich,
unter anderem kann die Kontrolleinheit gegebenenfalls in die Fahrzeugsteuerung
des Verkehrssimulators eingreifen.
Die auf eine erkannte Gefahr hin verschiedenen möglichen Reaktionen kann man
nach [DSK05] in vier Kategorien einteilen:
1. Autonomous: Das Fahrzeug reagiert selbstständig, ohne dass der Fahrer die
Kontrolle über die Reaktion hat.
2. Action: Der Fahrer wird gewarnt und muss sofort handeln um die Gefahr
abzuwenden.
3. Attention: Sicherheitsrelevante Informationen werden angezeigt. Sie erfordern aber keine sofortige Handlung.
4. Awareness: Informationen werden weitergeleitet, die der Fahrer wissen sollte.
21
Es ist also möglich, dem Fahrer entweder mit Hilfe von Warnsignalen auf die
drohende Gefahr aufmerksam zu machen oder direkt in das Fahrzeugverhalten
einzugreifen. Folgende Eingriffe in die Fahrzeugsteuerung sind denkbar:
• Übernahme der Lenkung
• Beschleunigen
• Abbremsen
In beiden Szenarien beschränkt sich die Reaktion auf die dritte Option, also das
Abbremsen. Eingriffe in die Lenkung sind zu kompliziert und Beschleunigen scheint
zu riskant, wenn der Assistent versagt.
Auch bei den Warnsignalen, mit denen der Fahrer auf eine drohende Gefahr
aufmerksam gemacht werden soll, gibt es unterschiedliche Möglichkeiten. Unter
anderem sind folgende Arten von Warnsignalen in einem Fahrzeug denkbar:
• Warnung durch Tonsignale oder Sprache
• Warnung durch Warnleuchten
• Graphische oder textuelle Informationen an einem Bildschirm
In diesem Programm wird die Art der Warnsignale, die erzeugt werden, nicht näher
spezifiziert. Wenn ein Fahrzeug von der Kontrolleinheit ein entsprechendes Signal
erhält, ändert sich je nach Signal seine Farbe auf dem Bildschirm.
Ob ein Fahrzeug abgebremst oder nur gewarnt wird, hängt vom berechneten
Gefahrenlevel ab. Je höher das Gefahrenlevel, desto intensiver die Warnung, also
die Farbe, und ab einem bestimmten Level bremst das Fahrzeug dann ab.
Welche Reaktion angemessen ist, beziehungsweise welches Gefahrenlevel sich
aus einer bestimmten Situation ergibt, ist relativ schwer zu entscheiden. Einerseits
besteht die Gefahr, dass die Unfallgefahr zu hoch eingeschätzt wird, andererseits
sollen möglichst alle Unfälle vermieden werden.
Bei zu häufigen Warnsignalen besteht die Gefahr der Abstumpfung. Die Fahrer
reagieren eventuell nicht mehr, wenn die ständigen Warnungen sich als falsch oder
übertrieben herausstellen. Im schlimmsten Fall schaltet der Fahrer das System
ab oder ignoriert es völlig. Ebenso müssen die Warnungen klar und übersichtlich
sein, da sie sonst nur zur Verwirrung oder Verunsicherung des Fahrers beitragen
[MH02].
Auch Eingriffe in die Fahrzeugsteuerung bergen Gefahren. Die meisten Autofahrer wollen die volle Kontrolle über ihr Fahrzeug behalten und unnötiges Abbremsen
oder gar Eingriffe ins Lenkverhalten können sowohl den Fahrer verärgern als auch
zu Gefahrensituationen führen, wenn der Fahrer versucht gegenzusteuern. Ebenso
können falsche Eingriffe Unfälle provozieren, zum Beispiel ein plötzliches unnötiges
Abbremsen des Fahrzeuges. Auch der Verkehrsfluss wird durch unnötige Eingriffe
gestört, was zu Staus führen könnte.
22
Warnsignale sollten also nicht zu oft produziert werden und nicht zu viele gleichzeitig. Auch Eingriffe in die Fahrzeugsteuerung sollten nur erfolgen, wenn es absolut notwendig ist.
Nicht alle Autofahrer haben denselben Fahrstil, manche fahren aggressiver, andere passiver. Da aggressive Fahrer oft viel später ausweichen als passive, sich diese
Ausweichmanöver aber nicht vorhersehen lassen, ist es schwierig ein System zu
entwickeln, das den Bedürfnissen von aggressiven Fahrern und denen von passiven
Fahrern entspricht. Wenn die aggressiven Fahrer nicht ständig von dem Assistenten
gewarnt oder abgebremst werden sollen, dann können nicht alle Kollisionen vermieden werden, da die Warnung eventuell zu spät erfolgt. Eine Berücksichtigung
des Fahrerverhaltens könnte hier zumindest teilweise Abhilfe schaffen [SSH98].
Es besteht aber immer noch das Problem, dass sich, besonders bei aggressivem
Fahrverhalten, nicht voraussagen lässt, ob der Fahrer rechtzeitig ausweichen wird.
Somit können, wenn die Zahl der Warnungen und Eingriffe nicht zu hoch sein soll,
nicht alle Unfälle verhindert werden.
Aber auch wenn eine Kollision nicht vollständig verhindert werden kann, heißt
das nicht, dass der Fahrerassistent sinnlos ist. Auch eine Reduktion der Geschwindigkeit vor der Kollision kann schon als Teilerfolg gewertet werden. Da die kinetische Energie, die bei einem Unfall wirkt, von der Geschwindigkeit quadratisch
abhängt (Ekin = 12 mv 2 ), führt Abbremsen auf jeden Fall zu weniger schweren
Unfällen und somit zu geringeren Personen- und Sachschäden.
Es ist also nötig genau abzuwägen wie hoch die Gefahr ist und welche Reaktion angemessen ist. Hier liegt ein entscheidender Vorteil des Ansatzes den Fahrerassistenten mit einem ontologischen Kontextmodell auszustatten. Die Einbeziehung weiterer Kontextinformationen, also nicht nur der reinen Fahrzeugdaten,
in die Berechnung des Gefahrenlevels macht es leichter die Gefahren richtig einzuschätzen und entsprechend zu reagieren. So wird zum Beispiel bei schlechten
Sichtverhältnissen das Gefahrenlevel von der Kontrolleinheit entsprechend erhöht,
da anzunehmen ist, dass der Fahrer andere Fahrzeuge vielleicht nicht mehr rechtzeitig sieht. Somit kann der Fahrer bei Dunkelheit oder Nebel früher gewarnt werden oder das Fahrzeug abgebremst werden. Von Vorteil ist es auch, dass es den
verschiedenen Anwendungen überlassen bleibt, wie sie auf den Kontext reagieren.
Dies wird durch die Maschinenlesbarkeit des Modells gewährleistet.
2.4 Verwendete Werkzeuge und Erwartungen an die Ontologie
Im letzten Abschnitt wurde der logische Aufbau des Assistenten und seine Verknüpfung mit einem Verkehrssimulator erläutert, hier werden die Techniken zur
Implementierung, also Werkzeuge wie Sprachen und Frameworks, beschrieben.
Ebenso werden die Entscheidungen für die einzelnen Werkzeuge genauer begründet.
Am Ende des Abschnitts werden die Erwartungen, die mit der Verwendung eines
ontologischen Kontextmodells im Assistenten verbunden sind, erläutert.
23
2.4.1 Visual Traffic Simulation
Nach [KR07] können Verkehrssimulatoren je nach dem Detailgrad der Simulation
in vier verschiedene Gruppen eingeteilt werden:
• Makroskopische Verkehrssimulatoren sind die abstraktesten. Sie verwenden
den Verkehrsfluss als Grundlage für die Simulation.
• Mesoskopische simulieren ein wenig detailliertes Fahrzeugverhalten. Das
Abstraktionslevel liegt zwischen den makroskopischen und den mikroskopischen Verkehrssimulatoren.
• Bei mikroskopischen Simulatoren wird jedes einzelne Fahrzeug simuliert,
das Fahzeugverhalten basiert auf Fahrzeugeigenschaften und Fahrerverhalten.
• Sub-Mikroskopische Simulatoren simulieren zusätzlich die einzelnen Bauteile der Fahrzeuge.
Ein mikroskopischer Verkehrssimulator ist ideal für die Zwecke dieser Arbeit geeignet. Es muss aber möglich sein die einzelnen Fahrzeuge zumindest abzubremsen, um die Reaktionen der Kontrolleinheit zu simulieren. Die Simulation einzelner Bauteile im Fahrzeug, wie sie ein submikroskopischer Simulator ermöglichen
würde, ist dagegen nicht nötig. Meso- und makroskopische Simulatoren sind andererseits zu abstrakt, da sie das Verhalten der einzelnen Fahrzeuge nicht oder nur
sehr ungenau simulieren.
In dieser Arbeit wird der Visual Traffic Simulation - Simulator [Fot02], kurz
VIS SIM, als Verkehrssimulator verwendet. Mögliche Alternativen werden in Abschnitt 2.5.1.1 und 2.5.1.2 beschrieben.
VIS SIM ist ein mikroskopischer Verkehrssimulator. Er erlaubt das Erzeugen
von einfachen und räumlich sehr beschränkten Straßennetzen mit Hilfe eines grafischen Editors. Dies hat den Vorteil, dass es sehr schnell und ohne großen Aufwand möglich ist ein simples Straßennetz zu erstellen. Die Straßennetze können
auch abgespeichert werden. Dass das simulierte Straßennetz nur relativ klein ist,
ist für Tests zur Funktionsweise der Kollisionsvermeidung keine gravierende Einschränkung.
Schwerer wiegt da schon die Tatsache, dass der Simulator nur die Arbeit eines
Studenten ist. Fehler im Simulator sind also keineswegs auszuschließen. Ein wissenschaftlich anerkannter Simulator wie SUMO (siehe Abschnitt 2.5.1.1) würde
hier zuverlässigere Testergebnisse liefern. Die Gründe, die trotzdem gegen eine
Verwendung von SUMO sprechen, werden in Abschnitt 2.5.1.1 erläutert.
Die Unzuverlässigkeit zeigt sich bei Unregelmäßigkeiten bezüglich der Maßeinheiten, also zum Beispiel der Umrechnung von mph in km/h, unrealistisch hohen
Beschleunigungswerten der Fahrzeuge und Fehlern bei der Umrechnung von Pixeln
24
in Meter. Diese Mängel wiegen aber nicht besonders schwer, da unrealistische Beschleunigung, falsche Geschwindigkeiten oder Fehler bei Längeneinheiten nicht die
Funktionsweise des Simulators an sich beeinträchtigen. Realistische Abschätzungen,
wann ein Fahrzeug abbremsen sollte, sind mit diesem Simulator zwar nicht möglich,
aber es ist möglich zu zeigen, ob der Fahrerassistent prinzipiell funktioniert oder
nicht. Die zu beobachtenden Vorteile oder Schwachstellen des Assistenten hängen
nicht von realistischen Fahrzeugmaßen oder korrekten Längeneinheiten ab.
VIS SIM hat wie die meisten Verkehrssimulatoren ein kollisionsfreies Verkehrsmodell, Unfälle treten also im normalen Betrieb nicht auf. Dies lässt sich aber bei
Kreuzungen mit einem einfachen Trick beheben. Da VIS SIM als Kreuzungstyp
auch Brücken zur Verfügung stellt, können Unfälle an Kreuzungen mit Hilfe von
Brücken simuliert werden. Wann immer ein Fahrzeug über die Brücke fährt, ein
anderes sich darunter befindet und sie sich teilweise übereinander befinden, wird
dies als Kollision angesehen. Es ist also sehr einfach möglich, Unfälle zu simulieren,
ohne in den Simulator einzugreifen.
Der Simulation von Unfällen kommt ebenfalls zu gute, dass VIS SIM die Position aller Fahrzeuge mehrmals pro Sekunde, und zwar alle 50 Millisekunden,
neu berechnet. Somit werden, zumindest bei normalen Geschwindigkeiten, keine
Kollisionen übersehen.
Ein weitere Vorteil ist die vorhandene Visualisierung, die zwar einfach, aber funktional ist. Dank dieser Visualisierung und dem schnellen Erzeugen von Straßennetzen ist es schon während des Programmierens ohne großen Aufwand möglich,
Fehler bei der Kollisionsberechnung zu finden.
Außerdem steht der Quellcode für VIS SIM zur Verfügung, es ist also möglich
nötige Anpassungen an dem Programm vorzunehmen und zum Beispiel die Kontrolleinheit in den Simulator zu integrieren. Des weiteren ist er in Java geschrieben,
was die Integration mit dem Fahrerassistenten, der ebenfalls in Java geschrieben
ist, ganz erheblich erleichtert.
Als letzter Vorteil ist noch der relativ geringe Umfang des Quellcodes zu nennen. Dies erleichtert es ebenfalls den Simulator an die Bedürfnisse des Assistenten
anzupassen und auch ein paar der erwähnten Mängel, speziell die zu hohen Beschleunigungswerte, zu korrigieren.
Insgesamt lässt sich sagen, dass VIS SIM zwar kein perfekter Verkehrssimulator
ist, aber Dank seiner Vorteile, speziell der einfachen Editierbarkeit, der simplen
Generierung von Straßennetzen und der Kompatibilität mit den restlichen Komponenten der Architektur, den anderen Alternativen auf jeden Fall vorzuziehen
ist.
25
2.4.2 OWL
Als Modellierungssprache für die Ontologie bietet sich OWL an. Es wird von der
W3C Web Ontology Working Group2 entwickelt und ging aus den beiden Sprachen
DAML und OIL hervor. OWL soll der zukünftige Standard zur Beschreibung von
Web-Ontologien werden [SWM04].
OWL besitzt eine wohldefinierte Syntax und eine formale Semantik. Eine weitere wichtige Eigenschaft ist die Möglichkeit einen Reasoner zur Unterstützung
einzusetzen. Die formale Semantik erlaubt es präzise, eindeutige Angaben zu machen, die wohldefinierte Syntax führt dazu, dass in OWL beschriebene Modelle
ohne weitere Informationen für Maschinen lesbar sind. Der Einsatz eines Reasoners ermöglicht es automatische Schlüsse auf der Grundlage des Modells sowohl
aus den Daten als auch aus dem Modell zu ziehen.
Die Sprache OWL verwendet eine auf XML basierende Syntax und baut auf
RDF und RDF Schema auf, ist aber nur teilweise mit RDF Schema kompatibel.
Die Unterschiede von OWL und RDF beziehungsweise RDF Schema werden in
Abschnitt 2.5.3 erläutert.
Abbildung 2.2: Einfache Klassenhierarchie und Properties
In OWL werden Klassen und Klassenhierarchien definiert. Diese Klassen können
gewisse Eigenschaften, sogenannte Properties haben. Auch Properties können in
Hierarchien strukturiert werden. Jede Property hat einen Definitionsbereich und eine Wertemenge, wobei hier zwischen Class und Datatype Properties unterschieden
wird. Class Properties bilden eine Klasse auf eine andere ab, Datatype Properties
Klassen auf vordefinierte Datentypen wie Integer, Float, String oder Date. Das Beispiel in Abbildung 2.2 zeigt die Klasse Kleinwagen, die als Unterklasse der Klasse
PKW definiert ist. Jeder PKW hat genau eine Datatype Property Geschwindigkeit, und eine Class Property Fahrer. Die Property Fahrer bildet die Klasse PKW
2
http://www.w3.org/TR/owl-features/
26
auf die Klasse Mensch ab, wobei die Beschränkung hier nicht bei genau einem
Fahrer liegt, sondern bei maximal einem Fahrer, da es auch parkende Autos gibt.
Des Weiteren könnte man sich überlegen, dass Geschwindigkeiten sowohl in
km/h, als auch in mph angegeben werden können und zwei Subproperties für Geschwindigkeit definieren. Folgende OWL-Datei beschreibt die einfache Hierarchie
der drei Properties:
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns="http://home.in.tum.de/lutzg/owl/geschwindigkeit.owl#"
xml:base="http://home.in.tum.de/lutzg/owl/geschwindigkeit.owl">
<owl:Ontology rdf:about=""/>
<owl:DatatypeProperty rdf:ID="kmh">
<rdfs:subPropertyOf>
<owl:DatatypeProperty rdf:ID="Geschwindigkeit"/>
</rdfs:subPropertyOf>
</owl:DatatypeProperty>
<owl:DatatypeProperty rdf:ID="mph">
<rdfs:subPropertyOf rdf:resource="#Geschwindigkeit"/>
</owl:DatatypeProperty>
</rdf:RDF>
Am Anfang der Datei werden die Namensräume (englisch namespace) definiert. Die
Datei selbst erhält http://home.in.tum.de/lutzg/owl/geschwindigkeit.owl#
als URI. Die Definition der Propertyhierarchie geschieht mit Hilfe von RDFSKonstrukten, die Property Geschwindigkeit wird in der Definition von kmh eingeführt. Abbildung 2.3 zeigt die daraus resultierende Hierarchie der Properties
Geschwindigkeit, kmh und mph.
Sowohl Datatype als auch Class Properties können mit Eigenschaften wie Kardinalität, Transitivität, Symmetrie usw versehen werden. Mit Hilfe der Kardinalität
von Properties kann man zum Beispiel festlegen, dass ein Fahrzeug genau eine
Geschwindigkeit hat. Symmetrie gilt unter anderem für eine Property Kollisionspartner, die zwei an einem Unfall beteiligte Fahrzeuge verknüpft, Transitivität für
die Erreichbarkeit von Knoten in einem Graphen. Auch bei den Definitionen von
Klassen bietet OWL Möglichkeiten, die über die simple Klassen und Subklassenhierarchie hinausgehen. In OWL ist es möglich neue Klassen als boolsche Klassen
von bereits existierenden Klassen zu definieren. Eine denkbare Definition wäre,
dass jedes Fahrzeug, das nicht mein eigenes ist, das eines anderen Verkehrsteilnehmers sein muss. Ebenso kann man definieren, dass ein Fahrzeug nicht sowohl ein
PKW als auch ein LKW sein kann, die beiden Klassen also disjunkt sind.
27
Abbildung 2.3: Einfache Propertyhierarchie
Das OWL-Modell, das aus Klassen und Properties besteht, kann mit Daten
instanziiert werden. Instanzen sind sozusagen Individuen der einzelnen Klassen.
Zum Beispiel kann Uli als Instanz der Klasse Mensch kreiert werden, der als Fahrer
in seinem blauen Auto, einem Kleinwagen, mit einer Geschwindigkeit von 60 km/h
fährt. In Beschreibungslogiken wird das Modell auch als TBox bezeichnet und die
Instanzen als ABox. Sowohl das Modell, als auch die Instanzen werden in OWL in
der selben Datei abgespeichert.
Eine Besonderheit von OWL ist, dass es in drei Varianten existiert. Die Eigenschaften der einzelnen Versionen sind [SWM04] und [Mv04] entnommen:
• OWL Full: Dies ist die komplette Sprache. Sie ist voll kompatibel mit RDFS.
Die strikte Trennung von Klassen und Individuen gilt hier nicht, außerdem
ist es möglich, die Konstruktoren von RDF und OWL neu zu definieren.
• OWL DL: Die Trennung von Individuen und Klassen ist hier gegeben, Neudefinitionen von RDF- oder OWL-Konstruktoren sind nicht möglich. OWL
DL enthält alle OWL-Konstrukte mit der Einschränkung, dass Properties
von Klassen verschieden und außerdem entweder Datatype oder Object Properties sein müssen. Es kann auf eine Beschreibungslogik abgebildet werden
und ist dadurch entscheidbar. Außerdem ermöglicht dies den Einsatz von
Reasonern, die für Beschreibungslogiken entwickelt wurden.
• OWL Lite: Dies ist die am wenigsten mächtige Version von OWL. Sie
erlaubt hauptsächlich die Definition einfacher Klassenhierarchien und Beschränkungen der Kardinalität von Properties mit den Werten Eins und Null.
OWL Full ist die mächtigste der drei Versionen, OWL Lite die am wenigsten
mächtige. Der Vorteil in der Staffelung in drei Sprachvarianten mit unterschiedlicher Geschwindigkeit liegt in der Möglichkeit, die Mächtigkeit der Sprache mit der
Geschwindigkeit und Qualität der Unterstützung durch Reasoner abzuwägen. Je
mächtiger die Sprache, desto langsamer sind die dazu passenden Reasoner. Probleme in OWL Full können auch unentscheidbar sein.
28
OWL DL hat den Vorteil, dass es auf eine Beschreibungslogik abgebildet werden
kann und ermöglicht es somit Reasoner, die für Beschreibungslogiken geschrieben
wurden, zu verwenden. Beispiele für solche Reasoner sind RACER3 [HM01] und
FaCT4 [Ian98].
Für OWL existiert das Java Framework Jena. Jena stellt weitere Reasoner für
OWL zur Verfügung. Ebenso gibt es Editoren zur Erstellung von OWL-Ontologien,
zum Beispiel Protégé (siehe Abschnitt 2.4.3), OntoEdit5 und OILed6 . Auch Querysprachen, mit deren Hilfe man Anfragen an die mit Daten instanziierte OWLOntologie stellen kann, sind vorhanden.
Auf Grund der oben aufgezählten Eigenschaften eignet sich OWL als Sprache
zur ontologischen Kontextmodellierung. Auch wegen der vorhandenen Werkzeuge
wird OWL zur Beschreibung der Ontologien im Fahrerassistenten gewählt.
Von Vorteil sind besonders die Möglichkeit zwischen Mächtigkeit und Geschwindigkeit abwägen zu können, ebenso wie die Tatsache, dass OWL der zukünftige
Standard für das semantische Web werden soll. Ersteres wiegt besonders schwer,
da die Kollisionsberechnung in Bruchteilen von Sekunden geschehen muss, also ein
möglichst effizienter Reasoner nötig ist. Auch die vorhandenen Editoren, Querysprachen und Frameworks einschließlich Reasoner sprechen für OWL.
2.4.3 Protégé
Protégé ist ein Editor zur Erstellung von Ontologien. [GMF+ 03] enthält einen
kurzen Überblick zur Entwicklung des Editors, weitere Informationen finden sich
auf der Homepage7 . Da OWL eine XML-basierte Syntax hat, ist es zwar möglich,
OWL-Dateien im Texteditor zu schreiben, aber äußerst mühsam und auch fehleranfällig. Deshalb ist es von Vorteil, einen speziellen Editor zur Formulierung
der OWL-Ontologie zu verwenden.
Protégé wird an der Stanford University entwickelt. Er unterstützt sowohl OWL
Full als auch OWL DL und OWL Lite [KFFM04]. Ontologien können in unterschiedlichen Formaten abgespeichert werden, sowohl in einem Protégé eigenen Format als auch zum Beispiel in RDF Schema, in N-Tripeln oder als OWL-Datei in
XML-Kodierung.
Es ist möglich sowohl das Modell zu definieren, als auch Instanzen für einzelne
Klassen zu erzeugen und anzuzeigen.
Protégé unterstützt den Benutzer während der Entwicklung einer Ontologie. So
kann man externe Reasoner wie FaCT oder RACER an Protégé anbinden. Diese
erlauben es das Modell und die Instanzen auf Konsistenz zu überprüfen. Auch das
Ableiten weiterer Klassen mit Hilfe eines Reasoners ist möglich.
3
http://www.racer-systems.com
http://www.cs.man.ac.uk/ horrocks/FaCT/
5
http://www.ontoprise.de
6
http://oiled.man.ac.uk
7
http://protege.stanford.edu/
4
29
Ein weiteres Merkmal des Protégé-Editors ist es, dass er Anfragen mittels SPARQL an die definierte Ontologie erlaubt. Die Query-Sprache SPARQL wird in Abschnitt 2.4.4 genauer beschrieben. Da SPARQL als Querysprache für den Fahrerassistenten gewählt wird, erleichtert dies die Zusammenstellung von korrekten
SPARQL-Queries ganz erheblich.
Protégé ist also ein sehr brauchbarer Editor zum Erstellen von OWL-Ontologien,
da er alle drei OWL-Varianten beherrscht und außerdem noch Anfragen in der
verwendeten Querysprache erlaubt. Zusätzlich ist der Umgang mit Protégé bei
Kenntnis von OWL auch sehr schnell erlernbar.
2.4.4 SPARQL
Um die in der Ontologie gespeicherten Daten auch nutzen zu können, muss es
möglich sein, Anfragen an die Ontologie zu stellen. Diese Anfragen werden in einer
Querysprache formuliert. Als Querysprache wird SPARQL ausgewählt.
SPARQL wird von W3C8 entwickelt. Es ist als Querysprache für RDF-Graphen
gedacht, es sind aber auch Anfragen an OWL-Dateien möglich, da diese sich der
RDF-Syntax bedienen.
Zur Veranschaulichung hier ein einfaches Beispiel eines SPARQL-Querys:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX kontext: <http://stud.tejp.de/georg/onto/fahrzeug.owl#>
SELECT ?x
WHERE { ?x rdf:type kontext:Eigenes_Fahrzeug }
Mit PREFIX werden die Namensräume definiert, hier also rdf: für die RDFSyntax, die unter der URI <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
definiert ist und kontext: für die OWL-Datei fahrzeug.owl mit der dazugehörenden URI <http://stud.tejp.de/georg/onto/fahrzeug.owl#>.
Die Anfrage liefert alle Treffer für die Variable x, die ein Vergleich der in der
WHERE-Klausel angegeben Tripel mit den in der Ontologie gespeicherten Tripeln
ergibt. In diesem Fall also alle Instanzen vom Typ Eigenes_Fahrzeug, wie er in
der Datei fahrzeug.owl definiert ist. Das Ergebnis wird als Menge von RDFTripeln zurückgegeben.
SPARQL ermöglicht es, auch auf unterschiedliche Datensätze zuzugreifen, indem zum Beispiel die Anfragen an die Vereinigung der RDF-Graphen gestellt
wird. Auch sind optionale Bedingungen möglich oder Tests auf Variablenwerte.
Man kann also nach allen Fahrzeugen suchen, die eine gewisse Geschwindigkeit
überschreiten. Auch Filter, die reguläre Ausdrücke beim Testen von Strings verwenden, sind möglich.
Ein Nachteil von SPARQL ist es, dass es keine Transitivität unterstützt. Dieses
Problem lässt sich aber umgehen, indem man vor einer Anfrage an die Ontologie
8
http://www.w3.org/TR/rdf-sparql-query/
30
mit Hilfe eines Reasoners die transitive Hülle erzeugt und die SPARQL-Anfrage
dann an die abgeleitete Ontologie gestellt wird.
SPARQL ist hinreichend mächtig für Anfragen des Fahrerassistenten, auch wenn
es keine auf OWL spezialisierte Sprache ist. Des Weiteren existiert noch keine ausgereifte OWL-Querysprache, die weitere Eigenschaften von OWL, wie zum Beispiel
die Definition von Transitivität bei Properties, unterstützt. Ein weiterer Grund für
die Wahl von SPARQL ist die Tatsache, dass es von Jena und Protégé (siehe Abschnitt 2.4.5 und Abschnitt 2.4.3) unterstützt wird.
2.4.5 Jena
Jena ist eine Java Programmierumgebung für RDF, RDF Schema, OWL und
SPARQL. Es ist ein Open Source Projekt. Ausführliche Informationen und eine
detaillierte Dokumentation finden sich auf der Homepage9 .
Jena bietet eine Programmierschnittstelle für RDF. Hier ist es unter anderem
möglich Modelle aus RDF-Dateien zu erzeugen, Tripel hinzuzufügen und die Modelle in RDF-Dateien zurückzuschreiben. Ebenso können einfache Anfragen an die
RDF-Modelle gestellt werden.
Interessanter ist die Programmierschnittstelle für Ontologien. Jena bietet umfassende Unterstützung bei der Verwaltung von Ontologien. Es kann sowohl Ontologien aus RDF Schema als auch DAML+OIL und OWL-Dateien erzeugen. Ebenso
ist es möglich diese Ontologien mit Klassen und Properties zu erweitern, zu instanziieren oder auch Teile wieder zu löschen.
Der Import von Ontologien kann gesteuert werden, das heißt zum Beispiel ob die
Imports überhaupt eingebunden werden sollen oder wo die Ontologie sich befindet,
also ob es eine lokale Kopie gibt oder sie aus dem Internet heruntergeladen werden
muss.
Wichtig ist auch die Unterstützung mit Reasonern. Es existieren die unteschiedlichsten Reasoner für OWL Full, OWL DL und OWL Lite ebenso wie ein DAML
Reasoner, eine RDF Schema Reasoner und ein Generic Rule Reasoner. Eine weitere
Möglichkeit ist es externe Reasoner zu verwenden.
Vor allem der Generic Rule Reasoner ist interessan. Es ist ein regelbasierter Reasoner, den man mit eigenen Regeln erweitern kann. Diese Regeln werden entweder
direkt im Programm angegeben, oder extern in einer eigenen Datei gespeichert.
Eine Regel rule0, die die Transitivität von Erreichbarkeit bei Straßen definiert,
könnte zum Beispiel folgende Form haben:
@prefix street: <http://stud.tejp.de/georg/onto/strassennetz.owl#>.
# Erreichbarkeit
[rule0: (?a street:erreichbar ?b) (?b street:erreichbar ?c)
-> (?a street:erreichbar ?c)]
9
http://jena.sourceforge.net/
31
Wenn also Straße b von Straße a aus erreichbar ist und Straße c von Straße b,
dann ist auch Straße c von Straße a aus erreichbar.
Mit jeder Ontologie kann ein Reasoner verknüpft werden, wobei es möglich ist,
jeden Reasoner mit einem eigenen Regelsatz zu versehen. Auch kann man mit Hilfe
eines Reasoners ein Modell von einem anderen Modell ableiten und somit mehrere
Modelle und Reasoner übereinander schichten.
Mit der Jena Ontology API ist es möglich, Anfragen an Modelle beziehungsweise
Ontologien zu stellen. Jena unterstützt aber auch SPARQL. Die SPARQL Query
Engine erlaubt es, SPARQL-Queries auszuwerten und Anfragen an Ontologien zu
stellen.
Jena bietet also sehr gute Unterstützung bei der Entwicklung von Anwendungen,
die OWL-Ontologien verwenden. Sowohl die Schnittstellen für OWL-Ontologien
als auch die Möglichkeiten, die Jenas Reasoner bieten, sind entscheidende Gründe
für die Wahl von Jena als Framework für die Einbindung von Ontologien in den
Fahrerassistenten. Auch die Unterstützung von SPARQL ist von Vorteil, ebenso
die ausführliche Dokumentation.
2.4.6 Java
Die Programmiersprache, in der der Fahrerassistent geschrieben wird, ist Java.
Gründe hierfür sind die vorhandene Unterstützung für Ontologiemanagement, also
das Framework Jena. Ebenso ist der Verkehrssimulator VIS SIM in Java geschrieben. Es bietet sich also an den Fahrerassistenten ebenfalls in Java zu programmieren, da Kommunikation zwischen Programmen, die zum Beispiel in C und in
Java geschrieben sind, zwar möglich ist, im Fall von Java und C zum Beispiel mit
JNI10 , aber nicht immer problemlos funktioniert. Des Weiteren ist Java plattformunabhängig, und somit auch der Fahrerassistent.
2.4.7 Erwartungen an die ontologische Kontextmodellierung
Nachdem die verwendeten Sprachen, der OWL-Editor und das Framework beschrieben wurden, werden in diesem Abschnitt die Erwartungen an die Ontologie
erläutert.
Abgrenzung zu anderen Möglichkeiten der Modellierung
Zuerst wird die ontologische Kontextmodellierung von anderen Arten der Kontextmodellierung abgegrenzt. Nach [SL04] gibt es folgende Klassen von Modellen,
die sich zur Formalisierung von kontextbezogenen Informationen eignen:
1. Bei Key-value Modellen wird die Information bezüglich des Kontexts einer
Variable als Wert zugewiesen. Es ist nicht möglich, Restriktionen anzugeben
und somit ist auch eine Validierung nicht durchzuführen. Key-value Modelle
10
http://java.sun.com/j2se/1.4.2/docs/guide/jni/
32
können aber durchaus zur Beschreibung von Kontextinformationen in mobilen Umgebungen eingesetzt werden [SAW94].
2. Markup Scheme Modelle besitzen eine hierarchische Datenstruktur, die
einzelnen Elemente haben Attribute und Werte. XML und RDF Schema sind
Sprachen zur Beschreibung von Markup Scheme Modellen. Beispiele für in
RDF und RDF Schema verfasste Modelle finden sich unter anderem in [Av04].
Schwachpunkte dieses Ansatzes sind die Tatsache, dass Definitionen oft in
externen Dateien stehen (DTD) und somit die Vereinigung von zwei Modellen
erschweren und dass eine Validierung des Modells nur partiell möglich ist
[SL04].
3. Graphische Modelle erlauben es, zum Beispiel Entity-Relationship-Modelle von relationalen Datenbanken darzustellen. Die unterschiedlichen Konzepte
(Entities) werden durch verschiedene Beziehungen (Relationships) miteinander verbunden. Eine hierfür geeignete Sprache ist zum Beispiel UML. Von
Nachteil ist, dass graphische Modelle meist nur eingeschränkt maschinenlesbar sind. Ein Beispiel für einen grafischen Ansatz zur Kontextmodellierung findet sich mit einer Erweiterung für Object-Role Modeling (ORM) in
[HIR03].
4. Bei objektorientierten Modellen wird Kontext durch Objekte modelliert,
die die Kontextinformationen enthalten. Vorteile sind die Wiederverwendbarkeit und die Abkapselung von Informationen in Objekten, die nur über
spezielle Schnittstellen ansprechbar sind. Auch hier ist Validierung nur partiell möglich. In [CMD99] wird ein elektronischer Reiseführer vorgestellt, der
Besucher einer Stadt mit Informationen versorgt, und sich hierzu eines objektorientierten Kontextmodells bedient.
5. Logik basierte Modelle formalisieren die Kontextinformationen in mathematisch abstrakter Art und Weise mit Hilfe von Fakten, logischen Ausdrücken und Regeln. Beispiele hierfür sind die Prädikatenlogik erster Stufe
und Beschreibungslogiken [Baa03]. Bei Beschreibungslogiken wird zwischen
der Formalisierung der Konzepte und der Formalisierung der Instanzen unterschieden. Logik basierte Modelle haben ihren Ursprung im Forschungsbereich
der künstlichen Intelligenz. Von Vorteil ist die sehr formale Beschreibung des
Modells.
6. Ontologie basierte Modelle definieren wichtige Aspekte des Kontexts als
Konzepte, welche bestimmte Eigenschaften haben. Ebenso können Beziehungen zwischen den einzelnen Konzepten und Eigenschaften beschrieben
werden, die über eine Konzept- und Eigenschaftshierarchie hinausgehen. Es
ist möglich, mehrere ontologische Kontextmodelle zu einem Modell zu verknüpfen. Ebenso ist die formale Beschreibung von Konzepten und Beziehun-
33
gen von Vorteil und macht Ontologien maschinenlesbar. Eine Sprache zur
ontologischen Kontextmodellierung ist zum Beispiel OWL [Mv04].
Der Ansatz der ontologischen Kontextmodellierung hat entscheidende Vorteile gegenüber den anderen Ansätzen. Von den meisten anderen Modellen unterscheiden
sich die ontologischen Modelle durch ihren hohen Grad an Formalität und damit
auch Maschinenlesbarkeit. Dies ermöglicht auch den Einsatz von Reasonern. Trotzdem sind Ontologien mächtiger als Beschreibungslogiken. Während bei den allermeisten Beschreibungslogiken strikt zwischen Definitionen (TBox) und Instanzen
(ABox) unterschieden wird [Baa03], ist es zum Beispiel in OWL Full, einer Sprache
zur Modellierung von Ontologien, möglich, dass Instanzen zugleich auch Klassen
sind [SWM04]. Allerdings wird dieser Vorteil bei OWL Full mit Unentscheidbarkeit erkauft [Av04]. Unentscheidbarkeit bedeutet hier, dass das Reasoning eventuell
nicht terminiert. Kompromisse bei der Mächtigkeit ermöglichen es, dass Ontologien auf Beschreibungslogiken abgebildet werden, und somit alle Vorteile von diesen
auch auf die entsprechenden Ontologien, zum Beispiel OWL DL, zutreffen. Im
Gegensatz zu Beschreibungslogiken sind Ontologien aber oft relativ leicht für den
Menschen zu verstehen, ein nicht zu unterschätzender Vorteil.
Erwartungen an die Ontologie
Aus diesen Vorteilen, die der Ansatz der ontologischen Kontextmodellierung mit
sich bringt, leiten sich auch die meisten Erwartungen an den Einsatz einer Ontologie im Fahrerassistenten ab.
Als erstes lässt sich erwarten, dass es dank der Mächtigkeit von Ontologien
möglich ist, ein gutes Modell des Kontextes aufzustellen, also alle Tatsachen, die
beschrieben werden müssen, auch beschreiben zu können. Die Verwendung von
OWL als Sprache zur Modellierung von Ontologien erlaubt es, je nach Anforderungen an das Modell, eine geeignete, hinreichend mächtige Version der Sprache
einzusetzen.
Dieses Modell muss maschinenlesbar sein, es darf also kein zusätzliches externes
Wissen nötig sein, um es richtig zu instanziieren und interpretieren. Zweideutigkeiten im Modell sollten also nicht vorkommen. Dies ist beim Einsatz von Ontologien
ebenfalls gegeben, dass es sich bei ihnen um eine “formal, explicit specification of
a shared conceptualization” handelt [SBF98].
Es sollte möglich sein, aus relativ einfachen Daten mit Hilfe von Reasonern und
Regeln, die das Wissen um die Zusammenhänge formalisieren, komplexere Informationen herzuleiten. Vor allem der Einsatz von Reasonern erlaubt es, auf das
Wissen, das in Ontologien implizit durch Konzepte, Beziehungen und Eigenschaften modelliert ist, zurückzugreifen.
Je nach Mächtigkeit der Ontologie ist zu hoffen, dass das Ableiten von Zusammenhängen oder die Beantwortung von Anfragen in einem vernünftigen Zeitrahmen machbar ist. OWL sollte es ermöglichen, durch die Beschränkung auf OWL
DL oder gar OWL Lite diese Erwartung zu erfüllen. Vor allem der Einsatz von Rea-
34
sonern, die für Beschreibungslogiken entwickelt wurden, verspricht in den meisten,
in der Praxis auftretenden Fällen, relativ kurze, also nicht exponentielle Laufzeiten
[SS04].
Die Querysprache SPARQL erlaubt die Formulierung relativ komplexer Anfragen (siehe Abschnitt 2.4.4). In Kombination mit einem Reasoner sollten diese Anfragen an die Ontologie Ergebnisse von hoher Qualität liefern, da der Reasoner
auch den Zugriff auf implizites Wissen ermöglicht.
Ein wichtiges Argument für die Verwendung von Ontologien ist die Erweiterbarkeit und Wiederverwendbarkeit. Ontologien sollen leicht mit neuen Konzepten
zu erweitern sein, man kann also eine schon existierende Ontologie verwenden und
die gewünschten Konzepte hinzufügen. Somit könnten Ontologien für neue Anwendungen wiederverwendet werden, entweder ganz ohne oder mit eventuell nötigen
Erweiterungen. Dies kann den Aufwand bei der Erstellung neuer Anwendungen
wesentlich reduzieren.
In diesem Zusammenhang ist auch der Import anderer Ontologien zu erwähnen.
Somit sollte es machbar sein, zum Beispiel Ontologien verschiedener Hersteller zu
importieren, in denen ihre Fahrzeuge genauer spezifiziert werden und auf diese
Daten auch zurückzugreifen.
Ontologien erleichtern auch den Datenaustausch, da man Synonyme definieren
kann. Wenn eine Ontologie in Englisch verfasst ist und die andere deutsche Begriffe
verwendet, können diese als gleichbedeutend gesetzt werden. Somit kann sowohl
auf Daten über Geschwindigkeit als auch über Speed zugegriffen werden. Der
Zugriff auf externe Ontologien ist durch die Definition von Abbildungsregeln für
Konzepte der unterschiedlichen Ontologien möglich.
Der Einsatz von Ontologien sollte ebenso ein hohes Abstraktionslevel bei Anwendungen möglich machen. Wenn Anwendungen ihre Daten über eine Ontologie
beziehen, sind sie unabhängig vom eigentlichen Datenformat, sie greifen nur auf
das ontologische Modell zu.
In Abschnitt 6.1 und Abschnitt 6.2 wird untersucht, ob diese Erwartungen auch
erfüllt werden, beziehungsweise inwieweit sich eine Ontologie überhaupt zur Kontextmodellierung im Zusammenhang mit Kollisionsvermeidung bei Fahrzeugen eignet.
2.5 Alternativen
In diesem Abschnitt werden ein paar der möglichen Alternativen zu den in Abschnitt 2.4 erläuterten Entscheidungen bezüglich der gewählten Sprachen und des
Verkehrssimulators beschrieben.
35
2.5.1 Andere Verkehrssimulatoren
Zuerst werden zwei alternative Verkehrssimulatoren vorgestellt. Für beide steht
der Quellcode im Internet zur Verfügung, da es sich um Open Source Projekte
handelt.
2.5.1.1 SUMO
SUMO ist ein frei verfügbarer Verkehrssimulator. Er wird von Mitarbeitern des
Zentrums für angewandte Informatik der Universität Köln und dem Institut für
Verkehrsführung und Fahrzeugsteuerung am Deutschen Zentrum für Luft- und
Raumfahrt entwickelt. Informationen finden sich auf der Homepage11 , ebenso wie
die neueste Version des Simulators. Hier gibt es auch eine Dokumentation [KR07],
an der allerdings zum Zeitpunkt dieser Arbeit noch geschrieben wird.
Die Programmiersprache, in der SUMO geschrieben ist, ist C++. Dies ist der
entscheidende Nachteil des Simulators gegnüber VIS SIM, da es recht aufwändig
ist den in Java programmierten Fahrerassistenten mit einem in C++ geschriebenen
Verkehrssimulator kommunizieren zu lassen. Es ist zwar möglich, sprengt aber den
Rahmen dieser Arbeit.
Genau wie VIS SIM ist SUMO ein mikroskopischer Verkehrssimulator, das heißt
das Fahrerverhalten und die Fahrzeugeigenschaften sind die Grundlage der Simulation. Ebenso bedient sich SUMO eines kollisionsfreien Modells zur Verkehrssimulation, Unfälle müssen also erzwungen werden. Laut Dokumentation ist dies
mit dynamischen Anpassungen der Geschwindigkeitsvorschriften oder mit Stopbefehlen für einzelne Fahrzeuge, die für den öffentlichen Nahverkehr gedacht sind,
theoretisch möglich.
Ein Nachteil von SUMO gegenüber VIS SIM ist es, dass in SUMO die Positionsberechnungen der einzelnen Fahrzeuge nur jede Sekunde vorgenommen werden.
Dies ist ein recht grobes Zeitraster, da Kontrollbefehle des Fahrerassistenten somit
nur jede Sekunde beachtet werden können. Ebenso kommt es zu der unrealistischen
Situation, dass alle Fahrzeuge gleichzeitig auf die Berechnungen ihrer Fahrerassistenten reagieren.
Des Weiteren ist es im unmodifizierten SUMO nicht möglich, die Fahrzeuge
einzeln extern anzusprechen oder die Simulation schrittweise ablaufen zu lassen.
Hierzu muss der Quellcode von SUMO geändert werden.
Zur Erstellung von Straßennetzen müssen XML-Dateien geschrieben werden, was
nicht so komfortabel ist wie der graphische Editor von VIS SIM, aber genauere
Angaben ermöglicht. Außerdem können wesentlich umfangreichere Straßennetze
beschrieben werden, ebenso ist es möglich, die Netze anderer Verkehrssimulatoren
oder Datenbanken zu importieren.
Ein weiterer Vorteil von SUMO ist die Möglichkeit, einzelnen Fahrzeugen feste
Routen zuzuweisen. Somit können bekannte Gefahrensituationen besser getestet
11
http://sumo.sourceforge.net
36
oder reproduziert werden. Dies ist in VIS SIM nicht möglich. Ein graphisches Interface zur Visualisierung der Simulation ist ebenso vorhanden.
Das Entwicklerteam und die höhere Professionalität von SUMO lassen bessere
Ergebnisse als die des Simulators VIS SIM erwarten. Auch das größere Straßennetz und die anzunehmende geringere Anzahl an Fehlern in der Simulation sind
gute Argumente für SUMO. Gegen Sumo spricht die geringe Anzahl der Positionsberechnungen. Der eigentliche Grund, warum VIS SIM und nicht SUMO als
Verkehrssimulator gewählt wurde, ist aber die Tatsache, dass SUMO in C++ und
nicht in Java geschrieben ist.
2.5.1.2 SWANS++
Eine weitere interessante Alternative zu VIS SIM ist SWANS++. Es ist eine Open
Source Weiterentwicklung des Frameworks JIST/SWANS. Hauptverantwortlicher
ist David Choffnes von der Northwestern University. Informationen zu SWANS++
und Links zur Dokumentation von JIST/SWANS finden sich auf der Homepage12 . JIST ist eine Simulationsumgebung für Javaprogramme und SWANS ein auf
JIST basierender Netzwerksimulator. Beide wurden an der Cornell University entwickelt13 .
SWANS++ erweitert den Netzwerksimulator JIST/SWANS um einen Verkehrssimulator. Auch dieser Verkehrssimulator ist mikroskopisch. Ebenso wie die beiden
anderen Alternativen bedient sich SWANS++ eines kollisionsfreien Modells.
Die Kombination von Verkehrs- und Netzwerksimulator eröffnet interessante
Möglichkeiten, da auch das Netzwerk, über das die einzelnen Fahrzeuge miteinander kommunizieren, simuliert werden kann. Weder SUMO noch VIS SIM bieten
diese Möglichkeit.
Ein Problem bei der Verwendung von SWANS++ ist die nichttriviale Erzeugung
von Straßennetzen. Es existiert nur die Möglichkeit TIGER-Karten zu importieren. Tiger ist ein Kartenformat des United States Census Bureau14 , in dem unter
anderem Informationen zu Straßen, Gebäuden und Gewässer enthalten sind. Dies
ermöglicht einerseits den Import von realistischen Daten, andererseits erschwert es
das Erstellen von einfachen Testnetzwerken erheblich.
Ein Schwachpunkt von SWANS++ ist die graphische Ausgabe, die sehr einfach
gehalten ist. Straßen werden zum Beispiel nur als einfache Striche dargestellt, somit
sind Unfälle nur schwer zu analysieren.
Gegenüber von SUMO hat SWANS++ den großen Vorteil, dass es in Java geschrieben ist, beziehungsweise eine Simulationsumgebung für Javaprogramme ist.
Allerdings hat sich gezeigt, dass SWANS++ nicht mit Jena kompatibel zu sein
scheint. JIST verwendet einen Class-Rewriter, um die kompilierten Javaklassen
für die Simulation vorzubereiten. Versucht der Rewriter aber die Klassen von Jena
12
http://www.aqualab.cs.northwestern.edu/projects/swans++/
http://jist.ece.cornell.edu
14
http://www.census.gov/geo/www/tiger/
13
37
umzuschreiben, tritt ein java.lang.NoClassDefFoundError auf. Dies liegt nicht
an ungültigen Pfadangaben oder veralteten Programmbibliotheken, wie ein direkter Programmaufruf ohne den Einsatz von JIST zeigt, und es scheint unmöglich,
den Fehler in einem vernünftigen Zeitrahmen zu finden und zu beheben. Die unvollständig umgeschriebenen Programme lassen sich mit JIST nicht mehr korrekt
ausführen und somit kann auch SWANS++ nicht eingesetzt werden, da es auf
JIST aufbaut.
Somit ist es zumindest nicht ohne größeren Aufwand möglich, den Fahrerassistenten, wenn er sich des Frameworks Jena bedienen soll, mit dem Verkehrssimulator SWANS++ zu verknüpfen. Dies ist ein entscheidender Nachteil gegenüber
dem Simulator VIS SIM, bei dem die Integration von Assistenten und Verkehrssimulator keine Probleme bereitet.
Bei der Entscheidung gegen SWANS++ war die erwähnte Inkompatibilität mit
Jena ausschlaggebend. Die graphische Ausgabe und die Schwierigkeiten bei der
Erstellung von Teststraßennetzen sind weitere Nachteile, die aber durch die Vorteile eines kombinierten Netzwerk- und Verkehrssimulators aufgewogen werden.
Die Tatsache, dass es sich nicht um die Arbeit eines Studenten handelt, ist zwar
positiv, andererseits gibt es von SWANS++ nur eine Alphaversion, eine niedrige
Fehlerrate ist also nicht garantiert.
2.5.2 OWL-QL
OWL-QL ist eine Querysprache, die speziell für OWL aus der DAML Query Language entwickelt wurde. OWL-QL spezifiziert auch ein Protokoll für Client und
Server zur Beantwortung einer Anfrage. Somit erscheint es eine gute Alternative
zu SPARQL zu sein, da letzteres nicht speziell auf OWL zugeschnitten ist, sondern auf RDF. OWL-QL wird an der Stanford University entwickelt. Außer auf
der Homepage15 finden sich in [FHH04] weitere Informationen zu OWL-QL. Die
Sprache ist abstrakt gehalten, so dass der Einsatz mit Ontologien, die nicht in
OWL formalisiert sind, denkbar ist.
Die Syntax von OWL-QL ist ähnlich der Syntax von SPARQL. Auch hier besteht
der Query aus Tripeln der Form (type ?c Fahrzeug), allerdings ist die Form
abstrakter. Zusätzlich kann angegeben werden welche Variablen gebunden werden
müssen und wie das Antwortschema aussehen soll. OWL-QL ist speziell für den
Einsatz im Semantic Web ausgelegt und unterstützt den Einsatz von Reasonern.
Gegen die Anwendung von OWL-QL als Querysprache sprechen mehrere Fakten.
Erstens ist es relativ schlecht dokumentiert, es findet sich außer dem Material unter
besagter Internetadresse und dem dort vorhandenen Artikel [FHH04] quasi nichts.
Außerdem erscheint die Zielsetzung einer abstrakten Sprache, die auf den Einsatz
im Internet mit der Möglichkeit, viele unterschiedliche Server, mit in unterschiedlichen Sprachen formalisierten Wissensdatenbanken, gleichzeitig zu befragen, nicht
15
http://www-ksl.stanford.edu/projects/owl-ql/
38
mit den Anforderungen an die Architektur des Fahrerassistenten, nämlich eine
möglichst schnelle Antwort zu erhalten, übereinzustimmen.
Des Weiteren ist das Projekt anscheinend noch in der Entwicklungsphase und
somit, wenn man die Fehlermeldungen des Beispielservers betrachtet, wohl noch
nicht ganz ausgereift, zumindest was die zur Verfügung gestellten Server und Client
Library und das Servlet betrifft.
Vor allem die mangelnde Dokumentation, in Kombination mit den auftretenden Fehlermeldungen, machen OWL-QL und die dazugehörige Library weniger
attraktiv als SPARQL und Jena.
2.5.3 RDF und RDF Schema
Alternativ zu OWL könnte man einfache Ontologien auch mit RDF oder RDF
Schema beschreiben.
Jena unterstützt sowohl RDF als auch RDF Schema, es wäre also möglich, dasselbe Framework wie für OWL zu verwenden. Auch der Einsatz von Reasonern für
RDF/RDFS ist mit Jena möglich. SPARQL ist sogar speziell für RDF geschrieben. Mit Protégé steht ein Editor zur Verfügung, mit dessen Hilfe man Ontologien in RDF Schema entwickeln kann. Somit wäre es machbar, anstelle von OWL
RDF/RDFS zu verwenden, ohne die restlichen Komponenten der Architektur auszutauschen.
Allerdings hat RDF/RDFS ein paar entscheidende Nachteile. Mit RDF/RDFS
kann man hauptsächlich Klassenhierarchien beschreiben. Dies ist aber zu wenig,
um den Kontext für eine Anwendung zur Kollisionsvermeidung zu modellieren.
So ist es zum Beispiel in RDF/RDFS unmöglich disjunkte Klassen zu definieren.
Somit ist es nicht möglich im Modell strikt zwischen dem eigenen und anderen
Fahrzeugen zu unterscheiden, oder zwischen Straßen und Kreuzungen. Auch die
Definition neuer Klassen mit Hilfe boolscher Ausdrücke kann in RDF/RDFS nicht
realisiert werden.
Die sehr hilfreichen Beschränkungen von Properties existieren in RDF/RDFS
ebensowenig. Hier sind sowohl die Transitivität, die Symmetrie oder das Inverse
ebenso wie Kardinalitätsbeschränkungen zu nennen. Es wäre also denkbar, dass
ein Fahrzeug zwei Geschwindigkeiten hat, ohne dass der Reasoner hier einen Fehler
entdecken könnte.
Somit ist es durchaus möglich, RDF und RDF Schema zur Formalisierung des
Kontextes zu verwenden, aber beide Sprachen bieten nicht dieselben Möglichkeiten
wie OWL. Wenn die Kontextmodellierung dagegen auf Klassenhierarchien beschränkt ist, dann ist RDF/RDFS eine denkbare Alternative.
2.5.4 Weitere Alternativen
Neben den oben genauer beschriebenen Sprachen existieren noch weitere Alternativen für die Verwaltung und Erstellung von Ontologien. Einige dieser Alternativen
39
werden hier kurz genannt. Die Aufzählung erhebt natürlich keinen Anspruch auf
Vollständigkeit.
Als erstes wäre KAON216 als Alternative zu Jena zu erwähnen. KAON2 ist ein
Framework für das Management von Ontologien. Wie Jena ist es in Java geschrieben. Es ist der Nachfolger von KAON17 und unterstützt sowohl OWL als auch
SPARQL aber auch Frame Logiken zur Beschreibung von Ontologien. Ontologien werden im KAON Server abgespeichert. Die Anbindung externer Reasoner ist
ebenso möglich, es hat aber auch eigene Reasoner.
KAON bietet grundsätzlich ähnliche Möglichkeiten wie KAON2, kann aber keine
in OWL modellierten Ontologien verarbeiten sondern hat eine eigenes, auf RDF
Schema basierendes Format zur Beschreibung von Ontologien.
Neben Jena, KAON und KAON2 existiert noch Sesame18 , ein weiteres Framework für die Verwaltung von Ontologien. Sesame kann RDF und RDF Schema
Informationen speichern. Auf diese kann sowohl mit der Sesame eigenen Querysprache RQL, als auch über eine Exportfunktion, die es erlaubt Daten von Schemata zu trennen, zugegriffen werden.
Auch bei den Ontologieeditoren gibt es Alternativen zu Protégé, zum Beispiel
OntoEdit. OntoEdit wird von der Firma Ontoprise19 vertrieben. OntoEdit bietet
wie Protégé die Möglichkeit Plug-Ins zu installieren, unterstützt es aber auch, wenn
mehrere Entwickler an derselben Ontologie arbeiten.
Ein weiterer Editor ist OILed20 . Mit ihm können Ontologien in der Vorgängersprache von OWL, DAML+OIL, formalisiert werden. Die Entwicklung von OILed
wurde eingestellt.
16
http://kaon2.semanticweb.org
http://kaon.semanticweb.org
18
http://www.openrdf.org
19
http://www.ontoprise.de
20
http://oiled.man.ac.uk
17
40
3 Erste Variante des Assistenten
Nachdem der logische Aufbau der Architektur und die verwendeten Sprachen, das
Framework und der Verkehrssimulator beschrieben wurden, wird in diesem Kapitel
die erste Variante des Fahrerassistenten genauer erläutert.
Am Anfang dieses Kapitels wird das Szenario nochmals kurz beschrieben, dann
werden die für dieses Szenario speziellen Anforderungen an die Ontologie und
die restliche Architektur aufgeführt. Im nächsten Abschnitt wird das ontologische
Modell, in den darauf folgenden die eigentliche Kollisionsberechnung und die Implementierung erklärt. Am Schluss des Kapitels werden die Ergebnisse dargelegt.
3.1 Beschreibung des Szenarios
In dieser Version des Fahrerassistenten fließt nur relativ wenig Kontext in die
Kollisionsberechnungen ein. Grundsätzlich wird angenommen, dass alle Fahrzeuge
miteinander vernetzt sind und regelmäßig an alle anderen Fahrzeuge ihre Daten
schicken. Die kommunizierten Daten sind eine Fahrzeug-ID, die Position, die Geschwindigkeit, die Richtung, die Beschleunigung und der Fahrzeugtyp. Aus dem
Fahrzeugtypen können, wenn er bekannt ist, die Länge und die Breite des Fahrzeugs berechnet werden, ansonsten werden die Maße eines Standard-PKWs genommen.
Weitere Informationen stehen nicht zur Verfügung. Vor allem das Straßennetz
und sämtliche Verkehrsregeln werden völlig ignoriert, die Umgebung wird sozusagen als weite, leere Ebene modelliert, über die sich Fahrzeuge, zumindest was das
Modell betrifft, in beliebigen Richtungen völlig frei bewegen können.
Ziel dieses Szenarios ist es herauszufinden, welche Qualität die Kollisionsvorhersagen, die im Wesentlichen mit Positions-, Richtungs- und Geschwindigkeitsdaten
berechnet werden, haben. Durch eine Analyse der Mängel kann dann bestimmt
werden, welche weiteren Kontextinformationen die Qualität der Berechnungen verbessern sollten.
3.2 Anforderungen an Ontologie und Architektur
Nachdem die allgemeinen Anforderungen an die Architektur und den Fahrerassistenten in Abschnitt 2.2 erläutert wurden, wird hier auf die speziellen Anforderungen dieses Szenarios, auch an die Ontologie, eingegangen.
41
Wichtigste Voraussetzung für sinnvolle Berechnungen sind korrekte Daten. Es
müssen also ständig neue Daten zu Position, Geschwindigkeit, Beschleunigung und
Richtung aller Fahrzeuge zur Verfügung stehen. Je öfter die Fahrzeuge ihre eigenen
Daten messen, die der anderen empfangen, und aus beiden Datensätzen die Kollisionsmöglichkeiten berechnen, desto höher die Qualität der Vorhersagen. Daraus
ergibt sich die Anforderung an den Simulator, dass er diese Daten in Zeitintervallen, die klein genug sind, zur Verfügung stellt. Der Fahrerassistent andererseits
muss in der Lage sein die Daten sehr oft auszuwerten. Dazu muss der Assistent
zwei Vorausetzungen erfüllen:
1. Die Ontologie muss schnell neue Instanzen aus den aktuellen Daten kreieren,
alte löschen und auf Anfragen schnell antworten können.
2. Die Berechnung der Kollisionsgefahr muss für eine große Anzahl von Fahrzeugen schnell erfolgen.
Um die erste Voraussetzung zu erfüllen, darf die Ontologie nicht zu komplex sein.
Generell lässt sich sagen, dass komplexere Ontologien aufwendigere Verfahren beim
Reasoning erfordern, auch exponentielle Laufzeiten sind möglich. Dies muss, zumindest bei größeren Ontologien, auf jeden Fall verhindert werden, wenn Anfragen
in angemessener Zeit bearbeitet werden sollen. Zur Erfüllung der zweiten Voraussetzung benötigt man ein schnelles Verfahren zur Kollisionsberechnung, das effizient implementiert werden kann.
Damit es möglich ist aus dem Fahrzeugtyp auf die Maße eines Fahrzeuges, also
die Länge und Breite, zu schließen, muss der Fahrzeugtyp bekannt sein. Enweder ist
es also erforderlich alle Fahrzeugtypen direkt in der Ontologie zu erfassen, oder es
muss möglich sein andere Ontologien zu importieren, in denen weitere Fahrzeugtypen beschrieben werden. Die zweite Variante ist der ersten bei weitem vorzuziehen,
da somit die Daten von Herstellern, so sie als Ontologien vorliegen, ohne großen
Aufwand verwendet werden können. Somit ist eine weitere Anforderung an den
Fahrerassistenten, dass er den Import externer Ontologien ermöglicht.
Zusammenfassend lässt sich also feststellen, dass dieses Szenario präzise und
ständig aktuelle Fahrzeugdaten benötigt, die dem Fahrerassistenten die Berechnung der Kollisionsgefahr ermöglichen. Diese Berechnungen müssen sehr häufig,
und damit auch sehr schnell erfolgen. Somit muss auch die Ontologie in der Lage
sein schnell auf Anfragen zu antworten und Aktualisierungen ihrer Daten, also
Instanzen, durchzuführen. Zu hohe Komplexität in der Kontextmodellierung ist
hier kontraproduktiv. Um die richtigen Fahrzeugmaße zu kennen, müssen externe
Ontologien importiert werden können.
42
3.3 Ontologie und Regelsatz
In diesem Abschnitt wird die Ontologie, die dem Fahrerassistenten in diesem Szenario zur Beschreibung der Kontextinformationen dient, und der dazugehörige Satz
von Regeln erläutert.
3.3.1 Grundsätzliches und Aufbau
Die Ontologie dieses Szenarios ist relativ einfach gehalten. Sie soll sich auf das
Wesentliche beschränken. Grund für diese Entscheidung ist die Tatsache, dass
einfache Ontologien schneller zu verarbeiten sind.
In dieser Ontologie werden nur Fahrzeuge modelliert. Als Modellierungssprache
dient OWL, genauer die Sprache OWL DL. Somit stehen relativ schnelle Reasoner zur Verfügung, bei Bedarf können auch externe Reasoner verwendet werden.
OWL Full wäre zwar mächtiger, aber eben auch langsamer bei der Verarbeitung,
es könnten sogar unentscheidbare Probleme beim Reasoning auftreten. Somit ist es
sinnvoll sich auf OWL DL zu beschränken, da es für diese Modellierung mächtig
genug ist. OWL Lite auf der anderen Seite hätte zwar noch schnellere Reasoner, ist aber nicht mächtig genug. Problematisch ist, dass die Verwendung des
owl:disjointWith - Konstruktors in OWL Lite nicht erlaubt ist. Somit ist es
zum Beispiel unmöglich festzulegen, dass ein Motorrad nicht gleichzeitig auch ein
LKW, oder das eigene Fahrzeug kein anderer Verkehrsteilnehmer sein kann.
Die Ontologie enthält eine Unterscheidung der Verkehrsteilnehmer in das eigene Fahrzeug und andere Fahrzeuge. Bei Fahrzeugen werden mehrere Fahrzeugtypen unterschieden. Verbunden sind diese beiden Konzepte durch die Festlegung, dass sowohl das eigene als auch die anderen Fahrzeuge vom Typ Fahrzeug
sind. Die wichtigsten Eigenschaften von Fahrzeugen, also zum Beispiel Positions-,
Richtungs- und Geschwindigkeitswerte werden als Properties des Typs Fahrzeug
modelliert. Die Möglichkeit des Imports von Herstellerdaten wird durch den Import
einer einfachen Beispielontologie gezeigt. Zu der in OWL beschriebenen Ontologie
gehört auch noch ein Satz von Regeln, der sowohl den in der Ontologie definierten
Standardfahrzeugtypen Werte zuordnet, als auch die Abbildung der importierten
Beispielontologie auf die Fahrzeugontologie beschreibt.
3.3.2 Fahrzeugontologie
In diesem Abschnitt wird die Fahrzeugontologie genauer beschrieben. Zur besseren
Übersichtlichkeit wird sie in drei Bestandteile zerlegt:
1. Die Klasse Fahrzeug mit den dazugehörigen Properties/Eigenschaften
2. Die Definition der einzelnen Fahrzeugtypen
3. Die Klasse Verkehrsteilnehmer
43
Die komplette Ontologie als OWL-Datei findet sich auf der beiliegenden CD. Zuerst
wird die Klasse Fahrzeug und die ihr zugeordneten Eigenschaften betrachtet. Dann
wird auf die Definition der einzelnen Fahrzeugtypen kurz eingegangen. Zum Schluss
wird die Definition der Verkehrsteilnehmer beschrieben.
Fahrzeug mit Eigenschaften
Die Eigenschaften eines Fahrzeuges, die in die Kollisionsberechnungen einfließen,
werden in der Klasse Fahrzeug als Properties modelliert. Alle diese Eigenschaften
sind Datatype Properties, sie bilden also die Klasse Fahrzeug auf Datentypen ab.
Bis auf die ID, welche ganzzahlig ist, werden alle anderen Properties durch Gleitkommazahlen beschrieben. Abbildung 3.1 stellt die Klasse Fahrzeug und alle ihr
zugehörigen Eigenschaften dar.
Abbildung 3.1: Die Properties des Klasse Fahrzeug
44
Die einzelnen Properties sind:
1. Eine eindeutige Fahrzeug ID. Sie wird zur Identifikation der Fahrzeuge benötigt.
2. Die Länge und Breite des Fahrzeugs in Metern.
3. Die Zeit in Sekunden. Es wird der Zeitpunkt, an dem die Fahrzeugdaten
gemessen wurden, angegeben.
4. Die maximale Beschleunigung, Geschwindigkeit und Bremsbeschleunigung
in ms beziehungsweise sm2 . Aus der maximalen Beschleunigung lässt sich zum
Beispiel berechnen, ob ein stehendes Auto gefahrlos beschleunigen kann.
5. Die aktuellen Positionsdaten als x- und y-Werte eines kartesischen Koordinatensystems, ebenfalls in der Einheit Meter. Der Grund für die Wahl von kartesischen Koordinaten liegt in der Kollisionsberechnung. Für letztere sind kartesischen Koordinaten notwendig, es macht also Sinn die Position so zu modellieren. Bei einer tatsächlichen Anwendung des Fahrerassistenten würden
die Positionswerte zwar als GPS-Daten vorliegen, müssten aber spätestens
für die Kollisionsvorhersage in x- und y-Werte umgerechnet werden. Da der
Verkehrssimulator ebenfalls kartesische Koordinaten liefert, macht es Sinn
die Position auch so zu modellieren. Ansonsten müssten die kartesischen Koordinaten des Simulators in GPS-Daten für das Modell umgerechnet werden
und dann für die Kollisionsberechnungen wieder in kartesische Koordinaten
zurück transformiert werden.
6. Die Richtung wird als der Winkel zwischen y-Achse und dem Fahrzeug angegeben. Ein sich auf der y-Achse in positiver Richtung bewegendes Fahrzeug
hat also den Richtungswinkel 0◦ , ein sich in Richtung der negativen x-Achse
bewegendes den Richtungswinkel 270◦ .
7. Die aktuelle Geschwindigkeit in ms . Das Fahrzeug bewegt sich zum angegebenen Zeitpunkt mit dieser Geschwindigkeit in die gegebene Richtung. Seitliche
Bewegungen sind nicht möglich, Rückwärtsbewegung kann durch negative
Geschwindigkeit dargestellt werden.
8. Die aktuelle Beschleunigung in sm2 . Hier ist der Beschleunigungswert, der sich
sowohl aus dem Beschleunigen des Autos durch das Betätigen des Gaspedals,
als auch durch Abbremsen ergibt, gemeint. Durch die Einbeziehung der aktuellen Beschleunigung lässt sich die Qualität der Unfallvorhersage gegenüber
einer auf der reinen Geschwindigkeit basierenden Vorhersage wesentlich verbessern. Die Richtung der Beschleunigung ist dieselbe wie die Richtung der
Geschwindigkeit. Positive Werte beschleunigen ein vorwärts fahrendes Auto,
negative hingegen bremsen es ab.
45
Alle diese Properties sind sowohl vom Typ owl:DatatypeProperty, als auch vom
Typ owl:FunctionalProperty. Der Typ owl:DatatypeProperty bedeutet, dass
die Wertemenge der Properties vordefinierte Datentypen und keine Objekte sind,
owl:FunctionalProperty dass jeder Instanz der Definitionsmenge maximal ein
Wert der Wertemenge zugeordnet wird. Die Kardinalität der Properties ist also
entweder null oder eins. Somit kann ein Fahrzeug zum Beispiel entweder keine
Geschwindigkeit haben, was als unbekannte Geschwindigkeit interpretiert wird,
oder genau eine, nicht aber zwei oder drei.
Fahrzeugtypen
Zur Beschreibung von Fahrzeugen, genauer gesagt Kraftfahrzeugen, wird ein einfaches Modell der Fahrzeugtypen erstellt. Abbildung 3.2 zeigt die Klassenhierarchie
dieser Fahrzeugtypen.
Abbildung 3.2: Die Klassenhierarchie der Fahrzeugtypen
Die Klasse Fahrzeug wird in vier Unterklassen eingeteilt. Dies sind die Klassen
PKW, LKW, Bus und Motorrad. Natürlich wären noch weitere Fahrzeugtypen denkbar. Als Beispiele seien hier Kleintransporter oder Wohnmobile genannt. Weitere
oder detailliertere Fahrzeugtypen ändern aber nichts am prinzipiellen Aufbau oder
der Funktionsweise des Fahrerassistenten. Aus diesem Grund beschränkt sich das
Modell auf diese vier Klassen, es wird also schlicht und damit auch übersichtlich
gehalten.
46
Des Weiteren wird definiert, dass die Klasse Fahrzeug sich aus ihren Unterklassen
zusammensetzt. Somit muss jedes Fahrzeug entweder ein PKW, ein LKW, ein Bus
oder ein Motorrad sein.
Zwischen den vier Unterklassen werden keine Überschneidungen zugelassen, Motorräder können also keine Busse sein und umgekehrt. Fahrzeuge müssen folglich
genau einen der vier möglichen Typen haben.
Bei jeder der vier Unterklassen ist ein Standardvertreter definiert. Die Standardfahrzeuge haben eine vorgegebene Länge, Breite, Maximalgeschwindigkeit, maximale Bremsbeschleunigung und eine Maximalbeschleunigung. Diese Werte werden
allerdings nicht in der OWL-Datei festgelegt, sonder in dem dazugehörigen externen Regelsatz, der in Abschnitt 3.3.4 genauer beschrieben wird. Ebenso gibt
es den Simulator_Car, der bei der Verwendung des Verkehrssimulators VIS SIM
zum Einsatz kommt.
An dieser Stelle der Ontologie ist es möglich weitere Fahrzeuge zu definieren, also
zum Beispiel die unterschiedlichen PKWs der einzelnen Hersteller und ihnen über
den Regelsatz die korrekten Werte zuzuordnen, wie es mit den Standardfahrzeugen
und dem Simulator_Car gemacht wird.
Die Modellierung der Fahrzeugtypen ist einfach gehalten, kann aber sehr leicht
erweitert werden und so den Bedürfnissen nach detaillierten Angaben zu einzelnen
Fahrzeugen angepasst werden. Zu beachten ist, dass die konkreten Fahrzeugwerte
in einem externen Regelsatz festgelegt sind. Dieser muss bei einer Erweiterung
ebenfalls angepasst und mit den zusätzlichen Daten versehen werden.
Verkehrsteilnehmer
Im Fahrzeugmodell wird zwischen Fahrzeugen und Verkehrsteilnehmern unterschieden. Somit ist es möglich andere Verkehrsteilnehmer später ohne größere
Schwierigkeiten in das Modell zu integrieren. Das Modell definiert zwei Arten von
Verkehrsteilnehmern, wie aus Abbildung 3.3, die die Modellierung der Verkehrsteilnehmer zeigt, ersichtlich ist:
1. Das eigene Fahrzeug
2. Andere Fahrzeuge
Beide Arten von Verkehrsteilnehmern sind als Unterklassen der allgemeinen Klasse
Verkehrsteilnehmer definiert. Anders als im Falle der Fahrzeugtypen sind hier
auch weitere Arten von Verkehrsteilnehmern erlaubt, die Klasse ist also nicht als
Vereinigung der beiden Unterklassen definiert.
Die Klassen Eigenes_Fahrzeug und Andere_Fahrzeuge sind disjunkt, es wird
strikt zwischen dem eigenen und allen anderen Fahrzeugen unterschieden. Diese
Unterscheidung erleichtert die Anfragen des Fahrerassistenten an die Fahrzeugontologie, da bei den Kollisionsberechnungen nur die möglichen Unfälle des eigenen Fahrzeuges von Interesse sind und nicht die der anderen Fahrzeuge. Mögliche
Unfälle zwischen den anderen Verkehrsteilnehmern können zwar auch dem eigenen
47
Abbildung 3.3: Die Modellierung der Verkehrsteilnehmer
Fahrzeug gefährlich werden, allerdings steigt der Rechenaufwand bei der Beachtung aller möglichen Unfälle quadratisch zur Anzahl der Fahrzeuge. Dieser potentiell sehr hohe Aufwand macht eine Beschränkung auf das eigene Fahrzeug sinnvoll.
Sowohl die Klasse Eigenes_Fahrzeug als auch die Klasse Andere_Fahrzeuge
sind als Unterklassen von Fahrzeug definiert. Somit erben sie die in der Klasse
Fahrzeug festgelegten Eigenschaften. Die Klasse Eigenes_Fahrzeug besitzt außerdem noch zwei weitere Properties, kollisions_partner und kollisions_zeit.
Diese stellen das Ergebnis der Kollisionsberechnungen dar.
kollisions_partner ist eine owl:Objectproperty, das heißt sie bildet die Instanzen einer Klasse auf die einer anderen Klasse ab. In diesem Fall verknüpft sie
das eigene Fahrzeug mit einem Fahrzeug vom Typ Andere_Fahrzeuge. Die Property kollisions_partner ist funktional, kann also, wenn keine Gefahr besteht,
auch auf kein Fahrzeug verweisen, ansonsten liefert sie nur das Fahrzeug, mit dem
es zuerst zum Unfall kommt.
Die kollisions_zeit gibt an in wieviel Sekunden es zum Unfall mit dem
kollisions_partner kommt. Somit ist sie als funktionale owl:Datatypeproperty
definiert, die Sekunden werden als Gleitkommazahl geschrieben, da eine Angabe
in ganzen Zahlen zu unpräzise wäre.
48
Die Modellierung weiterer Verkehrsteilnehmer ist leicht möglich, sie können
ähnlich wie die Klasse Andere_Fahrzeuge dargestellt werden, also als eigene Unterklasse der Verkehrsteilnehmer. Außerdem können Fußgänger, Fahrradfahrer,
Rollerblader, etc in einer eigenen Klassenhierarchie neben der Klasse Fahrzeug
formalisiert werden, von welcher die neuen Verkehrsteilnehmer ihre Eigenschaften
erben. Diese Möglichkeiten zum Ausbau der Ontologie werden in Abschnitt 3.6.3
genauer untersucht.
3.3.3 Importbeispiel
Spezielle Fahrzeugtypen können nicht nur in der Fahrzeughierarchie hinzugefügt
werden, es ist auch möglich externe Ontologien zu importieren. Somit können
schon vorhandene externe Informationen, die im richtigen Format vorliegen, in die
Fahrzeugontologie integriert werden. Zur Demonstration des Prinzips dient die in
import-beispiel.owl beschriebene und in Abbildung 3.4 dargestellte Ontologie.
Hier wird ein sehr einfaches Fahrzeugmodell formalisiert. Die Klasse Vehicle
hat verschiedene Properties und die beiden Unterklassen Car und Truck. Die Properties sind im einzelnen die Länge length, die Breite width, die Maximalgeschwindigkeit topspeed, die Bremsbeschleunigung breakforce, die Maximalbeschleunigung acceleration und die Anzahl an Türen doors. Somit stehen die
unveränderlichen Fahrzeugeigenschaften, die in der Fahrzeugontologie beschrieben sind, auch hier zur Verfügung. Zusätzlich wird noch eine weitere Information
modelliert, die bei der Kollisionsberechnung aber keine Rolle spielt, nämlich die
Anzahl der Türen.
Im Unterschied zur Fahrzeugontologie gibt es in dieser Ontologie auch zwei Instanzen der Fahrzeugklassen, den Simulator-Car und den Simulator-Truck. Beide sind mit konkreten Werten instanziiert, es ist also zum Beispiel möglich aus der
Importbeispiel - Ontologie die Länge des Simulator-Car herauszulesen.
Damit diese in der importierten Ontologie vorhandenen Informationen auch ausgewertet werden können, benötigt man Abbildungsvorschriften, die festlegen, welche Klassen oder Properties in den einzelnen Ontologien einander entsprechen. In
diesem Fall also dass unter anderem die length eines Vehicle in der importierten
Ontologie der laenge eines Fahrzeugs in der importierenden Ontologie entspricht.
Dies kann entweder in der Ontologie selbst oder in einem externen Regelsatz geschehen. In dieser Arbeit wird der zweite Ansatz gewählt, um die eigentliche Fahrzeugontologie so einfach wie möglich zu halten. Der externe Regelsatz wird in
Abschnitt 3.3.4 genauer erläutert. Hier finden sich auch Beispielregeln.
Externe Ontologien können also in die Fahrzeugontologie eingebunden werden
und weitere Informationen zu einzelnen Fahrzeugen liefern. Hierzu müssen nur
die benötigten Konzepte und Eigenschaften aufeinander abgebildet werden, überflüssige Informationen kann man ignorieren. Diese Abbildung kann unter anderem
mittels eines externen Regelsatzes geschehen, wie er im nächsten Abschnitt beschrieben wird. Hier finden sich auch die erwähnten Abbildungsvorschriften.
49
Abbildung 3.4: Die Importbeispiel - Ontologie
3.3.4 Regelsatz
Jedem ontologischen Modell wird im Framework Jena ein Reasoner zugeordnet.
Mit Hilfe dieses Reasoners kann zum Beispiel die transitive Hülle der Klassenhierarchie gebildet werden, oder auch das Modell auf Inkonsistenzen überprüft werden.
In Jena stehen sowohl Reasoner für die einzelnen OWL-Dialekte, RDF Schema
usw, als auch ein generischer, regelbasierter Reasoner zur Verfügung. Dieser kann
zum Beispiel mit den vorgegebenen Regelsätzen für OWL versehen werden, oder
auch zusätzlich mit eigenen, benutzerdefinierten Regeln. Diese werden entweder
direkt im Programm formalisiert, oder in einer externen Datei abgespeichert. In
dieser Arbeit wird der zweite Weg gewählt. Es wird also aus dem in OWL beschriebenen Modell mit Hilfe des generischen Reasoners, der um in einer externen
Datei definierte Regeln erweitert wird, ein neues Modell abgeleitet. Mit Hilfe die-
50
ser benutzerdefinierten Regeln können weitere Zusammenhänge, die nicht in der
OWL-Ontologie erfasst wurden, modelliert werden.
In diesem Abschnitt wird nur der verwendete Regelsatz erläutert. Die Implementierung der Ontologie und ihre Verknüpfung mit einem Reasoner wird in Abschnitt
3.5 dargelegt. Der Regelsatz ist in der Datei car_no_streets.rules gespeichert.
Sie findet sich auf der beiliegenden CD. Mit ihrer Hilfe wird die Importbeispiel Ontologie auf die Fahrzeugontologie abgebildet und es werden den Standard- und
Simulatorfahrzeugen der Fahrzeugontologie feste Werte bezüglich ihrer Eigenschaften zugeordnet.
Es wäre auch möglich, die Zusammenhänge zwischen der Fahrzeugontologie
und der zu importierenden Ontologie in der Fahrzeugontologie selbst zu definieren. Ein externer Regelsatz hat aber den Vorteil, dass die Fahrzeugontologie
selbst nicht geändert werden muss. Die Ontologien und ihre Abbildungsregeln
sind also strikt getrennt. Vor allem beim Import vieler externer Ontologien dient
dies der Übersichtlichkeit. Der Grund für die Implementierung der Zuordnung fester Werte für die einzelnen Fahrzeugtypen in externen Regeln ist auch hier die
Übersichtlichkeit. Die Zuordnung könnte aber genauso gut in der Ontologie selbst
passieren. Die Regeln zur Zuordnung der Werte haben folgende Form:
@prefix kontext: <http://stud.tejp.de/georg/onto/fahrzeug.owl#>.
# Simulator_PKW
[rule1:
( ?c owl:sameAs ?o ) ( ?o rdf:type kontext:Simulator_PKW )
->
( ?c kontext:laenge 4.0 ),
( ?c kontext:breite 1.3 ),
( ?c kontext:beschleunigung_maximal 4.0 ),
( ?c kontext:geschwindigkeit_maximal 16.0 ),
( ?c kontext:bremsbeschleunigung_maximal 10.0 )
]
Diese Regel erlaubt es Fahrzeuge vom Typ Simulator_PKW mit ihren konstanten
Eigenschaften versehen, also Länge, Breite, maximale Beschleunigung, Geschwindigkeit und Bremsbeschleunigung. Es handelt sich hier um eine Vorwärtsregel.
Wann immer die Voraussetzung erfüllt wird, führt der Reasoner den zweiten Teil
der Regel aus. Die Voraussetzung besteht aus zwei Bedingungen:
1. ( ?c owl:sameAs ?o )
Es existiert ein ?c, das im Modell mit Hilfe des Konstruktors owl:sameAs
als gleich mit einem ?o gesetzt wird.
2. ( ?o rdf:type kontext:Simulator_PKW )
Dieses ?o ist vom Typ Simulator_PKW, der in der Ontologie mit der URI
kontext definiert ist, also der Fahrzeugontologie.
51
Damit die Regel angewendet wird, muss also das Fahrzeug mit Hilfe des Konstruktors owl:sameAs als gleich mit einem anderen Fahrzeug vom Typ Simulator_PKW
in der Ontologie beschrieben werden. Wenn diese beiden Bedingungen erfüllt sind,
dann kommen die folgenden fünf Regeln zum Einsatz:
1. ( ?c kontext:laenge 4.0 )
Die Länge des Fahrzeuges wird auf vier Meter gesetzt.
2. ( ?c kontext:breite 1.3 )
Die Breite des Fahrzeuges beträgt 1,3 Meter.
3. ( ?c kontext:beschleunigung_maximal 4.0 )
Das Fahrzeug bekommt eine Maximalbeschleunigung von 4 sm2 zugewiesen.
4. ( ?c kontext:geschwindigkeit_maximal 16.0 )
Das Fahrzeug erhält die Maximalgeschwindigkeit von 16 ms .
5. ( ?c kontext:bremsbeschleunigung_maximal 10.0 )
Die maximale Bremsbeschleunigung beträgt 10 sm2 .
Diese Werte werden dem Objekt ?c zugeordnet, nicht dem Simulator_PKW oder
dem Objekt ?o vom Typ Simulator_PKW. Sinnvollerweise sollte es sich bei ?c um
eine Instanz des Typs Fahrzeug handeln. Ähnliche Regeln gibt es für die Standardfahrzeugtypen, also den Standard_PKW, den Standard_LKW, den Standard_Bus
und das Standard_Motorrad. Soll die Ontologie um weitere Fahrzeugtypen erweitert werden, dann müssen natürlich auch die entsprechenden Regeln zu den
car_no_streets.rules hinzugefügt werden. Im Regelsatz werden aber nicht nur
den Fahrzeugtypen konkrete Werte zugeordnet, sondern es wird auch die Verbindung mit der importierten Beispielontologie hergestellt. Dies geschieht wieder mit
jeweils einer Regel pro Fahrzeugtyp. Hier die Regel für den Simulator-Car:
@prefix ex: <http://stud.tejp.de/georg/onto/import-beispiel.owl#>.
# Simulator-Car
[rule6:
( ?c owl:sameAs ?o ) equal( ?o, ex:Simulator-Car )
( ?o ex:length ?l ) ( ?o ex:width ?w )
( ?o ex:acceleration ?a ) ( ?o ex:topspeed ?s )
( ?o ex:breakforce ?b )
->
( ?c kontext:laenge ?l ),
( ?c kontext:breite ?w ),
( ?c kontext:beschleunigung_maximal ?a ),
( ?c kontext:geschwindigkeit_maximal ?s ),
( ?c kontext:bremsbeschleunigung_maximal ?b )
]
52
Diese Regel unterscheidet sich leicht von der ersten, da der Simulator-Car in der
Beispielontologie als Instanz mit allen benötigten Werten schon vorliegt, während
das beim Simulator_PKW nicht der Fall ist. Hier handelt es sich um eine Klasse,
keine Instanz. Grund für diese unterschiedlichen Ansätze ist es zu zeigen, dass
beide möglich sind und dasselbe Ergebnis liefern, nämlich eine Fahrzeuginstanz
mit den richtigen Werten auszustatten.
In den Vorausetzungen wird wieder mit ( ?c owl:sameAs ?o ) die Gleichheit von ?c und ?o gefordert. Diesmal muss ?o allerdings identisch mit dem
Simulator-Car sein, durch den Konstruktor owl:sameAs definierte Gleichheit
genügt nicht (equal( ?o, ex:Simulator-Car )). Die restlichen Voraussetzungen, wie zum Beispiel ( ?o ex:length ?l ) liefern die Werte der Properties der
Instanz Simulator-Car, hier also die Länge ?l.
Im zweiten Teil der Regel werden dann die Werte der Instanz Simulator-Car
auf die Werte von ?c abgebildet. ( ?c kontext:laenge ?l ) weist der Property
laenge der Instanz ?c den Wert ?l zu, welcher in den Vorausetzungen als length
des Simulator-Car festgelegt wurde.
Wenn also ein Fahrzeug im Modell mit dem Simulator-Car gleichgesetzt wird,
dann weist diese Regel dem Fahrzeug die Werte des Simulator-Car zu. Somit kann
auf die in der importierten Ontologie enthaltenen Informationen zu verschiedenen
Arten von Fahrzeugen zugegriffen werden.
Zu beachten ist, dass nicht für alle Eigenschaften Abbildungen benötigt werden.
Die property doors wird einfach ignoriert, da es in der Fahrzeugontologie keine
Entsprechung gibt. Somit wird nur der Teil der Beispielontologie verwendet, der
von Interesse ist. Dies ermöglicht effektiven Import von komplexen Ontologien, die
eventuell viele nicht benötigte Details enthalten.
Abschließend muss noch erwähnt werden, dass dieser Regelsatz mit den Instanzen der Fahrzeugontologie arbeitet. Er muss also nach jeder Änderung der Instanzmenge wieder auf die Ontologie angewendet werden.
3.4 Kollisionsberechnung
In diesem Abschnitt wird der mathematische Ansatz zur eigentlichen Kollisionsberechnung erläutert. Ziel der Kollisionsberechnung ist es herauszufinden ob zwei
Fahrzeuge kollidieren, und wenn ja, wann. Die zur Verfügung stehenden Daten
sind die Länge und Breite beider Fahrzeuge, ihre Positionen, Geschwindigkeiten,
die Beschleunigungswerte und die Richtung, in die sie sich bewegen. Das Ergebnis
ist die Anzahl der Sekunden, in der es zur Kollision kommt, beziehungsweise ein
negativer Wert, wenn das nicht der Fall ist.
Die Vorschriften zur Kollisionsberechnung werden nicht in der Ontologie selbst
modelliert, auch wenn das erstrebenswert erscheint. Um vernünftig und präzise
abschätzen zu können, ob es zu einer Kollision zwischen zwei Fahrzeugen kommt,
müssen entweder die Positionen, der Abstand oder die Geschwindigkeiten der Fahr-
53
zeuge in irgendeiner Weise miteinander verglichen werden. Zum Vergleichen von
Abständen muss es zumindest möglich sein, einen Ausdruck der Form Abstand
< Minimalabstand zu modellieren. Für Geschwindigkeiten und Positionen gilt
Ähnliches. Des Weiteren ist es nötig, dass Abstände (bzw Geschwindigkeiten oder
Positionen) mit konkreten Werten modelliert werden, also als konkrete Datentypen, zum Beispiel Zahlen oder Zeichenketten, da es sonst unmöglich ist, quantitative Vergleiche vorzunehmen. Will man aber Prädikate, die mehr als eine Stelle
haben, also zum Beispiel <, auf konkrete Datentypen anwenden, dann kann dies
bei Beschreibungslogiken oder OWL zu Unentscheidbarkeit führen [SS04].
Vorschriften zur Kollisionsberechnung, die mit konkreten Zahlenwerten oder Zeichenketten arbeiten und sich Vergleichen oder anderer mehrstelliger Prädikate bedienen, können also nicht in OWL modelliert werden, ohne dass dies zu potentiell
unentscheidbaren Problemen führt. Wenn aber die Kollisionsberechnung ein potentiell unentscheidbares Problem ist, dann sind Fehler in der Vorhersage nicht zu
vermeiden. Somit ist die Modellierung der Vorschriften in der OWL-Ontologie ein
ungeeignetes Verfahren zur Kollisionsberechnung.
3.4.1 Fahrzeuge als sich bewegende Rechtecke
Mit den gegebenen Daten der beiden Fahrzeuge können sie als sich in der Ebene bewegende Rechtecke modelliert werden. Wenn es zu einem Zeitpunkt zu einer Überschneidung der beiden Flächen kommt, dann kollidieren sie. Die Ausdehnung der Flächen entspricht der Fahrzeugfläche zuzüglich eines gegebenenfalls
erwünschten Sicherheitsabstandes. Dieser kann natürlich nach vorne und hinten
einerseits und zu den Seiten andererseits unterschiedlich gewählt werden.
Punktförmige Objekte
Will man den Zeitpunkt der Überschneidung sich bewegender Flächen berechnen, ist es sinnvoll erst einmal den einfacheren Fall der punktförmigen Objekte
zu betrachten. Bewegt sich ein Objekt mit Geschwindigkeit v und wird mit a beschleunigt, dann kann aus der Zeit t die zurückgelegte Strecke berechnet werden:
a
s = t · v + t2 ·
2
Mit Hilfe dieser Formel lässt sich die Bahn eines punktförmigen Objekts in einer mehrdimensionalen Ebene beschreiben. Geschwindigkeit und Beschleunigung
werden als Vektoren erfasst, wobei die beiden Vektoren entweder die gleiche oder
die entgegengesetzte Richtung haben (~a = n ∗ ~v ). Der Ortsvektor bei t = 0 ist
~y . Somit ergibt sich für den Bahnvektor ~s(t) in Abhängigkeit der Zeit folgende
Geradengleichung:
1
~s (t) = ~y + t · ~v + t2 · ~a
(3.1)
2
Will man wissen, ob sich zwei Objekte treffen, dann berechnet man den Schnittpunkt der beiden Bahnen und überprüft, ob sich die Objekte zur gleichen Zeit
54
im Schnittpunkt befinden (t1 = t2 ). Hierbei sind Sonderfälle wie parallele, oder
im mehr als zweidimensionalen Raum auch windschiefe Geraden, und identische
Bahnen zu beachten.
Ruhende Rechtecke
Die Fläche eines Rechtecks wird mit einem Ungleichungssystem beschrieben. Wenn
|~l| die Länge und |~b| die Breite des Rechtecks ist, dann ergibt sich bei einem
Mittelpunkt ~y folgende Gleichung:
~ = ~y + m · ~l + n · ~b
A
(3.2)
Wenn ~l auf die Länge und ~b auf die Breite des Rechtecks genormt sind, müssen für
m und n folgende Ungleichungen gelten:
−0.5 ≤ m ≤ 0.5
−0.5 ≤ n ≤ 0.5
(3.3)
(3.4)
Die Bedingungen für m und n und die Gleichung (3.2) beschreiben also als Ungleichungssystem die Fläche eines ruhenden Rechtecks.
Sich bewegende Rechtecke
Sich bewegende Rechtecke können als ruhende Rechtecke, deren Mittelpunkte sich
bewegen, formalisiert werden. Aus den Gleichungen (3.1) und (3.2) lässt sich also
eine Gleichung zur Beschreibung der Bahn eines Rechtecks in Abhängigkeit der
Zeit ableiten:
1
~s (t) = ~y + t · ~v + t2 · ~a + m · ~l + n · ~b
(3.5)
2
Natürlich müssen auch hier die Ungleichungen (3.3) und (3.4) erfüllt sein. Aus
der Gleichung (3.5) und den beiden Ungleichungen ergibt sich wieder ein Ungleichungssystem, das die Fläche des Rechtecks in Abhängigkeit der Zeit beschreibt.
Schnitt sich bewegender Rechtecke
Eine Kollision zweier Rechtecke findet genau dann statt, wenn sich ihre Flächen
überschneiden. Mindestens ein Punkt muss also zur gleichen Zeit in beiden Rechtecken liegen. Die Rechtecksgleichungen sind nach (3.5):
1
s~1 (t) = y~1 + t · v~1 + t2 · a~1 + m1 · l~1 + n1 · b~1
2
1
s~2 (t) = y~2 + t · v~2 + t2 · a~2 + m2 · l~2 + n2 · b~2
2
Das Gleichsetzen beziehungsweise die Subtraktion der beiden Gleichungen zur Bestimmung identischer Punkte liefert dann:
~0 = y~1 − y~2 + t · (v~1 − v~2 ) + t2 · 1 (a~1 − a~2 ) + m1 · l~1 + n1 · b~1 − m2 · l~2 − n2 · b~2 (3.6)
2
55
Spaltet man diese Gleichung in die zwei entsprechenden Ungleichungen ≤ 0 und
≥ 0 auf, dann lässt sich mit den Ungleichungen (3.3) und (3.4) ein Ungleichungssystem für den zweidimensionalen Raum aufstellen. Das Problem ist, dass in diesem
Ungleichungssystem fünf Unbekannte vorkommen, nämlich m1 , m2 , n1 , n2 und t,
und eine davon, die Zeit t, nicht linear ist. Nichtlineare Ungleichungssysteme sind
aber wesentlich schwieriger zu lösen als lineare. Das Ziel ist es, die anderen vier
Unbekannten zu eliminieren und dann das vereinfachte System, in dem nur noch
die Zeit unbekannt ist, zu lösen. Die allgemeine Form der n-ten Ungleichung, des
Systems, das sich aus (3.3), (3.4) und (3.6) ergibt, ist:
yn + vn t + an t2 + m1 l1n + n1 b1n + m2 l2n + n2 b2n ≤ cn
(3.7)
Wobei yn sich aus den Ortsvektoren ergibt, vn aus der Geschwindigkeit, usw.
Natürlich können diese Faktoren auch den Wert Null annehmen. Ersetzt man die
zu eliminierenden Unbekannten m1 , m2 , n1 und n2 durch die Variablen x4 bis x7
und erweitert die ersten drei Summanden mit den Variablen x1 bis x3 , welche den
Wert Eins haben, dann ergibt sich:
yn x1 + vn tx2 + an t2 x3 + l1n x4 + b1n x5 + l2n x6 + b2n x7 ≤ cn
(3.8)
Wird nun die Zeit t als Konstante betrachtet, erhält man somit ein System linearer
Ungleichungen, in dem vier Variablen unbekannt, der Rest aber bekannt ist, da
x1 , x2 , x3 = 1 gilt. Bevor das resultierende lineare Ungleichungssystem formuliert
wird werden zur vereinfachten Darstellung folgende Konstanten definiert:
• yxd und yyd beschreiben die x- und die y-Komponente der Differenz der Mittelpunktsvektoren y~1 und y~2 .
• vxd und vyd sind die x- und die y-Komponente der Differenz der Geschwindigkeitssvektoren v~1 und v~2 multipliziert mit der Zeit t.
• axd und ayd sind die beiden Komponenten, die sich durch Subtraktion der Beschleunigungssvektoren a~21 und a~22 und einer Multiplikation mit dem Quadrat
der Zeit t2 ergeben.
• l1x , l2x , l1y , l2y , b1x , b2x , b1y und b2y beschreiben die x- und y-Komponenten
der Flächenvektoren l~1 , l~2 , b~1 und b~2 .
Wie schon erwähnt ist der Vorteil dieser Definitionen, dass das resultierende Ungleichungssystem für den Schnitt zweier sich in der zweidimensionalen Ebene bewegenden Flächen linear ist. Die quadratische unbekannte Variable t2 ist in den
Konstanten axd und ayd verborgen. Es ergibt sich also folgendes lineares Ungleichungssystem, wobei die letzten vier Spalten der Matritze, beziehungsweise die
Variablen x4 bis x7 , den Unbekannten m1 , m2 , n1 und n2 aus der Gleichung (3.6)
und den Ungleichungen (3.3) und (3.4) entsprechen:
56
























0
0
0
1
0
0
0
0
0
0
−1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
−1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
−1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
−1
yxd
vxd
axd
l1x
b1x
l2x
b2x
−yxd −vxd −axd −l1x −b1x −l2x −b2x
yyd
vyd
ayd
l1y
b1y
l2y
b2y
−yyd −vyd −ayd −l1y −b1y −l2y −b2y



 


 
 
 
 
 
 
·
 
 
 
 
 













x1


x2  







.. 

≤
.  







x6  


x7




0.5
0.5
0.5
0.5
0.5
0.5
0.5
0.5
0
0
0
0
























(3.9)
Zusamenfassend lässt sich somit feststellen, dass es genau dann zur Kollision
zweier Flächen zum Zeitpunkt t kommt, wenn das lineare Ungleichungssystem
(3.9) für diesen Zeitpunkt t erfüllbar ist. Will man also wissen, ob zwei Flächen
miteinander kollidieren, dann muss man berechnen, ob es ein t gibt, das dieses
Ungleichungssystem erfüllt. Hierzu müssen die Unbekannten m1 , m2 , n1 und n2 ,
also x4 bis x7 , eliminiert werden. Das Ergebnis ist ein neues System quadratischer
Ungleichungen, in denen nur die Variable t unbekannt ist. Dieses System kann dann
auf Erfüllbarkeit getestet werden. Im nächsten Abschnitt wird die Elimination der
Unbekannten beschrieben, im darauf folgenden der Test auf die Erfüllbarkeit des
neuen Ungleichungssystems bezüglich t.
3.4.2 Die Fourier-Motzkin-Elimination
Die Elimination der Variablen x4 bis x7 im linearen Ungleichungssystem (3.9) wird
mit der sogenannten Fourier-Motzkin-Elimination, wie sie in [Gro04] beschrieben
ist, durchgeführt. Die Fourier-Motzkin-Elimination ermöglicht es, ein lineares Ungleichungssystem auf Erfüllbarkeit zu testen, beziehungsweise einzelne Variablen
zu eliminieren.
Der Algorithmus der Fourier-Motzkin-Elimination hat als Eingabeparameter das
Ungleichungssystem A~x ≤ ~b. Das Ungleichungssystem wird also durch eine (m, n)Matrix A, die Variablen ~x und den Vektor ~b beschrieben. In jedem Schritt wird eine
Spalte j der Matrix A eliminiert und das daraus resultierende Ungleichungssystem
D~x ≤ d~ aufgestellt. D ist die neue (r, n)-Matrix, d~ der Vektor. Der folgende Algorithmus zur Elimination der Spalte j der Matrix A ist im Wesentlichen [Gro04]
entnommen:
1. Schritt: Die Menge der Zeilenindizes M der Matrix A wird je nach Vorzeichen der Matrixelemente aij in drei Mengen eingeteilt:
Z := {i ∈ M | aij = 0}
57
N := {i ∈ M | aij ≤ 0}
P := {i ∈ M | aij ≥ 0}
2. Schritt: Die neue Indexmenge R der Matrix D wird bestimmt. Ihre Kardinalität r beträgt | Z ∪ (N × P ) |. Somit gilt R := {1, ..., r}. Die Bijektion P bildet
die Indexmenge R auf die Elemente der Zeilenindexmenge Z ∪ (N × P ) ab.
~
3. Schritt: Berechnung der neuen Matrix D und des Vektors d.
Für alle i = 1, 2, ... , r wird eine Fallunterscheidung durchgeführt:
1. Wenn p(i) ∈ Z, dann wird sowohl diese Zeile in die neue Matrix unverändert
übernommen, als auch das entsprechende Element des Vektors ~b. Di. steht
hier für die i-te Zeile der Matrix D.
Di. := Ap(i).
di := bp(i)
2. Wenn p(i) = (s, t), wobei (s, t) ∈ (N ∪ P ), dann erfolgt die Elimination durch
Subtraktion der Vielfachen der beiden Zeilen.
Di. := atj As. − asj At.
di := atj bs − asj bt
Da natürlich atj · asj − asj · atj = 0 gilt, ist auch das neue Element dij = 0.
Somit wurde die Spalte j gleich Null gesetzt, und damit auch die Variable xj
eliminiert.
Der Algorithmus der Fourier-Motzkin-Elimination eliminiert also eine Variable aus
einem linearen Ungleichungssystem. Die Erfüllbarkeit des Ungleichungssystems
wird dadurch nicht beeinflusst. Die Elimination geschieht durch Subtraktion aller mit den negativen Elementen multiplizierten Zeilen mit positivem Element in
der zu eliminierenden Spalte von allen mit den positiven Elementen multiplizierten Zeilen mit negativem Element in der zu eliminierenden Spalte. Zeilen, deren
Element schon Null ist, werden direkt übernommen. Somit kann die Zahl der neuen Ungleichungen stark anwachsen, besonders da auch redundante Gleichungen
produziert werden.
Hat das Ungleichungssystem m Ungleichungen und n zu eliminierenden Variablen, dann ergibt sich für die Fourier-Motzkin-Elimination eine Worst-Case Komn
plexität von O(m2 ). Sind alle Koeffizienten der zu eliminierenden Spalte ungleich
Null, wobei jeweils die Hälfte positiv und die Hälfte negativ ist, gilt für die Anzahl
der neu ermittelten Ungleichungen nach der Elimination einer Variable:
mneu
malt
=
2
58
2
Wenn malt hinreichend groß ist, ist folgende Näherung gültig:
mneu ≈ m2alt
Sollen n Variablen eliminiert werden, gilt mit dieser Näherung:
(21 )
n = 1 ⇒ m1 ≈ m20 = m0
(22 )
n = 2 ⇒ m2 ≈ m21 = m40 = m0
(23 )
n = 3 ⇒ m3 ≈ m22 = m80 = m0
Aus diesen Gleichungen kann man den allgemeinen Zusammenhang zwischen der
maximalen Zahl der produzierten Ungleichungen mn und der Zahl der zu eliminierenden Variablen n für ein Ungleichungssystem mit m0 Ungleichungen ableiten:
(2n )
mn ≈ m0
Somit ist die Worst-Case Komplexität der Fourier-Motzkin-Elimination O(m(2 ) ).
Betrachtet man das hier zu lösende Ungleichungssystem (3.9), das die Bedingungen für die Kollision zweier Fahrzeuge beschreibt, dann sieht man, dass es zwölf
Ungleichungen enthält. Vier seiner Variablen sollen eliminiert werden. Somit er4
geben sich im schlimmsten Fall geschätzte 12(2 ) = 1, 84... · 1017 Ungleichungen
nach der Elimination der vier Unbekannten aus (3.9), die für jeden potentiellen
Kollisionspartner zu lösen sind.
Empirische Werte liegen aber bei ungefähr 100 Ungleichungen. Dies lässt sich
darauf zurückführen, dass viele Elemente der Matrix des Ungleichungssystems
(3.9) den Wert Null haben und sich in jedem Schritt auch einige redundante Ungleichungen ergeben, die aus dem System entfernt werden können. Somit steigt
die Anzahl der Ungleichungen nicht so stark an, wie es die obige Worst-Case
Abschätzung befürchten lässt. Die Fourier-Motzkin-Elimination erweist sich unter diesen Umständen als praktikabel für den Einsatz in der Kollisionsberechnung.
n
3.4.3 Erfüllbarkeit und Lösung
Nachdem die unbekannten Variablen m1 , m2 , n1 und n2 beziehungsweise x4 bis
x7 mit Hilfe der Fourier-Motzkin-Elimination aus dem Ungleichungssystem (3.9)
entfernt wurden, ergibt sich ein neues Ungleichungssystem, das nur noch drei Variablen, dafür aber wesentlich mehr Ungleichungen hat1 . Dieses System muss zuerst
so umgeformt werden, dass die Zeit die einzige Unbekannte in ihm darstellt.
Umformung des Ungleichungssystems
Die einzelnen Ungleichungen des mit der Fourier-Motzkin-Elimination errechneten
Systems haben folgende Gestalt:
ax1 + bx2 + cx3 ≤ d
1
Tests ergeben Werte die in der Größenordnung von bis zu über 100 Ungleichungen liegen
59
(3.10)
• a ist aus Multiplikationen und Subtraktionen in der ersten Spalte von 3.9
entstanden und somit aus Vielfachen der Komponenten der Ortsvektoren y~1
und y~2 der Mittelpunkte der Rechtecke. Es ist nicht von der Zeit abhängig.
Da y~1 und y~2 in Gleichung (3.6) mit keiner Unbekannten multipliziert werden,
wurde bei der Formulierung von (3.9) x1 = 1 definiert.
• b ist das Ergebnis von Umformungen der Geschwindigkeitsvektoren. Es ist
ein Vielfaches der Zeit. Dank der Festlegung von x2 = 1 für (3.9) und mit
der Definition von b′ = bt gilt bx2 = b′ t.
• c ist aus den Beschleunigungsvektoren hervorgegangen. Es ist ein Vielfaches
des Quadrats der Zeit. Auch hier gilt x3 = 1, und somit folgt aus der Definition c′ = tc2 dass cx3 = c′ t2 .
• d ist eine einfache Zahl ohne Variable.
Somit lässt sich (3.10) auch als quadratische Ungleichung mit der Zeit als Variable
schreiben:
0 ≤ d − a − b′ t − c′ t2
(3.11)
Mit Hilfe der Fourier-Motzkin-Elimination kann also aus dem Ungleichungssystem
(3.9) ein neues System von Ungleichungen der Form (3.11) produziert werden, das
als einzige Unbekannte die Zeit enthält. Die Koeffizienten a, b′ , c′ und d enthalten
nur bekannte Werte wie die Geschwindigkeitsvektoren, die Beschleunigungsvektoren, die Positionen oder die Maße der beiden Fahrzeuge/Rechtecke.
Um den Zeitpunkt der Kollision zweier Rechtecke zu berechnen, muss das neue
System quadratischer Ungleichungen auf Erfüllbarkeit getestet, und dann das
kleinst mögliche t ≥ 0 bestimmt werden.
Test auf Erfüllbarkeit und Berechnung des Kollisionszeitpunkts
Damit es zu einer Kollision der Rechtecke kommt, müssen alle Ungleichungen des
Systems mindestens ein t ≥ 0 als Lösung haben. t < 0 bedeutet, dass es zu einer
Kollision in negativer Zeit kommt, ist also gleichbedeutend mit keiner Kollision.
Betrachtet man die Ungleichung (3.11), so sieht man, dass es, abhängig von den
Koeffizienten, für t unterschiedliche Lösungen geben kann.
1. Die Ungleichung ist für alle t unerfüllbar. Dies tritt zum Beispiel auf, wenn
d ≤ 0 und a, b′ , c′ = 0 gilt.
2. Die Ungleichung ist für alle t erfüllt. Ein Beispiel für diesen Fall ist durch die
Koeffizienten d ≥ 0 und a, b′ , c′ = 0 gegeben.
3. Es gibt genau eine Lösung t = x. Dies ist beispielsweise bei der Gleichung
0 ≤ −x2 + 2xt − t2 der Fall.
4. Die Lösungsmenge ist t ≥ x, also durch eine Konstante nach unten beschränkt. Dies gilt für 0 ≤ −x + t.
60
5. Als Lösungsmenge ergibt sich t ≤ x. Sie ist also durch eine obere Schranke
festgelegt und die Lösung der Ungleichung 0 ≤ x − t.
6. Die Lösungsmenge ist t ≤ x1 ∨ t ≥ x2 , liegt also jenseits einer unteren und
einer oberen Schranke. Ein Beispiel hierfür ist die Ungleichung
0 ≤ x1 x2 − t(x1 + x2 ) + t2 , wobei x1 ≤ x2 gilt.
7. Es ergibt sich die Lösungsmenge t ≥ x1 ∧ t ≤ x2 , die durch eine untere und
eine obere Schranke festgelegt wird. Dies ist zum Beispiel das Ergebnis der
Ungleichung 0 ≤ −x1 x2 + t(x1 + x2 ) − t2 , unter der Bedingung das x1 ≤ x2
gilt.
Die Lösung einer Ungleichung liefert also entweder, dass die Ungleichung für alle
t erfüllbar oder unerfüllbar ist, eine Bedingung der Form t ≤ x, t ≥ x oder t = x,
oder die konjunktive beziehungsweise disjunktive Verknüpfung von Bedingungen,
also zum Beispiel t ≤ x1 ∨ t ≥ x2 . Die Lösung ist also eine logische Aussage. Sie
kann sehr einfach aus der Ungleichung berechnet werden. Als Lösung eines Systems
mit n Ungleichungen ergibt sich also eine Formel, bei der die einzelnen Aussagen
durch logische Unds miteinander verknüpft sind:
FA = A1 ∧ A2 ∧ ... ∧ An
(3.12)
Es müssen alle Aussagen Ai erfüllbar sein, damit die Formel FA erfüllbar ist. Für
welche t’s die Formel wahr ist, lässt sich aber nicht so einfach aus der Formel
ablesen. Um dies zu ermöglichen, wird die Formel in eine disjunktive Normalform
umgewandelt, das heißt in eine Form, in der Literale in Konjunktion Monome
bilden, welche wiederum disjunktiv miteinander verknüpft werden. Hierbei gilt:
1. Literale haben die Form T rue wenn sie für alle t erfüllbar sind, F alse wenn
sie für alle t unerfüllbar sind, t ≤ x, t ≥ x oder t = x.
2. Monome entstehen aus der konjunktive Verknüpfung von Literalen, also
M = L1 ∧ L2 ∧ ... ∧ Lm .
3. Die Formel ergibt sich aus der disjunktiven Verknüpfung aller Monome. Sie
hat die Form
FDN F = M1 ∨ M2 ∨ ... ∨ Mf
(3.13)
Zur Umwandlung von FA in FDN F wurde folgender Algorithmus entworfen und
implementiert:
Algorithmus zur Umwandlung von FA in FDN F :
1. Schritt: Erzeuge FDN F mit FDN F = T rue.
2. Schritt: Für i = 1 bis i = n:
61
1. Entferne alle unerfüllbaren Monome in FDN F bis auf das letzte.
2. Füge die Aussage Ai der Formel FA zur Formel FDN F hinzu.
a) Wenn Ai aus einem Literal L besteht, dann wird dieses Literal zu allen
Monomen von FDN F hinzugefügt (FDN F ∧ L).
b) Wenn Ai = L1 ∧L2 , dann wird zuerst L1 und dann L2 mit den Monomen
verknüpft (FDN F ∧ L1 ∧ L2 ).
c) Im Falle von Ai = L1 ∨ L2 gilt
FDN F neu = (FDN F alt ∧ L1 ) ∨ (FDN F alt ∧ L2 )
Der Algorithmus berechnet also aus der Formel FA die Formel FDN F in disjunktiver Normalform. Das Entfernen der unerfüllbaren Monome im zweiten Schritt
ist legitim, da ein unerfüllbares Monom nie durch eine Und-Verknüpfung erfüllbar
werden kann. Außerdem führt es dazu, dass die Formel FDN F nicht durch Aussagen der Form Ai = L1 ∨ L2 exponentiell aufgebläht wird. Dazu ist es aber auch
nötig das Verknüpfen von Literalen mit Monomen effizient zu gestalten. In der
Tat bestehen Monome nie aus mehr als zwei Literalen. Dies ist in der Struktur der
Literale begründet. Ein Monom M der Form M = L1 ∧ L2 ist nur dann erfüllbar,
wenn L1 = t ≥ x1 , L2 = t ≤ x2 und x1 ≤ x2 2 . Man kann sich leicht überlegen, dass
die anderen, nicht redundanten Fälle nicht erfüllbar sind. Wenn man das Monom
M nun mit dem Literal La konjunktiv verknüpft, treten folgende Fälle auf:
1. La = F alse: Damit ist auch M = F alse, da M ∧ F alse = F alse.
2. La = T rue: M bleibt unverändert, da M ∧ T rue = M .
3. La = t ≤ xa :
a) xa < x1 : M ist unerfüllbar, also M = F alse.
b) xa ≥ x2 : M bleibt unverändert.
c) x1 ≤ xa < x2 : L2 wird durch La ersetzt.
4. La = t ≥ xa :
a) xa > x2 : M ist unerfüllbar, also M = F alse.
b) xa ≤ x1 : M bleibt unverändert.
c) x1 < xa ≤ x2 : L1 wird durch La ersetzt.
Es ist also möglich unter Beachtung dieser Fälle ein Literal und ein Monom so
miteinander zu verknüpfen, dass das daraus resultierende Monom maximal zwei
Literale enthält. Ebenso wie es möglich ist ein Monom mit zwei Literalen bei
der Verknüpfung mit einem Literal gegebenenfalls als unerfüllbar zu erkennen und
2
Natürlich ist auch L1 = t ≤ x1 , L2 = t ≥ x2 und x1 ≥ x2 möglich. Dieser Fall ist aber redundant.
Fälle, in denen Literale der Form L = t = x1 , L = F alse und L = T rue auftreten oder in denen
x1 = x2 gilt, sind auch durch ein Literal darstellbar und werden somit ignoriert
62
somit später zu löschen, ist dies auch bei der Verknüpfung eines Literals mit einem
Monom, das aus nur einem Literal besteht, möglich. Die sich bei einer solchen
Verknüpfung ergebenden Fälle sind zwar zahlreich, aber leicht zu überlegen und
werden deshalb hier nicht aufgeführt.
Wenn der oben beschriebene Algorithmus zur Umwandlung von FA in FDN F die
möglichen Kombinationen von Literalen und Monomen beachtet, bleibt die Anzahl
der Monome in der resultierenden Formel FDN F gering, da die meisten Monome
schnell als unerfüllbar erkannt werden.
Somit werden also aus dem linearen Ungleichungssystem (3.9) mittels der FourierMotzkin-Elimination die unbekannten Variablen entfernt und das resultierende System in ein nichtlineares System von Ungleichungen der Form (3.11), das die Zeit
als Variable enthält, umgewandelt. Die einzelnen Ungleichungen werden gelöst und
produzieren jeweils eine Aussage. Die Aussagen werden nach (3.12) miteinander
verknüpft und die so produzierte Formel mittels des oben beschriebenen Algorithmus in die disjunkive Normalform (3.13) umgeformt. Aus der nun vorhandenen
Formel FDN F kann leicht ermittelt werden, ob sie erfüllbar ist, und wann es gegebenenfalls zum Unfall kommt.
Damit FDN F keine Ergebnisse über mögliche Unfälle in negativer Zeit liefert,
wird sie zuerst mit dem Literal t ≥ 0 verknüpft. Erfüllbar ist FDN F genau dann,
wenn mindestens ein Monom erfüllbar ist, also nicht nicht für alle Monome Mi =
F alse gilt. Den nächstmöglichen Zeitpunkt einer Kollision erhält man, indem für
jedes erfüllbare Monom das kleinste erlaubte t ≥ 0 bestimmt wird. Das kleinste
dieser t’s ist der gesuchte Kollisionszeitpunkt.
3.4.4 Zusammenfassung
Mit Hilfe der in diesem Abschnitt beschriebenen Methoden kann also berechnet
werden, ob zwei Fahrzeuge, deren Länge und Breite bekannt sind, bei gegebener Anfangsgeschwindigkeit, konstanter Beschleunigung gleichbleibender Richtung
kollidieren. Wenn sie kollidieren, dann kann auch der Zeitpunkt der Kollision bestimmt werden.
Die Modellierung der Fahrzeuge als Rechtecke erlaubt es sowohl ihre Maße exakt zu bestimmen, als auch den gewünschten Sicherheitsabstand für Vorder- und
Rückseite einerseits und die beiden Seiten andererseits getrennt zu bestimmen.
Dies ist eine interessante Option, da die Abstände zwischen den Fahrzeugen seitlich im Straßenverkehr wesentlich geringer sind als nach vorne und hinten.
Durch Gleichsetzten der Bahnen zweier Fahrzeuge ergibt sich ein Ungleichungssystem, das vier Unbekannte enthält, die sich aus der Beschreibung der Rechtecke
ergeben. Die nichtlineare Unbekannte Zeit wird in den Koeffizienten verborgen,
dafür werden drei weitere Variablen eingeführt, deren Wert Eins beträgt.3
3
Alternativ könnte man auch sagen, dass die Werte 1, t und t2 betragen. Somit ist die Zeit nicht mehr
in den Koeffizienten, sondern in den neuen Variablen enthalten, was aber zum selben Ergebnis führt.
63
Die Fourier-Motzkin-Elimination ermöglicht es, die vier Unbekannten zu eliminieren, ohne die Erfüllbarkeit des Systems zu beeinträchtigen. Die Elimination
führt zu relativ vielen Ungleichungen, von denen aber einige redundant sind und
aus dem System entfernt werden können.
Das aus der Elimination resultierende Ungleichungssystem wird in ein System
von nichtlinearen Ungleichungen umgewandelt, die als einzige Unbekannte die Zeit
enthalten. Dies geschieht durch Gleichsetzen der vorher eingeführten Unbekannten
mit dem Wert Eins. Betrachtet man die Zeit nun wieder als Unbekannte und nicht
als Teil der Koeffizienten, dann erhält man die genannten nichtlinearen Ungleichungen. Da die Koeffizienten, die die Zeit als einfachen Faktor enthalten, die, die
sie nicht enthalten und die, die sie als quadratischen Faktor enthalten, durch die
drei vor der Elimination eingeführten zusätzlichen Variablen sozusagen voneinander getrennt gehalten wurden, können diese Umformungen durchgeführt werden,
ohne das Ergebnis zu verfälschen.
Im nächsten Schritt werden die Lösungsmengen der einzelnen Ungleichungen
für die Zeit bestimmt. Diese haben die Form von logischen Aussagen. Aus den
Aussagen wird mittels des logischen Und eine Formel erzeugt, die genau dann
erfüllbar ist, wenn es zu einem Unfall kommt.
Da diese Formel aber nicht so einfach direkt auf Erfüllbarkeit getestet werden
kann, wird sie mittels eines speziellen Algorithmus in die disjunktive Normalform
umgewandelt. Der Algorithmus beachtet die Besonderheiten der hier auftretenden
Aussagen und kann somit überflüssige, unerfüllbare Monome aus der Formel entfernen. Hierdurch wird die Umformung wesentlich vereinfacht und beschleunigt,
da die Formel sonst durch Aussagen, die ein logisches Oder enthalten, exponentiell
aufgebläht wird.
Diese Formel in disjunktiver Normalform kann sehr einfach auf Erfüllbarkeit getestet werden, da es genügt, wenn ein Monom erfüllbar ist und die unerfüllbaren
Monome bis auf das letzte gegebenenfalls schon aus der Formel entfernt wurden.
Auch der Kollisionszeitpunkt lässt sich, wenn die Formel erfüllbar ist, einfach anhand des frühest möglichen Zeitpunkts bestimmen, der in den in den Monomen
festgelegten Lösungsmengen enthalten ist.
3.5 Implementierung des Fahrerassistenten
Nachdem in den beiden vorhergehenden Abschnitten das ontologische Kontextmodell und der dazugehörende Satz von externen Regeln ebenso erläutert wurde wie
die Methode der Kollisionsberechnung, wird in diesem Abschnitt die eigentliche
Implementierung des Fahrerassistenten beschrieben.
Abbildung 3.5 zeigt die wichtigsten Klassen und ihre Zugehörigkeit zu den logischen Programmkomponenten. Die logischen Komponenten, wie sie in Abbildung
2.1 dargestellt werden, sind hier durch die äußeren Rechtecke abgebildet, die die
dazugehörigen Javaklassen umfassen. Eine strikte Trennung zwischen Simulator
64
und Kontrolleinheit ist nicht möglich. Auf den logische Aufbau beziehungsweise
die logischen Komponenten und die sich daraus ergebende Architektur, sowie die
verwendeten Werkzeuge wie Sprachen und Framework wurde schon im Kapitel 2
genauer eingegangen.
Abbildung 3.5: Die logischen Komponenten und die wichtigsten Javaklassen
In diesem Abschnitt wird die Implementierung der einzelnen Komponenten des
Fahrerassistenten erläutert. Dies geschieht durch eine Beschreibung der wichtigsten
Java-Klassen, die in dieser Arbeit erstellt wurden, und ihrer Funktion. Quellcode
wird nicht angegeben, der interessierte Leser findet ihn auf der beiliegenden CD.
Die nötigen Anpassungen des Verkehrssimulators VIS SIM werden am Ende des
Abschnitts aufgeführt.
3.5.1 Die Klasse OntoCar.java
Die Klasse OntoCar ist die Schnittstelle, über die der Fahrerassistent in den Verkehrssimulator eingebunden ist und mit ihm kommuniziert. Sie ist auf den Simulator zugeschnitten und versteckt die Details der Implementierung des Simulators
vor dem eigentlichen Fahrerassistenten. Will man also einen anderen Verkehrssimulator verwenden, muss eine neue Klasse OntoCar geschrieben werden. Abbildung
3.6 zeigt die Einbindung der Klasse OntoCar in die Programmstruktur.
Im Verkehrssimulator VIS SIM sind Fahrzeuge als Objekte der Klasse Car modelliert. Diese Fahrzeugobjekte werden um je ein OntoCar-Objekt erweitert. Das
OntoCar-Objekt wird regelmäßig nach einer festgelegten Anzahl von Simulationsschritten für einen Simulationsschritt aktiv. Nun werden von seinem Car drei Methoden des OntoCars der Reihen nach aufgerufen. Die Aufspaltung in drei getrennte Aufrufe erlaubt eine bessere Synchronisation zwischen den einzelnen Fahrzeu-
65
Abbildung 3.6: Die Einbindung der Klasse OntoCar
gen, vor allem garantiert sie, dass alle Fahrzeuge mit aktuellen Daten arbeiten.
Die Unterteilung eines Aufrufs in mehrere Aufrufe zu Synchronisationszwecken ist
durch die Struktur des Simulators begründet, da hier diese Technik zum Einsatz
kommt und somit leicht auf den OntoCar zu übertragen ist.
Mit den ersten zwei aufgerufenen Methoden setOntoCar() und updateOntoCar()
liest der OntoCar die Fahrzeugdaten aus. Dies geschieht beim eigenen Fahrzeug direkt aus dem Car, bei den restlichen Fahrzeugen über den Simulator. Es werden
nur die Daten der Fahrzeuge eingelesen, die einen gewissen Abstand zum eigenen
nicht überschreiten. Somit wird die beschränkte Reichweite der Sender in den einzelnen Fahrzeugen simuliert. Die Methode updateOntoCar() gibt die Daten dann
an das InputOutput-Objekt des OntoCar weiter.
Die dritte Methode startOntoCar() startet ihrerseits nun den OntoAssistant.
Die vom OntoAssistant produzierten Kontrollsignale werden ausgewertet und an
den Car weitergeleitet, das heißt die entsprechenden Variablen, mit denen das Fahrzeugverhalten kontrolliert wird, werden gesetzt. Eine Outputmessage mit den zu
verschickenden, eigenen Fahrzeugdaten wird ebenso produziert und ausgedruckt.
Zum Schluss werden noch die eigenen Daten aktualisiert.
Die Klasse OntoCar übernimmt also die komplette Kommunikation zwischen
dem Simulator und dem eigentlichen Fahrerassistenten. Sie ist in den Simulator
eingebunden und liest alle nötigen Daten aus dem Simulator aus. Der Fahrerassistent greift auf den OntoCar nicht zu, die Kommunikation läuft hier über die
Schnittstelle InputOutput, der OntoCar hingegen muss den Fahrerassistenten explizit aufrufen.
In der Klasse OntoCar sind teilweise auch die Funktionen der in Abschnitt
2.3 beschriebenen Kontrolleinheit implementiert, da sie die Steuerungssignale aus
66
InputOutput ausliest und die entsprechenden Variablen zur Fahrzeugkontrolle in
Car setzt.
3.5.2 Die Klasse InputOutput.java
Über die Klasse InputOutput findet die Kommunikation des eigentlichen Fahrerassistenten mit dem Rest des Systems statt, also dem Simulator beziehungsweise dem
OntoCar. Somit ist der Fahrerassistent vom eigentlichen Simulator unabhängig. Sie
entspricht der logischen Komponente Ein- und Ausgabe aus dem Abschnitt 2.3.
InputOutput besteht aus mehreren Komponenten. Die in diesem Szenario wichtigen sind:
• sensorData: Die Sensordaten des eigenen Fahrzeugs, also Position, Geschwindigkeit, usw.
• incoming: Die Sensordaten aller anderer Fahrzeuge, jeweils in Form einer
hier definierten InputMessage.
• outputMessage: Die Fahrzeugdaten, die an die anderen Fahrzeuge verschickt
werden sollen.
• controlOutput: Die vom Fahrerassistenten erzeugten Kontrollsignale zur
Steuerung des Fahrzeuges.
Für alle diese Komponenten stehen Methoden zur Verfügung, die sie entweder mit
neuen Daten versehen, oder es ermöglichen auf die Daten zuzugreifen.
3.5.3 Die Klasse OntoAssistant.java
Diese Klasse implementiert den in Abschnitt 2.3 beschriebenen Assistenten. Für
jedes Fahrzeug existiert ein eigener OntoAssistant. Die benötigten Daten erhält
er über den InputOutput, über den er auch seine Ausgabe, also die zu sendenden Fahrzeugdaten und vor allem die Kontrollsignale, weitergibt. Der Aufruf des
OntoAssistant erfolgt vom OntoCar, er ist also nicht als selbstständiges Programm mit einer eigenen main-Methode implementiert, sondern als normale JavaKlasse.
Der OntoAssistant liest bei jedem Aufruf die aktuellen Daten aus dem Objekt
InputOutput aus und veranlasst die ExtOntology ihr(e) Modell(e) mit diesen Daten neu zu instanziieren. Im nächsten Schritt wird über die Inquiry-Klasse eine
Anfrage an die ExtOntology gestartet. Das Ergebnis dieser Anfrage sind alle bekannten Fahrzeuge mit ihren Daten, sowie die Daten des eigenen Fahrzeugs. Die
Fahrzeuge werden als Objekte des Typs Vehicle in einem Ergebnisobjekt der Klasse Result gespeichert. Dieses dient als Grundlage zweier Kollisionsberechnungen.
Beide werden von der Evaluation-Klasse unter Verwendung der FMElim-Klasse
durchgeführt. Die erste Berechnung überprüft, ob es zu einem Unfall mit einem
67
anderen Fahrzeug kommt, wenn alle Parameter so bleiben wie sie sind. Die zweite
wird nur durchgeführt, wenn das eigene Fahrzeug steht oder sich nur sehr langsam
bewegt. Sie überprüft was passiert, wenn man beschleunigt. Beide Berechnungen schreiben ihr Ergebnis, also, ob es zum Unfall kommen wird, die erwartete
Zeit bis zur Kollision und den Kollisionspartner, in das Result-Objekt. Anschließend wertet die Evaluation-Klasse das Ergebnis aus, das heißt sie berechnet ein
Gefahrenlevel aus der Zeit bis zur nächsten Kollision und generiert hieraus den
ControlOutput im InputOutput. Auch werden die Zeit bis zur nächsten Kollision
und die ID des Kollisionspartners in der Fahrzeugontologie abgespeichert. Zum
Schluss wird noch die OutputMessage in den InputOutput geschrieben.
3.5.4 Die Klasse ExtOntology.java
Hier wird die Fahrzeugontologie und die Umweltontologie verwaltet. Auf die Umweltontologie wird im Kapitel 4 genauer eingegangen, es gilt aber im Prinzip dasselbe wie für die Fahrzeugontologie. Diese Klasse ist die Implementierung der logischen Komponente Ontologie und Reasoner aus dem Abschnitt 2.3.
Bei der Initialisierung der Ontologie wird die Adresse der OWL-Datei übergeben,
in der die Fahrzeugontologie formalisiert ist. Aus dieser Datei wird ein OntModel,
die Jena-Implementierung einer OWL-Ontologie, erzeugt. Die zu importierende
Beispielontologie mit weiteren Fahrzeugtypen wird von Jena automatisch geladen.
Das OntModel ist mit Jenas OWL DL Reasoner verknüpft. Daten werden in dieses
Modell geschrieben und aus ihm gelöscht, es enthält also auch alle Fahrzeuginstanzen.
Da ein Teil des Fahrzeugmodells, unter anderem die Abbildungsvorschriften
für das importierte Modell, in einem externen Regelsatz gespeichert ist, wird
vom OntModel ein Jena InfModel abgeleitet. Dies geschieht mit Hilfe des speziell hierfür konfigurierten GenericRuleReasoner. Er wird sowohl mit dem in der
Datei car_no_streets.rules formalisierten externen Regelsatz erweitert als auch
den Regeln für OWL. Anfragen werden also an das InfModel gestellt, da die durch
die externen car_no_streets.rules beschriebenen Zusammenhänge im OntModel
nicht enthalten sind.
ExtOntology stellt Methoden zur Instanziierung der Fahrzeugontologie bereit.
Bei jeder Instanziierung werden die alten Daten eines Fahrzeugs genau dann gelöscht, wenn neue Daten zur Verfügung stehen. Nach der erfolgten Instanziierung
des OntModels wird das alte InfModel gelöscht und neu abgeleitet. Der mit ihm
verknüpfte Reasoner bleibt aber erhalten, somit müssen die Regeln in der Datei
car_no_streets.rules nicht erneut geladen werden.
3.5.5 Die Klasse Inquiry.java
Anfragen an die Ontologie führt der Fahrerassistent über die Klasse Inquiry durch.
Diese bedient sich Jenas SPARQL Query Engine. Somit kann sie als Teil der logi-
68
schen Komponente Anwendung betrachtet werden.
Inquiry produziert aus einem String einen SPARQL-Query. In diesem Szenario sind dies ein Query, der alle Fahrzeuginstanzen vom Typ Andere_Fahrzeuge
liefert, und ein Query, der ein Eigenes_Fahrzeug ergibt.
Mit diesen Queries wird dann je eine Anfrage direkt an das InfModel der
ExtOntology gestellt. Die erhaltenen Fahrzeuge werden als Objekte vom Typ
Vehicle in einem Result abgespeichert.
Die Methode startCollisionInquiry() führt beide Anfragen komplett durch
und liefert als Rückgabewert eben jenes Result. Sie wird vom OntoAssistant
aufgerufen. Es existiert auch noch eine Methode startEnvInquiry(), die eine
Anfrage an die Umweltontologie durchführt und das Ergebnis ebenfalls als Result
zurückgibt.
3.5.6 Die Klasse Evaluation.java
Die Evaluation ist ebenfalls ein Teil der Anwendung. Sie bedient sich der Klasse
FMElim um aus dem von Inquiry erzeugten Result eine Kollisionsvorhersage zu
machen und ein Gefahrenlevel daraus abzuleiten.
Die Methode checkCrash(Result r) berechnet den frühest möglichen Zeitpunkt einer Kollision des eigenen Fahrzeugs mit einem anderen Fahrzeug. Sowohl
die Zeit bis zum Unfall als auch der Kollisionspartner werden gegebenenfalls im
Result abgespeichert.
Die zweite Kollisionsberechnung, also ob es möglich ist für ein langsames Fahrzeug gefahrlos zu beschleunigen, wird von einer eigenen Methode durchgeführt,
der checkAcceleration(Result r). Intern greifen beide Methoden auf die private Methode testCrash zurück, da die Berechnungen exakt die gleichen sind.
Einziger Unterschied ist es, dass im zweiten Fall erst die eigene Beschleunigung
auf das Maximum gesetzt wird.
Zu beachten ist, dass die in Abschnitt 3.4 beschriebene Methode zur Kollisionsberechnung nicht die Tatsache berücksichtigt, dass bremsende Fahrzeuge nur bis
zum Stillstand abbremsen und nicht unmittelbar mit der Bremsbeschleunigung
weiter im Rückwärtsgang beschleunigen. Damit es hier nicht zu falschen Ergebnissen kommt, wird gegebenenfalls die Zeit bis zum Stillstand der Fahrzeuge berechnet
und überprüft, ob die Kollision vorher oder nachher eintritt, beziehungsweise ob
ein stehendes Fahrzeug getroffen wird.
Ebenso werden Fahrzeuge, die von hinten kommen, ignoriert, da die einzige Reaktion zur Kollisionsvermeidung Abbremsen ist, und dies hier kontraproduktiv
ist. Die relative Position hinten bedeutet, dass der Winkel zwischen eigener Fahrzeugrichtung und dem Mittelpunkt des anderen Fahrzeuges zwischen 135◦ und
225◦ beträgt, also sich das Fahrzeug sozusagen im Quadranten hinter dem eigenen
befindet.
Mit der Methode collReaction(OntoAssistant a, Result r) wird die Reaktion auf die berechneten Ergebnisse festgelegt und die Zeit bis zur Kollision sowie
69
der Kollisionspartner im OntModel abgespeichert. Das InfModel übernimmt diese
Werte automatisch vom OntModel, ohne dass dies explizit angegeben werden muss.
Um die Reaktion zur Kollisionsvermeidung zu steuern, wird ein Gefahrenlevel
berechnet. Dieses leitet sich aus der Zeit bis zum Crash und einer Konstanten
level_const ab. Ist die Zeit kleiner als die Konstante, dann ist das Gefahrenlevel
maximal, liegt sie zwischen der Konstante und der doppelten Konstante, dann ist
das Level um eins niedriger, usw. Ob es gefahrlos ist zu beschleunigen, wenn das
eigene Fahrzeug sehr langsam ist, wird ebenfalls mittels eines Schwellenwertes bestimmt. Die Konstante zur Berechnung des Gefahrenlevels wird im OntoAssistant
festgelegt und beträgt 0.9 Sekunden. Dies ist ein empirischer Wert, der zwar einerseits nicht alle Kollisionen vermeidet, aber andererseits den Verkehrsfluss nicht
zu stark beeinflusst. Der Schwellenwert bei der Beschleunigungswarnung liegt bei
der eineinhalbfachen Konstanten, also 1.35 Sekunden.
Mit Hilfe des hier bestimmten Gefahrenlevels und dem Ergebnis der Beschleunigungswarnung generiert collReaction(OntoAssistant a, Result r) schließlich noch den ControlOutput im InputOutput.
3.5.7 Die Klasse FMElim.java
Die Klasse FMElim implementiert die Fourier-Motzkin-Elimination und wesentliche
Teile der in Abschnitt 3.4 erläuterten Kollisionsberechnung. Sie ermöglicht es mit
Hilfe der Klasse CollisionLogic den Kollisionszeitpunkt zweier Fahrzeuge zu
bestimmen. Somit ist sie ein zentraler Teil der Komponente Anwendung, wie sie
im Abschnitt 2.3 beschrieben ist.
Die Methode carElim(Vehicle ve1, Vehicle ve2) berechnet die Zeit bis zur
Kollision der beiden Fahrzeuge ve1 und ve2. Die Zeit bis zur Kollision wird als
float zurückgegeben. Kommt es zu keiner Kollision, ist der Rückgabewert -1.
Die Berechnung erfolgt nach der in Abschnitt 3.4 beschriebenen Vorgehensweise.
Das Aufstellen des Ungleichungssystems und die Elimination der vier Unbekannten, die sich durch die Modellierung der Fahrzeuge als Rechtecke ergeben, wird in
Methoden der Klasse FMElim implementiert. Das Lösen der quadratischen Ungleichungen und die Umwandlung der resultierenden Formel in eine disjunktive Normalform ist ebenso wie der Test auf Erfüllbarkeit und die Suche nach dem frühesten
möglichen Kollisionszeitpunkt in der Klasse CollisionLogic implementiert. Die
entsprechenden Methoden werden von FMElim aus aufgerufen.
3.5.8 Die Klasse CollisionLogic.java
Die Klasse CollisionLogic implementiert die nicht in FMElim enthaltenen Teile
der Kollisionsberechnung aus Abschnitt 3.4. Somit ist sie ebenfalls Teil der Anwendung. Sie enthält folgende Klassendefinitionen:
• Literal: Ein Literal der Form T rue, F alse, t ≤ x, t ≥ x oder t = x.
70
• Aussage: Eine Aussage, die entweder aus einem Literal oder der Verknüpfung zweier Literale besteht (L1 ∨ L2 oder L1 ∧ L2 ).
• Monom: Ein Monom, das sich aus einem oder zwei Literalen durch eine konjunktive Verknüpfung zusammensetzt (L1 ∧ L2 ).
• Formel: Eine Formel in disjunktiver Normalform (M1 ∨ ... ∨ Mn ).
• Inequation: Implementiert die Lösung von quadratischen Ungleichungen.
Die Methode quadInEquation(float a, float b, float c) errechnet die Lösung der Ungleichung ax2 + bx + c ≥ 0 und gibt sie als Aussage zurück. Mit Hilfe
von createFormula(Aussage[] au) kann ein Array von Aussagen, die durch logische Unds verbunden sind, in eine Formel in disjunktiver Normalform umgewandelt werden. Hierzu wird der in Abschnitt 3.4 erläuterte Algorithmus implementiert. Durch die Berücksichtigung der speziellen Form der Aussagen, Literale
und Monome wird ein starkes Anwachsen der Formel vermieden. Die Methode
testCrash(Formel f) liefert schließlich die Zeit bis zum nächsten Crash, beziehungsweise den Wert -1 wenn die Formel unerfüllbar ist.
3.5.9 Weitere Klassen
Es sind noch weitere Klassen implementiert, die hier aber nur kurz erwähnt werden.
Vehicle ist die Klasse, in der intern die Daten eines einzelnen Fahrzeugs gespeichert werden. Sie stellt ein paar Hilfsmethoden zur Verfügung und übernimmt zum
Beispiel die Umwandlung von Richtungswerten und Geschwindigkeit in Vektoren.
Ebenso kann die relative Position, also vorne, hinten, links oder rechts eines anderen Fahrzeugs mit Hilfe einer hier implementierten Methode bestimmt werden.
Result dient einerseits zur Speicherung der Ergebnisse von Anfragen an die Ontologie, also Listen von Fahrzeugen, andererseits auch der Speicherung der daraus
berechneten Kollisionszeiten und der ID der Kollisionspartner.
Location implementiert einen Punkt in der zweidimensionalen Ebene und stellt
Hilfsmethoden wie die Abstandsberechnung zweier Locations zur Verfügung.
Helper implementiert ein paar Hilfsfunktionen für Rechenoperationen mit Ungleichungen.
3.5.10 Änderungen am Verkehrssimulator
Zum Schluss dieses Abschnitts noch ein paar Bemerkungen zu den am Verkehrssimulator vorgenommenen Änderungen.
Änderungen an Car.java
Um den Fahrerassistenten in den Verkehrssimulator einzubinden, wird jedes Fahrzeug des Simulators, beschrieben durch die Klasse Car, um einen OntoCar erweitert. Somit hat jedes Fahrzeug seinen eigenen Fahrerassistenten mit eigener Ontologie, etc. Die Initialisierung des OntoCar wird von der Klasse Car durchgeführt.
71
Auch die regelmäßigen Aufrufe erfolgen von hier. Somit muss Car mit einem Zähler
und einer Variablen zur Bestimmung der Häufigkeit des Aufrufs versehen werden.
Dadurch, dass die Zähler der einzelnen Fahrzeuge voneinander unabhängig sind,
erfolgen auch die Kollisionsberechnung meist zu unterschiedlichen Zeitpunkten.
Synchronisation bei der Kollisionsberechnung ist nicht nur unrealistisch, sondern
führt auch zu schlechteren Ergebnissen. Als Beispiel hierfür betrachte man zwei
Fahrzeuge, die beide stehen, aber deren Bahnen sich kreuzen. Wenn sie beide
gleichzeitig berechnen, ob es in Ordnung ist zu beschleunigen, dann kommen sie
zu dem Ergebnis, dass keine Gefahr besteht, da ja das andere Fahrzeug steht. Somit fahren beide los und es kommt zum Unfall, wenn sie sich so nahe beieinander
befinden, dass der Fahrerassistent keine zweite Berechnung vornimmt. Erfolgt die
Kollisionsberechnung aber zu unterschiedlichen Zeitpunkten, dann fährt das erste
Fahrzeug los und das zweite kann die drohende Gefahr erkennen, da es das erste
nicht mehr als stehend betrachtet.
Damit das Fahrzeug überhaupt auf die vom Fahrerassistenten erzeugten Kontrollsignale reagieren kann, muss die Klasse Car ebenfalls erweitert werde. Zuerst
werden weitere Variablen benötigt, über die der OntoCar das Fahrzeugverhalten
steuern kann. Dies sind im wesentlichen Variablen, mit denen das Fahrzeug vor
einem drohenden Unfall gewarnt, die Beschleunigung verhindert oder eine Notbremsung eingeleitet werden kann. Damit das Fahrzeug auch auf diese Variablen
reagiert, muss die Methode implement_Basic_Car_Following_Model() des Simulators, mit der das Fahrzeugverhalten gesteuert wird, durch eine erweiterte
Variante, die Methode test_Car_Model(), ersetzt werden. Diese überprüft die
neu eingeführten Kontrollvariablen und bremst das Fahrzeug gegebenenfalls ab.
Wenn das Signal zur Notbremsung gesetzt ist, dann erfolgt eine Vollbremsung
über mehrere Simulatorschritte. Dies hat den Grund, dass der Simulator in seiner
ursprünglichen Implementierung, wann immer möglich, Fahrzeuge maximal beschleunigt. Ein Abbremsen in einem Schritt würde also vom Simulator im nächsten
Schritt sofort wieder mit einer maximalen Beschleunigung beantwortet werden, was
die Erfolgsquote bei Notbremsungen reduziert.
Diese Erweiterung übernimmt also zusammen mit dem OntoCar die Funktion der
Kontrolleinheit aus Abschnitt 2.3. Da der Simulator VIS SIM keine Funktionen zur
externen Fahrzeugkontrolle zur Verfügung stellt, wurde die Kontrolleinheit in den
Simulator integriert und ist dadurch vom restlichen Fahrerassistenten getrennt,
kann also bei der Anbindung eines anderen Simulators nicht wiederverwendet werden. Da ihre Funktionsweise aber sehr einfach gehalten ist, ist dies als kein großer
Nachteil.
Weitere Änderungen
Um die benötigten Fahrzeugdaten, und in der erweiterten Version auch die Informationen über das Verkehrsnetz, aus dem Simulator auslesen zu können, wurde
er mit mehreren Hilfsfunktionen und Variablen ausgestattet, die aber nicht weiter
erwähnenswert sind.
72
Da die Fahrzeuge in der ursprünglichen Implementierung sehr hohe Beschleunigungswerte aufwiesen, wurden diese etwas reduziert, um realistischeres Fahrverhalten zu simulieren.
In der Orginalversion von VIS SIM haben die Fahrzeuge eine Farbe, die sich an
ihrer Geschwindigkeit orientiert. In der angepassten Version ergibt sich die Farbe
aus dem Gefahrenlevel beziehungsweise den Kontrollsignalen, die für ein Fahrzeug
ermittelt wurden. Die einzelnen Farben sind:
• Blau: Kein Warnsignal vom Fahrerassistenten.
• Grün: Die Notbremsung ist wieder aufgehoben:
• Gelb: Geringste Warnstufe.
• Orange: Nächste Warnstufe. Fahrzeug beschleunigt nicht weiter.
• Rot: Höchste Warnstufe. Notbremsung erfolgt.
• Magenta: Beschleunigungswarnung. Fahrzeug wird abgebremst.
Eine weitere Änderung ist die Erweiterung der einzelnen Simulationsschritte von
zwei auf drei Phasen. Hierdurch wird die Synchronisation der Fahrzeugdaten erleichtert.
Auch die Hauptklasse des Verkehrssimulators wurde erweitert. Aufrufe müssen
jetzt mit einem der vier folgenden Parameter erfolgen:
• --nostreets: Das hier beschriebene Szenario, erweitert um die Umweltontologie des zweiten Szenarios, wird aufgerufen. Als Fahrzeugklasse wird der
Simulator_PKW der Fahrzeugontologie verwendet.
• --importnostreets: Ebenso, nur ist die Fahrzeugklasse der in der importierten Beispielontologie enthaltene Simulator-Car.
• --streets: Die Straßenontologie des zweiten Szenarios wird importiert. Als
Fahrzeugklasse wird der Simulator_PKW der Fahrzeugontologie verwendet.
• --importandstreets: Der importierte Simulator-Car und die Straßenontologie kommen zum Einsatz.
Diese Aufzählung der am Verkehrssimulator vorgenommenen Veränderungen ist
nicht vollständig, die hier genannten sind aber die wichtigsten.
73
3.6 Ergebnisse, Schwachpunkte und Erweiterungsmöglichkeiten
In diesem Abschnitt wird die in diesem Kapitel beschriebene erste Version des
Fahrerassistenten analysiert. Zuerst werden die erzielten Ergebnisse beschrieben,
dann wird auf die Schwachstellen dieser Version und mögliche Lösungen eingegangen, und zum Schluss werden mögliche Erweiterungen genannt. Zwei dieser
Erweiterungen, eine Umwelt- und eine Straßenontologie sind in der zweiten Version des Fahrerassistenten implementiert, die in Kapitel 4 genau erläutert wird.
Eine detaillierte Bewertung des Fahrerassistenten wird in Kapitel 5 vorgenommen.
3.6.1 Ergebnisse
Der Fahrerassistent in dieser ersten Version hat nur relativ wenige Daten zur
Verfügung. Seine Informationen beschränken sich auf die Fahrzeugdaten, also im
Wesentlichen Positions-, Geschwindigkeits- und Beschleunigungswerte, sowie die
Maße der einzelnen Fahrzeuge. Mit diesen Daten führt jedes Fahrzeug ein oder
zwei Berechnungen durch. Zuerst wird bei jedem Aufruf ermittelt, ob es zu einem
Unfall kommt wenn alle Fahrzeugdaten gleich bleiben. Ist das eigene Fahrzeug sehr
langsam oder steht es, dann überprüft der Assistent mit der zweiten Berechnung,
ob beim Beschleunigen die Gefahr einer Kollision besteht. Es zeigt sich, dass die
mit diesen Berechnungen erzielten Ergebnisse schon recht gut sind.
t[s]
50
t
u
mit Assistent
40
t
u
30
20
10
t
trs u
u
t
tu
t u
t
tu
rs u
rs u
0
0
10
20
t
u u
t t
u
sr
30
t
u
40
t
t u
u
t
u
t
u
rs
rs
50
60
t
u
t
u
t
u
t
t u
t u
u
t
u
t
u
t
uu
t
t
u
t
u
ohne Assistent
rs
rs
70
rs
80
rs
90
rs
100
n
Abbildung 3.7: Geschwindigkeit des Simulators mit und ohne Fahrerassistenten
Abbildung 3.7 zeigt einen Vergleich der Geschwindigkeiten des Simulators mit
und ohne Fahrerassistent. Zu beachten ist, dass der Einsatz des Fahrerassistenten
anhand einer großen Kreuzung getestet wurde, an der es sehr schnell zu einem Stau
kam. Somit konnte einerseits eine große Menge an Fahrzeugen simuliert werden,
74
andererseits führen alle Fahrzeuge, die stehen, zusätzlich noch Berechnungen für
Beschleunigungswarnungen durch, also genau doppelt so viele wie schnelle Fahrzeuge.
Auf der x-Achse von 3.7 ist die Zahl der simulierten Fahrzeuge aufgetragen, auf
der y-Achse die Zeit, die ein Simulationsschritt, in dem jedes Fahrzeug seinen Fahrerassistenten genau einmal aufruft, benötigt. Die Zeit wird in Sekunden gemessen.
Die waagrechte Kurve stellt die Geschwindigkeit ohne den Fahrerassistenten dar,
die andere die Geschwindigkeit mit Fahrerassistent. Alle Simulationen wurden auf
einem AMD Athlon 64 3500+ mit 1024 MB Arbeitsspeicher durchgeführt.
Zuerst kann man feststellen, dass die Geschwindigkeit des Simulators alleine
nicht merklich von der Anzahl der Fahrzeuge abhängt. Ein Simulationsschritt dauert rund 0,75 Sekunden. Der Einsatz des Fahrerassistenten dagegen verlangsamt die
Simulation umso stärker je mehr Fahrzeuge im Einsatz sind. Der Grund hierfür ist,
dass der Rechenaufwand für den Rechner quadratisch mit der Anzahl der Fahrzeuge steigt. Ein einzelner Fahrerassistent berechnet für alle Fahrzeuge, ob eine
Kollisionsgefahr zwischen diesem und dem eigenen Fahrzeug besteht. Hier ist der
Rechenaufwand also linear. Der Rechner, der die Simulation durchführt, muss aber
die Berechnungen aller Fahrerassistenten vornehmen. Somit erfordern n Fahrzeuge
n · (n − 1) Kollisionsberechnungen, die Komplexität der Simulation bezüglich der
Kollisionsberechnungen und der Anzahl der Fahrzeuge ist also O(n2 ).
t[ms]
500
rs
400
rs
300
200
100
rs rs sr sr rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs
rs rs
rs
rs rs
sr rs
rs sr
0
0
10
20
30
40
50
60
70
80
90
100
n
Abbildung 3.8: Geschwindigkeit eines einzelnen Fahrerassistenten
Abbildung 3.8 zeigt die Zeit, die ein einzelner Aufruf des Fahrerassistenten in
einer Simulation mit n Fahrzeugen dauert. Sie berechnet sich aus der Gesamtzeit
eines Simulationsschrittes minus der Zeit, die der Simulator ohne den Fahrerassistenten benötigt. Das Ergebnis wird durch die Zahl der Fahrzeuge geteilt, da jedes
Fahrzeug genau einen Assistenten hat und diesen genau einmal aufruft.
75
Es zeigt sich, dass der Fahrerassistent für eine geringe Anzahl von Fahrzeugen sehr schnell ist. Bei 10 Fahrzeugen benötigt jedes Fahrzeug 36 ms extra für
den Einsatz seines Fahrerassistenten. Dieser Wert steigt linear mit der Zahl der
Fahrzeuge. Bei 51 Fahrzeugen steigt die Zeit zum Beispiel auf 116 ms, bei 81 Fahrzeugen auf 192 ms. Ab ungefähr gut 100 Fahrzeugen, die gleichzeitig simuliert
werden müssen, nimmt die Simulationszeit aber sehr stark zu. Bei 105 Fahrzeugen
dauert der Aufruf zum Beispiel 436 ms. Dies liegt am mangelnden Arbeitsspeicher
des Simulationsrechners, so dass Simulationen mit mehr als 100 Fahrzeugen hier
keinen Wert für die Bestimmung der Komplexität des Fahrerassistenten haben.
Zumindest für den getesteten Bereich, für den der Simulationsrechner genügend
Arbeitsspeicher hat, verhält sich die Rechenzeit des Fahrerassistenten somit linear
zur Zahl der erfassten Verkehrsteilnehmer. Seine Komplexität ist in diesem Bereich
also O(n).
Wie sich aber die Anfragezeit oder die Instanziierung der Ontologie zu der Anzahl der in ihr gespeicherten Fahrzeuginstanzen genau verhält, ist nicht klar ersichtlich. Dies hängt von der Jena-Implementierung und der genauen Form der
Anfrage ab. Da die Anfragen aber eine sehr einfache Struktur haben, sie liefern
nur alle Vertreter eines Typs, sollten diese Operationen eigentlich keine zu hohe Komplexität aufweisen. Ebenso ist anzunehmen, dass eine wirklich große Anzahl von Fahrzeuginstanzen unter normalen Umständen nicht auftritt. Der Grund
hierfür ist, dass der Bereich, aus dem die Daten der anderen Fahrzeuge überhaupt
empfangen werden können, beschränkt ist.4
Die relativ hohe Geschwindigkeit, mit der der Fahrerassistent Kontrollsignale
produzieren kann, zeigt, dass der Einsatz von Ontologien zur Kontextmodellierung
hier prinzipiell machbar ist. Anfragen und andere Operationen auf dem ontologischen Modell sind, zumindest bei dieser recht einfachen Fahrzeugontologie, schnell
genug, um Daten für Kollisionsberechnungen in Echtzeit zur Verfügung zu stellen. Die Methode der Kollisionsberechnung an sich, also die Modellierung als sich
bewegende Rechtecke, erweist sich ebenfalls als hinreichend schnell und liefert die
gewünschten Ergebnisse.
Insgesamt reduziert der Einsatz des Fahrerassistenten die Anzahl der Kollisionen erheblich. Es zeigt sich, dass wenn der Fahrerassistent öfter aufgerufen wird,
die Zahl der Kollisionen gegenüber einem weniger häufigen Aufrufen abnimmt.
Dies lässt sich leicht dadurch erklären, dass Voraussagen mit aktuelleren Daten
natürlich auch bessere Ergebnisse liefern. In der Simulation werden die Daten alle
halbe Sekunde aktualisiert und auch die Kollisionsmöglichkeiten berechnet. Eine
4
Nach [wik07b] beträgt die Reichweite von externen Rundstrahlantennen für WLAN-Hardware bis zu
300 Meter. Bei einer Fahrzeugabmessung von 5 Meter Länge und 2 Meter Breite passen maximal rund
28000 Fahrzeuge in einen Kreis mit einem Radius von 300 Meter, wenn die gesamte Kreisfläche mit
Fahrzeugen bedeckt ist. Es ist nicht anzunehmen, dass die Reichweite der in die Fahrzeuge integrierten
Sender größer als 300 Meter ist. Betrachtet man nun statt der Fläche eines Kreises eine Straße mit
vier Spuren in jede Richtung, so ergibt sich, dass diese Platz für maximal 960 Fahrzeuge mit den
genannten Maßen bietet.
76
noch höhere Frequenz des Einsatzes erscheint unnötig, da die Ergebnisse erstens
schon bei dieser Frequenz gut sind, beziehungsweise die Schwachpunkte nicht an
der mangelnden Aktualität der Berechnungen liegen, zweitens die Berechnungen
an sich auch Zeit benötigen, und drittens die Annahme, dass in einer sehr hohen
Frequenz die aktuellen, präzisen Daten aller Verkehrsteilnehmer zur Verfügung
stehen, nicht sehr realistisch ist.
Während der Entwicklung des Assistenten zeigte sich eine Schwachstelle der einfachen Kollisionsberechnung mit der Annahme, dass alle Fahrzeugwerte konstant
bleiben. Dies ist das in Abschnitt 3.5.10 beschriebene Szenario, dass zwei stehende Fahrzeuge, deren Bahnen sich kreuzen, fälschlicherweise annehmen, dass keine
Gefahr besteht, wenn sie beschleunigen. Zur Lösung dieses Problems werden die
Aufrufe der Fahrerassistenten der einzelnen Fahrzeuge voneinander unabhängig
durchgeführt, wie in besagtem Abschnitt erwähnt. Außerdem wurde der Assistent
um die Beschleunigungswarnung erweitert. Diese beiden Erweiterungen verbessern
die Qualität der Kollisionsvorhersage ganz erheblich und reduzieren somit die Anzahl der auftretenden Unfälle. Hier zeigt sich, dass Fehleinschätzungen vor allem
dann auftreten, wenn sich die Fahrzeugparameter ändern, hier also Beschleunigung
und Geschwindigkeit. Um dieses Problem zu lösen stehen zwei Möglichkeiten zur
Auswahl. Entweder man führt die Berechnungen sehr oft durch und kann dadurch
ständig auf die sich verändernden Bedingungen reagieren, oder man versucht die
Änderungen vorherzusagen und die Berechnungen entsprechend anzupassen. Die
erste Option kann nur bis zu einem gewissen Ausmaß durchgeführt werden, da die
Verfügbarkeit aktueller Daten nicht beliebig hoch ist. Die zweite Option ist wesentlich schwieriger, da das Fahrerverhalten keinen festen Regeln folgt und somit
nur schwer vorauszusagen ist. Im Falle von langsamen oder stehenden Fahrzeugen ist eine Vorhersage aber nicht so schwierig, der Fahrer hat eigentlich nur zwei
Möglichkeiten. Er kann entweder stehenbleiben, oder das Fahrzeug beschleunigen.
Richtungsänderungen sind bei stehenden Fahrzeugen unmöglich und bei langsamen ändern sie die Bahn, in der sich das Fahrzeug bewegt, im relevanten Zeitraum
nur geringfügig. Es ist hier also möglich zu berechnen, was passiert wenn der Fahrer
die offensichtliche Option wählt, nämlich zu beschleunigen. Unfälle, die sich durch
die zweite Möglichkeit, also stehenzubleiben oder langsam weiterzufahren, ergeben, werden schon von der normalen Kollisionsvorhersage berechnet. Bei diesem
Szenario kann also die Veränderung der Fahrzeugparameter im Voraus bestimmt
werden. Dies ermöglicht es bessere Ergebnisse bei der Kollisionsvorhersage zu erzielen, da mehr potentielle Gefahrenquellen erkannt werden.
Die Testdurchläufe haben außerdem gezeigt, dass die erzielten Ergebnisse auf
geraden Strecken besser sind als auf kurvigen Strecken. Dies liegt in der Art der
Kollisionsberechnung begründet. Hier wird die Annahme gemacht, dass sich Fahrzeuge auf Bahngeraden bewegen. Wenn diese Annahme erfüllt ist, dann funktioniert auch die Kollisionsberechnung. Die besten Ergebnisse können an Kreuzungen
zweier gerader Straßen erzielt werden.
77
Die Erfolgsquote beträgt in diesem Fall zwar nicht hundert Prozent, allerdings
kommt es fast ausschließlich bei sehr niedrigen Geschwindigkeiten zu Kollisionen.
Die Erfolgsquote ließe sich durch eine größere räumliche Ausdehnung der Fahrzeuge
oder ein früheres Abbremsen weiter verbessern. Vor allem die Unfälle bei höheren
Geschwindigkeiten sind meist sehr knapp, hier würde eine größere Breite der Fahrzeuge Abhilfe schaffen. Zusätzlich muss ein beobachteter, sehr knapper Unfall nicht
wirklich ein Unfall sein, da die Fläche der Rechtecke im Simulator nicht unbedingt
mit den Fahrzeugdaten übereinstimmt. Grund hierfür ist die vermutete fehlerhafte
Umrechnung von Pixeln in Meter, die zu einer gewissen Unschärfe führt. Die richtige Balance zwischen Fehlerquote und unnötigem Eingreifen zu finden ist schwierig
und hängt auch vom individuellen Fahrerverhalten ab. Die Probleme, die sich hier
ergeben, werden in Abschnitt 2.3.7 genauer erläutert. Da die meisten Unfälle aber
nur bei geringen Geschwindigkeiten auftreten, kann dies durchaus als Funktionieren des Fahrerassistenten gewertet werden, weil es gelingt die Anzahl der schweren
Unfälle zu reduzieren. Eine weitere Ursache für auftretende Kollisionen ist, dass ein
Unfall, sobald er passiert ist, vom Fahrerassistenten ignoriert wird. Somit bleibt die
Simulation am Laufen, beziehungsweise es wäre den Fahrern möglich ihre Fahrzeuge vom Unfallort wegzufahren. Dies führt in der Simulation dazu, dass Fahrzeuge
manchmal, wenn sie sehr nahe beieinander stehen, übereinander fahren.
Exakte Zahlen über die Erfolgsquote des Fahrerassistenten können nicht angegeben werden, da der Verkehrssimulator seinen Berechnungen ein unrealistisches
Fahrerverhalten zugrundelegt, nämlich wann immer es möglich ist zu beschleunigen und nie die Spur zu wechseln.
3.6.2 Schwachpunkte und mögliche Lösungen
Die erwähnten Probleme durch sich ändernde Fahrzeugdaten sind einer der Schwachpunkte des Fahrerassistenten. Um sie zu beheben, müssten bessere Vorhersagen
des Fahrer- und Fahrzeugverhaltens getroffen werden, was aber aus den reinen
Positions- und Geschwindigkeitsdaten der Fahrzeuge nur sehr schwer möglich ist.
Es bietet sich also an, mehr Informationen in die Kollisionsberechnungen einfließen
zu lassen. Mögliche Erweiterungen des Kontextmodells und der Kollisionsberechnungen werden im nächsten Abschnitt beschrieben.
Ein weiterer Schwachpunkt liegt in der Berechnung der Fahrzeugbahn als Gerade. Dies führt vor allem bei Straßen mit Kurven zu schlechten Ergebnissen, aber
auch wenn ein Fahrzeug an einer Kreuzung abbiegt. Hier sind drei Möglichkeiten
denkbar, die schon mit geringen zusätzlichen Informationen bessere Vorhersagen
ermöglichen sollten. Die einfachste wäre es, je nach Lenkradeinschlag die Vorhersagen einfach einzuschränken, also je höher der Lenkradeinschlag, desto näher muss
der Kollisionszeitpunkt liegen, damit er beachtet wird. In einer starken Kurve
würden also weiter entfernte Kollisionspunkte ignoriert, da hier die Bahnabweichung von der berechneten Geraden zu hoch ist. Diese Variante kann aber nur die
Zahl der Fehlalarme verringern und keine neuen Unfälle vorhersagen. Die zwei-
78
te Möglichkeit ist es keine Gerade, sondern eine Kurve zu berechnen, wenn das
Lenkrad eingeschlagen ist. Aus dem Lenkradwinkel und weiteren Fahrzeugdaten
lässt sich der Kreis ermitteln, auf dem sich das Fahrzeug bewegt. Aber auch diese Methode liefert nur für relativ nahe Objekte die richtigen Ergebnisse, da die
tatsächliche Bahn wohl kein Kreis ist, sondern nur ein Kreisabschnitt auf den wieder eine Gerade folgt. Außerdem muss die Berechnungsformel angepasst werden, da
hier Rechtecke beschrieben werden müssen, die sich auf Kreisbahnen bewegen und
somit ständig ihre Richtung ändern. Als letzte Möglichkeit könnte die Frequenz
der Berechnungen in Kurven erhöht werden. Hiermit würde man der Tatsache sich
häufig ändernder Parameter gerecht werden. Da die Parameter, die sich ändern,
in diesem Falle die des eigenen Fahrzeugs sind, sollten zumindest die meisten von
ihnen ständig aktuell sein. Diese Möglichkeit könnte auch mit den beiden zuerst
genannten kombiniert werden.
Von Nachteil ist auch, dass der Fahrerassistent sämtliche Fakten, die sich aus dem
Streckenverlauf ergeben, ignoriert. So kann es sein, dass zwei Fahrzeuge überhaupt
nicht kollidieren können, da sie auf getrennten Straßen sind, sich aber aus den Fahrzeugdaten trotzdem eine Kollision ergibt. Im ungünstigsten Fall werden dann beide
Fahrzeuge abgebremst, obwohl ein Unfall durch den Streckenverlauf unmöglich gemacht wird. Hier ist es nötig weitere Informationen zum Straßennetz zu beachten,
um solche Fehleinschätzungen zu vermeiden.
Vorfahrtsregeln werden ebenfalls nicht beachtet, mit ihrer Hilfe würde sich die
Zahl der unnötigen Bremsaktionen ebenfalls verringern und das Verhalten der
Fahrer besser vorhersagen lassen. Allerdings passieren viele Unfälle gerade weil die
Vorfahrtsregeln missachtet werden, so dass Voraussagen anhand der Vorfahrtsregeln bei einer Anwendung zur Kollisionsvermeidung nicht immer das gewünschte
Ergebnis liefern. Ebenso könnte es sein, dass das eigene Fahrzeug zwar Vorfahrt
hat, das andere aber einen Defekt und somit ein leicht zu vermeidender Unfall
durch die Berücksichtigung der Vorfahrtsregeln nicht verhindert wird. Während
von der Berücksichtigung des Straßenverlaufs also hauptsächlich Vorteile zu erwarten sind, können bei den Vorfahrtsregeln durchaus auch Probleme auftreten.
Ein weiterer Schwachpunkt ist auch, dass die Reaktion auf eine erkannte Gefahr
nicht immer dieselbe sein sollte. Vielmehr ist es besser, sie von weiteren Faktoren,
wie zum Beispiel den Wetterverhältnissen, abhängig zu machen. So ist die Sicht bei
starkem Nebel viel schlechter als bei klarem Wetter, was dazu führen kann, dass
der Fahrer Fahrzeuge leichter übersieht. Wenn das Wetter also bekannt ist, dann
kann der Fahrerassistent dem Fahrer besser assistieren, indem er ihn zum Beispiel bei Nebel schon früher auf mögliche Gefahrensituationen hinweist, in dieser
Implementierung also das Gefahrenlevel anhebt.
Ein Problem ganz anderer Art ist es, dass der Fahrerassistent bei einer zu hohen
Anzahl von Instanzen zu langsam wird. Hier könnte eventuell eine effizientere
Implementierung Abhilfe schaffen, oder eine intelligentere Datenbeschaffung. Ein
Filter, der bei einer zu hohen Anzahl von Fahrzeugen nur die mit dem geringsten
79
Abstand zum eigenen Fahrzeug an die Ontologie durchlässt, kann eine Überladung
der Ontologie verhindern. Ebenso könnten alle Daten, die nicht mehr aktuell sind,
regelmäßig gelöscht werden.
Als letzter Schwachpunkt sei noch die Tatsache genannt, dass die Berechnungen nur bei exakten und aktuellen Daten funktionieren. Ungenauigkeiten in der
Positionsbestimmung und veraltete Daten führen zu unbrauchbaren Ergebnissen.
3.6.3 Erweiterungsmöglichkeiten
Aus den im letzten Abschnitt aufgezählten Problemen und den denkbaren Lösungen ergeben sich allerlei mögliche Erweiterungen des Fahrerassistenten. Sowohl das
Kontextmodell als auch die Kollisionsberechnungen und das Ableiten eines Gefahrenlevels oder die Erzeugung sinnvoller Kontrollsignale können erweitert oder
verfeinert werden.
Die Erweiterung des Kontextmodells um Informationen zum Straßenverlauf und
die allgemeinen Umweltbedingungen wird im nächsten Kapitel beschrieben. Sie
erlauben es Situationen besser einzuschätzen und dadurch besser auf sie zu reagieren.
In diesem Abschnitt wird die Möglichkeit, die verwendete Fahrzeugontologie um
neue Arten von Verkehrsteilnehmern zu erweitern, untersucht. Des Weiteren wird
gezeigt, wie die Kollisionsberechnung an die neuen Verkehrsteilnehmer angepasst
werden kann.
Fahrzeuge mit Anhänger oder Gelenk
Ein erstes Problem tritt durch die Annahme, dass alle Fahrzeuge sich als ein einziges Rechteck darstellen lassen, auf. Dies ist nämlich bei Fahrzeugen mit Anhängern
oder Gelenkfahrzeugen, wie zum Beispiel manchen Bussen, nicht der Fall. Es macht
also Sinn, die Fahrzeugontologie so zu erweitern, dass sie auch solche Fahrzeuge
beschreiben kann.
Fahrzeuge mit Anhänger könnten einfach als das modelliert werden, was sie in
gewisser Weise auch sind, nämlich zwei einzelne Fahrzeuge. Eine Klasse Anhänger
wird als Unterklasse des Konzepts Fahrzeug eingeführt. Eine Relation, modelliert als ObjectProperty, kann die Verbindung zwischen den beiden herstellen.
Wenn der aktuelle Winkel zwischen beiden und der konstante Abstand ihrer Mittelpunkte zum Gelenk bekannt ist, dann lassen sich die aktuellen Informationen
über den Anhänger einfach aus den Daten des Fahrzeugs ableiten. Die Position
des Anhängers ergibt sich aus dem Winkel und dem Mittelpunktsabstand und
seine Richtung aus der Fahrzeugrichtung und dem Winkel. Geschwindigkeit und
Beschleunigung sind bei Fahrzeug und Anhänger konstant. Die eigentliche Kollisionsberechnung wird für beide getrennt durchgeführt. Hat das eigene Fahrzeug
einen Anhänger, dann müssen alle Berechnungen ebenso für den Anhänger gemacht werden.
Gelenkfahrzeuge lassen sich auf die gleiche Weise modellieren. Eine neue Klasse
80
Gelenkfahrzeug wird als Fahrzeug definiert, das immer einen Anhänger besitzt.
Alternativ kann der hintere Fahrzeugteil auch als eigene Fahrzeugklasse definiert
werden, um der Tatsache gerecht zu werden, dass zum Beispiel ein Bus sein hinteres
Fahrzeugteil nicht abhängen oder verlieren kann, was bei einem Anhänger aber
durchaus der Fall ist.
Die Erweiterung auf mehrere Anhänger oder Gelenke nach dem selben Prinzip
ist ebenso sehr leicht machbar, wird hier aber nicht weiter ausgeführt.
Fußgänger
Will man alle Verkehrsteilnehmer erfassen, darf man sich nicht auf die unterschiedlichsten Fahrzeugtypen beschränken. Es ist nötig das Modell auch um Fußgänger
zu erweitern.
Die Modellierung von Fußgängern als Unterklasse der Fahrzeuge verbietet sich
aus verschiedenen Gründen. Erstens haben Fußgänger keine Sender, können also
ihre Daten nicht so einfach an das Fahrzeug senden. Zweitens haben Fußgänger
auch gar keine Sensoren, mit denen sie ihre Geschwindigkeits- und Positionswerte
messen können. Drittens bedarf es im Umgang mit Fußgängern besonderer Vorsicht. Während ein leichter Unfall mit einem anderen Fahrzeug nur Sachschaden
verursacht, führt ein Zusammenstoß mit Fußgängern sehr schnell zu schweren Verletzungen. Und schließlich ist das Verhalten von Fußgängern anders als das von
Fahrzeugen. Sie sind einerseits langsamer, andererseits aber wesentlich unberechenbarer in ihren Bewegungen.
Da die Fußgänger ihre Daten nicht selber übertragen, müssen sie vom eigenen
Fahrzeug ermittelt werden. So ist es zum Beispiel möglich den Positionswert aus
Abstandsradar und Bildwerten zu berechnen. Ein Fußgänger hätte also wie ein
Fahrzeug eine Position. Wenn über die Zeit mehrere Positionen ermittelt werden,
dann kann man daraus auch Richtung und Geschwindigkeit ermitteln. Die Beschleunigung ist ebenfalls denkbar, aber nicht sehr sinnvoll, da Fußgänger, auch
wenn sie zum Laufen anfangen, nicht über einen längeren Zeitraum konstant beschleunigen.
Um die nötige Vorsicht im Umgang mit Fußgängern und ihr unvorhersehbares
Verhalten korrekt zu modellieren, könnte man Fußgänger als kreisförmige Objekte betrachten. Der Radius des Kreises ist ein Maß für den Grad der Unschärfe
in der Positions-, Richtungs- und Geschwindigkeitsbestimmung. Auch die eigene
Geschwindigkeit könnte man in gewissem Maße mit einfließen lassen, da es bei
höherer Geschwindigkeit zu schwereren Verletzungen bei einem Unfall kommen
kann.
Da Fußgänger sich aber nicht sehr schnell bewegen können5 , bietet es sich an
sie nicht als sich bewegende Objekte zu modellieren, sondern als ruhende Kreise.
Ergibt sich aus den alten Positionswerten eine hohe Geschwindigkiet, dann kann
5
Der Weltrekord im 100-Meter Lauf für Männer aus dem Jahr 2005 liegt bei 9,77 Sekunden. Dies
entspricht einer Durchschnittsgeschwindigkeit von 10, 23 m
. Somit ist ein Positionswechsel eines
s
Fußgängers von mehr als 5 Metern, wenn alle 500ms gemessen wird, sehr unwahrscheinlich.
81
entweder der Kreisradius erhöht, oder der Kreis zu einer Ellipse in Laufrichtung
verformt werden.
Falls Bilderkennung eingesetzt wird, wäre auch eine Unterscheidung verschiedener Fußgängertypen möglich. Da Kinder sich zum Beispiel im Straßenverkehr
oft sehr unachtsam verhalten, könnten sie mit einem größerem Sicherheitskreis
versehen werden als Erwachsene.
Die Klasse Fußgänger hat also auf jeden Fall eine Position. Wenn einzelne
Fußgänger unterscheidbar sind, dann kann man ihnen noch eine alte Position zuordnen und daraus Geschwindigkeit und Richtung ableiten. Aus diesen lässt sich
auch die zweite notwendige Eigenschaft berechnen, nämlich der Kreisradius oder
die Ellipsenhalbachsen. Alternativ ist es auch möglich diese mit einem konstanten Wert zu besetzen, falls keine Geschwindigkeitswerte zur Verfügung stehen. Die
Kollisionsberechnung erfolgt jetzt anstelle mit einem sich bewegenden Rechteck
mit einem ruhenden Kreis, erfordert also eine Anpassung des Verfahrens.
Fahrradfahrer
Schwieriger ist die Modellierung von Fahrradfahrern. Die hier beschriebenen Probleme gelten aber größtenteils auch für andere, relativ schnelle Verkehrsteilnehmer
wie zum Beispiel Rollerblader.
Fahrradfahrer sammeln und senden wie die Fußgänger keine Daten, Kollisionen
mit ihnen müssen aber ebenfalls auf jeden Fall vermieden werden. Ihr Bewegungsmuster ist dagegen nicht so chaotisch wie das der Fußgänger, ihre Geschwindigkeit
aber wesentlich größer. Die Modellierung als Fußgänger oder Fahrzeug ist somit
nicht besonders sinnvoll. Um eine sinnvolle Berechnung zu gewährleisten, genügt
es nicht sie als ruhende Kreise oder Ellipsen zu beschreiben. Andererseits sind
präzise Berechnungen wie bei Fahrzeugen nicht möglich, da nicht alle benötigten
Daten zur Verfügung stehen.
Dieses Dilemma kann eigentlich nur durch eine verbesserte Datenbeschaffung
gelöst werden. Positionsbestimmungen können mit denselben Techniken wie bei
Fußgängern vorgenommen werden, allerdings ist es wichtig, dass einzelne Fahrradfahrer voneinander unterschieden werden können. Dies könnte entweder durch
Bilderkennungsverfahren geschehen, die hier mehr Unterscheidungskriterien als bei
Fußgängern haben, oder durch in die Fahrräder eingebaute Sender, die als einzige
Information eine ID enthalten.
Sobald eine Unterscheidung, und somit eine Zuordnung alter Positionswerte
möglich ist, kann aus diesen die Geschwindigkeit und die Richtung des Fahrradfahrers bestimmt werden. Beschleunigungswerte machen wohl wenig Sinn, da sie
nicht sehr hoch sind und auch die Geschwindigkeit nur ein Näherungswert ist, die
Berechnungen also nicht sehr präzise sind.
Somit hat ein Fahrradfahrer eine ID, eine aktuelle und eine alte Position. Aus
diesen Werten werden weitere Eigenschaften abgeleitet, die Geschwindigkeit und
die Richtung. Ebenso hat der Fahrradfahrer eine Länge und eine Breite. Diese sind
so groß gewählt, dass die Sicherheit des Fahrradfahrers gewährleistet ist, trotz
82
relativ ungenauer Daten. Die Maße sind entweder konstant, oder abhängig von
seiner Geschwindigkeit oder auch der eigenen Fahrzeuggeschwindigkeit.
Die Berechnungen an sich erfolgen wie bei Fahrzeugen, da der Fahrradfahrer
mit diesen Informationen als sich bewegendes Rechteck dargestellt wird. Der Unterschied zu einem Fahrzeug besteht darin, dass er keine Beschleunigungswerte hat
und die Größe des Rechtecks hauptsächlich von Sicherheitsüberlegungen abhängt
und nicht von der wirklichen Größe des Fahrrads.
3.6.4 Zusammenfassung
Zusammenfassend lässt sich sagen, dass die Ergebnisse des Fahrerassistenten, auch
wenn die im Modell erfassten Daten nicht sehr umfangreich sind, zu brauchbaren Ergebnissen führen. Die gewählte Methode zur Kollisionsberechnung funktioniert am besten auf geraden Strecken und bei konstantem Fahrzeugverhalten, Kurven bereiten Probleme. Diese können durch die Berücksichtigung weiteren Kontexts verringert werden, die Lösungsvorschläge wurden aber nicht implementiert.
Die Implementierung einer Beschleunigungswarnung wurde dagegen verwirklicht
und verhindert in den meisten Fällen eine ansonsten häufig auftretende Fehleinschätzung des Fahrerassistenten.
Die Kollisionsvorhersagen können zügig berechnet werden, und auch die Zugriffe
auf das ontologische Modell erfolgen, wenn es nicht zu viele Fahrzeuginstanzen
enthält, in kurzer Zeit. Dies sind wichtige Voraussetzungen für den Einsatz dieser
Techniken, da alle Berechnungen in Echtzeit erfolgen müssen.
Die Möglichkeit zum Import anderer Ontologien und somit zur Nutzung externer Daten ist ein großer Vorteil der ontologischen Kontextmodellierung. Auch die
leichte Erweiterbarkeit um neue Konzepte spricht für den Einsatz einer Ontologie
als grundlegendes Modell zur Erfassung aller Verkehrsteilnehmer.
Die Mängel des Fahrerassistenten lassen sich vor allem auf fehlende Informationen über seine Umwelt und das Unvermögen, das Verhalten des Fahrers vorherzusehen, zurückführen. Zur Lösung dieser Probleme bietet es sich an weitere
Konzepte, die für einen Verkehrsteilnehmer wichtig sind, zu modellieren und in
die Kollisionsberechnungen mit einfließen zu lassen. Dies wird im nächsten Kapitel mit einem einfachen Modell der allgemeinen Umweltbedingungen und einem
Modell des Straßennetzes realisiert.
83
4 Zweite Variante des Assistenten
Die Ergebnisse, die sich mit dem Fahrerassistenten erzielen lassen, wenn nur Daten
über das eigene und andere Fahrzeuge vorliegen, sind in einigen Situationen sehr
gut, in anderen dagegen weniger hilfreich. In diesem Kapitel wird eine erweiterte
Version des Fahrerassistenten vorgestellt, die durch mehr Kontextinformationen
bessere Ergebnisse erzielen soll.
4.1 Beschreibung des Szenarios
In diesem Szenario stehen dem Fahrerassistenten sowohl die Fahrzeugdaten, als
auch weitere Sensordaten und Informationen zum Straßennetz zur Verfügung. Das
Kontextmodell wird also um zusätzliche Informationen erweitert. Dies soll mit
möglichst wenig Änderungen an der Fahrzeugontologie und der restlichen Implementierung, also der Architektur und vor allem der Kollisionsberechnung, geschehen. Für fast alle Sensordaten, um die das Kontextmodell erweitert wird, gibt
es schon die entsprechenden Sensoren in modernen Fahrzeugen. Auch der einzige
Sensor, der nicht unbedingt in jedem Fahrzeuge vorhanden ist, der Nebelsensor,
könnte jederzeit in ein Fahrzeug eingebaut werden. Die Daten zum Straßennetz,
die in diesem Szenario zum Einsatz kommen, können von externen, elektronischen
Straßenkarten, wie sie zum Beispiel für Navigationssysteme existieren, eingelesen
werden.
Somit bleibt der logische Aufbau derselbe, und auch die Implementierung der
einzelnen Komponenten wird nur leicht angepasst. Die wirkliche Neuerung sind
zwei neue Kontextmodelle, die dem Fahrerassistenten zur Verfügung stehen. Das
erste ist ein Modell zur Beschreibung der Wetter- und Sichtverhältnisse. Es erlaubt
es dem Fahrerassistenten auf unterschiedliche Umweltbedingungen angemessen zu
reagieren. Das zweite Modell beschreibt das Straßennetz. Ziel ist es herauszufinden,
ob zwei Fahrzeuge auf zusammenhängenden Straßenabschnitten fahren und eine
Kollision somit überhaupt möglich ist. Mit der Einführung neuer Ontologien wird
hier auch der Nachweis zur Machbarkeit von Ontologieimporten erbracht.
84
4.2 Unterschiede und Gemeinsamkeiten bei Ansprüchen an
Ontologie, Regeln und Architektur im Vergleich zum
ersten Szenario
Generell sind die Ansprüche an die Architektur bei beiden Szenarien nahezu identisch. Da beide eine Kollisionsberechnung zum Ziel haben und das zweite Szenario
hauptsächlich eine Erweiterung des ersten um zusätzliche Kontextinformationen
darstellt, muss die Architektur auch dieselben Ansprüche erfüllen.
Die Daten bezüglich der Fahrzeuge müssen stets aktuell und präzise sein, da
sonst die Kollisionsberechnung unzuverlässige Ergebnisse liefert. Zugriffe auf die
Fahrzeugontologie müssen schnell erfolgen können, eine Erweiterung um Informationen zum Straßennetz sollte die Fahrzeugontologie nicht wesentlich verlangsamen. Und natürlich muss die Kollisionsberechnung in Echtzeit erfolgen können.
Diese Forderungen wurden schon an die erste Version des Fahrerassistenten gestellt und gelten natürlich weiterhin.
Bei den neuen Ontologien gelten dagegen teilweise andere Voraussetzungen. Die
Daten beider Modelle müssen nicht so aktuell sein, wie die der Fahrzeuge. Grund
hierfür ist, dass sich der Straßenverlauf nur sehr langsam und selten ändert, und
auch die Umweltbedingungen nicht so plötzlichen, drastischen Änderungen unterworfen sind wie die Fahrzeugdaten. Der Umweltontologie stehen alle Daten als
Sensorwerte des eigenen Fahrzeugs zur Verfügung, so dass die vorliegenden Daten
immer aktuell sind, aber nicht in so hoher Frequenz an die Ontologie übergeben
werden müssen. Die Daten zur Straßenontologie dagegen müssen extern beschafft
werden. Eine regelmäßige Instanziierung mit neuen Werten ist, wenn man sich auf
die Eigenschaft des Zusammenhangs von Straßenabschnitten beschränkt, nur extrem selten notwendig. Hier ist es nur wichtig, dass Zugriffe schnell erfolgen können,
da jeder Zugriff auf ein Fahrzeug auch mit einem Zugriff auf die Straßenontologie
verbunden ist.
4.3 Die neuen Ontologien und die Erweiterung der
Fahrzeugontologie
In diesem Abschnitt werden die beiden neuen Kontextmodelle, also die Umweltontologie und die Straßenontologie, erläutert. Ebenso wird auf die notwendigen Änderungen an der Fahrzeugontologie eingegangen und die zu den Ontologien gehörenden Regelsätze.
4.3.1 Umweltontologie
Die Umweltontologie modelliert eine Auswahl der zur Verfügung stehenden Sensoren und daraus abzuleitende Bedingungen wie Sichtverhältnisse oder Glatteisgefahr. Die Ontologie ist in der separaten Datei umwelt.owl beschrieben, die sich
85
auf der beiliegenden CD befindet. Die Ableitungsregeln sind in der externen Datei
sensor.rules formalisiert.
Die Umweltontologie besteht aus zwei Hauptkonzepten, den Sensordaten und
den Bedingungen. Um die Übersichtlichkeit zu wahren, werden diese Konzepte
getrennt erläutert, auch wenn sie in derselben Datei formalisiert sind.
Die Sensordaten
Wie in Abbildung 4.1 dargestellt, werden im Modell vier Sensoren erfasst. Alle
vier leiten sich von der Klasse Sensor ab. Jeder der vier Sensoren hat genau
eine DatatypeProperty. Dies ist der Wert des Sensors, in allen vier Fällen eine
Gleitkommazahl.
Abbildung 4.1: Die Sensoren der Umweltontologie
Die vier Sensoren sind ein Nebelsensor, ein Helligkeitssensor, ein Niederschlagssensor und ein Temperatursensor. Diese liefern folgende Werte:
• Der NebelSensor gibt die Sichtweite in Meter an.
• Der HelligkeitsSensor misst die Leuchtdichte in Candela pro Quadratmeter. Bei Sonnenschein ergeben sich Werte von ungefähr 8000 mcd2 , in der Nacht
von 0, 001 mcd2 .
• Der NiederschlagsSensor zeigt die Stärke des Niederschlags an, wobei ein
Wert von Eins die maximale Niederschlagsmenge ist und ein Wert von Null
bedeutet, dass kein Niederschlag gemessen wird.
86
• Die Außentemperatur wird vom TemperaturSensor in Grad Celsius gemessen.
Die Einheiten der Sensordaten, wie Candela pro Quadratmeter oder Grad Celsius, sind in der Ontologie selbst nicht modelliert. Hier könnte man jedem Sensor
eine Property Einheit zuordnen, die die Einheit als String angibt. Besser wären
konkrete Datentypen, aber solche stehen in OWL nicht zur Verfügung.
Es existieren natürlich weitere Sensoren, die aber dem Modell leicht hinzugefügt
werden können. Beispiele hierfür wären ein Höhenmesser, die Innentemperatur,
oder das Gefälle der Straße. Wie schon bei der Fahrzeugontologie gilt aber auch bei
der Umweltontologie das Interesse mehr der prinzipiellen Funktionsweise und den
Möglichkeiten als der Vollständigkeit des Modells, die theoretisch weder erreichbar,
noch erwünscht ist (siehe Abschnitt 1.3).
Die vier gewählten Sensoren erlauben es Aussagen über Sichtverhältnisse und
Witterungsbedingungen zu treffen. Diese werden durch die Klasse Umwelt modelliert.
Die Umweltbedingungen
Mit Umweltbedingungen werden die aus den Sensordaten abgeleiteten Informationen über die Umwelt bezeichnet. Diese finden sich in Abbildung 4.2. Die Informationen werden als DatatypeProperty der Klasse Umwelt modelliert. Alle diese
Eigenschaften sind funktional, das heißt sie haben maximal eine Kardinalität von
Eins.
Die Eigenschaften lassen sich in drei Typen unterscheiden. Der erste Typ sind
Bedingungen, die entweder gelten oder nicht gelten:
• Mit der Property naesse wird angegeben, ob die Fahrbahn offensichtlich nass
ist, oder ob die Wahrscheinlichkeit dafür gering ist.
• Die Property glatteisgefahr ist wahr, wenn die Bildung von Glatteis möglich ist.
Der zweite Typ beschreibt die Sichtverhältnisse. Die Beschreibung erfolgt nicht
durch Zahlen, sondern abstrakt durch Worte. Die Wertemenge der Eigenschaften
ist auf jeweils vier Worte beschränkt.
• Die helligkeit wird in vier Stufen eingeteilt, hell, duester, halbdunkel
und dunkel
• Die nebeldichte ist entweder stark, normal oder gering. Ebenso besteht
die Möglichkeit, dass es keinen Nebel gibt.
• Die aus helligkeit und nebeldichte abgeleiteten sichtverhaeltnisse
können gut, unguenstig, schlecht oder kritisch sein.
87
Abbildung 4.2: Die abgeleiteten Werte der Umweltontologie
88
Die restlichen drei Eigenschaften der Klasse Umwelt werden im Fahrerassistenten
nicht direkt verwendet. Sie dienen den sensor.rules zur Bestimmung der Sichtverhältnisse aus den Sensorwerten. Die ersten zwei liefern Werte zwischen Null und
Eins, die dritte gegebenenfalls auch höhere.
• Die sicht_zahl ist das aus dem HelligkeitsSensor abgeleitete Helligkeitslevel. Ein Wert von Eins entspricht der maximalen Dunkelheit.
• Die nebel_zahl leitet sich aus dem NebelSensor ab. Je höher die Zahl, desto
höher die Nebeldichte.
• der Wert sichtplusnebel ergibt sich durch Addition der nebel_zahl und
der sicht_zahl. Ein Wert von Null entspricht guten sichtverhaeltnissen,
ein Wert von Eins kritischen.
Mit Hilfe der Umweltontologie können also die Sensoren und die aus ihnen abgeleiteten Umweltfaktoren modelliert werden. Die Umweltfaktoren kann der Fahrerassistent dann aus der Ontologie ablesen und die Reaktionen auf eine mögliche
Kollision an sie anpassen.
Es besteht keine Verbindung zwischen Umweltontologie und Fahrzeugontologie.
Letztere muss also nicht angepasst werden, damit der Fahrerassistent auf Informationen über die Umwelt zurückgreifen kann.
Regelsatz
Der genaue Zusammenhang zwischen Sensordaten und Umweltfaktoren wird in den
sensor.rules formalisiert. Die komplette Datei findet sich auf der beiliegenden
CD, hier werden nur Teile aus dem Regelsatz erläutert.
Die Umweltfaktoren glatteisgefahr und naesse können direkt aus den Sensordaten abgeleitet werden. Ihre Funktionsweise wird am Beispiel folgender Regel
erläutert:
# Glatteisgefahr
[rule1:
(?s kontext:temperatur_sensor ?t) le(?t,4)
(?u rdf:type kontext:Umwelt)
->
(?u kontext:glatteisgefahr ’true’^^bool:)
]
Die Voraussetzungen dieser Regel sind, dass es eine Property temperatur_sensor
gibt, deren Wert geringer als Vier ist, und eine Instanz vom Typ Umwelt. Ist dies
der Fall, dann erhält die Umwelt-Instanz die Eigenschaft glatteisgefahr, deren
Wahrheitswert true ist. Diese Regel besagt also, dass wenn die Temperatur weniger als 4◦ C beträgt, Glatteisgefahr besteht. Ebenso gibt es eine Regel, die bei
Temperaturen über 4◦ C die Glatteisgefahr mit false angibt. Die beiden Regeln
89
für naesse sind ähnlich aufgebaut, nur dass der überprüfte Sensor der Niederschlagssensor ist. Die Regeln für die sicht_zahl und die nebel_zahl benötigen
ebenfalls nur den Wert eines Sensors.
# Nebel als Zahl
[rule10:
(?s kontext:nebel_sensor ?x)
le(?x,150) greaterThan(?x,100)
(?u rdf:type kontext:Umwelt)
->
(?u kontext:nebel_zahl ’0.3’^^float:)
]
Die Voraussetzungen sind hier ähnlich zu denen der glatteisgefahr und der
naesse. Einziger Unterschied ist es, dass der Wert des Sensors in einem oben und
unten beschränkten Bereich liegen muss. Diese Regel legt also fest, dass bei einer
Sichtweite zwischen 100 und 150 Metern die nebel_zahl den Wert 0,3 hat. Für
jede der beiden Eigenschaften gibt es vier solcher Regeln, eine höhere Genauigkeit würde entsprechend mehr Regeln erfordern. Mit Hilfe der sicht_zahl und
der nebel_zahl kann nun auch der Wert der Eigenschaft sichtplusnebel mit
folgender Regel berechnet werden:
# Sicht plus Nebel
[rule21:
(?u kontext:sicht_zahl ?x) (?u kontext:nebel_zahl ?y)
(?u rdf:type kontext:Umwelt) sum(?x,?y,?z)
->
(?u kontext:sichtplusnebel ?z)
]
Diese Regel addiert die sicht_zahl mit der nebel_zahl, vorausgesetzt dass beide als Eigenschaft derselben Umwelt-Instanz existieren, und fügt den berechneten Wert als sichtplusnebel zur Umwelt-Instanz dazu. Wenn zum Beispiel die
Sichtbehinderung durch Nebel 30% beträgt (entspricht einem Wert von 0,3) und
mangelnde Helligkeit die Sicht um 40% behindert, dann berechnet diese Regel eine
Sichtbehinderung von 70%.
Man beachte, dass die Reihenfolge, in der die Regeln angewendet werden, nicht
festgelegt werden kann. Der Reasoner überprüft aber nach jeder erfolgreichen Regelanwendung den Regelsatz erneut, so dass die Addition erst dann erfolgt, wenn
sicht_zahl und nebel_zahl schon abgeleitet wurden.
Mit Hilfe der sicht_zahl, der nebel_zahl und von sichtplusnebel können
nun die letzten drei Eigenschaften der Umwelt bestimmt werden:
90
# Sichtverhaeltnisse, abstrakt
[rule25:
(?u kontext:sichtplusnebel ?z) greaterThan(?z,0.75)
(?u rdf:type kontext:Umwelt)
->
(?u kontext:sichtverhaeltnisse ’kritisch’^^string:)
]
Diese Regel legt fest, dass ein Wert von sichtplusnebel, der echt größer als 0,75
ist, mit kritischen Sichtverhältnissen gleichzusetzen ist. Für die Bereiche von
z ≤ 0.25, 0.25 < z ≤ 0.50 und 0.50 < z ≤ 0.75 existieren ähnliche Regeln.
Der Regelsatz leitet also Glatteisgefahr und die Möglichkeit einer nassen Fahrbahn direkt aus den Sensorwerten ab. Die Helligkeit und die Nebeldichte werden
über den Umweg einer Zahl festgelegt. Natürlich wäre es auch möglich sie direkt
zu bestimmen, aber für die Sichtverhältnisse ist der indirekte Weg über die Zahlen
wesentlich praktischer als ein Regelsatz, der alle möglichen Kombinationen von
Nebelwerten und Lichtstärken berücksichtigt.
Die Definition der Sichtverhältnisse ist mit diesen Werten natürlich nicht unbedingt sinnvoll, was aber auch nicht das Ziel der Arbeit ist. Vielmehr soll gezeigt
werden, wie es prinzipiell möglich ist, aus reinen Sensordaten abstraktere Informationen über die Umwelt zu erhalten.
4.3.2 Straßenontologie
Die Straßenontologie modelliert das Straßennetz. Nicht alle hier beschriebenen
Konzepte werden auch vom Fahrerassistenten, so wie er implementiert ist, genutzt. Neue Anwendungen, die auch Konzepte wie Verkehrsschilder oder Straßenzustand berücksichtigen, sind aber natürlich ebenso denkbar. Ein paar dieser
Einsatzmöglichkeiten werden in Kapitel 5 erläutert.
Die Straßenontologie enthält, im Vergleich zu den bisher beschriebenen Ontologien, relativ viele Konzepte, die durch Properties miteinander verbunden sind.
Das komplette Modell ist aus Gründen der Übersichtlichkeit auf die beiden Abbildungen 4.3 und 4.4 aufgespalten.
Das Straßennetz
Das Straßennetz wird als Graph modelliert. Die Kreuzungen sind die Knoten des
Graphen, die Straßen die Kanten. Eine Modellierung als Graph bietet den Vorteil,
dass viele Problemstellungen, die Graphen betreffen, Gegenstand der Forschung
waren oder sind und deshalb auch häufig effiziente Algorithmen zur Lösung derselben bekannt sind. Ein Beispiel für Probleme, die mit Hilfe der Graphentheorie
gelöst werden könnten, ist der kürzeste Weg zwischen zwei Knoten, der entweder für einen Routenplaner, der sich des Fahrzeugmodells bedient, interessant sein
könnte, oder auch für die Frage, wann zwei Fahrzeuge frühestens miteinander kollidieren können. Die Frage, ob es überhaupt zur Kollision kommen kann, könnte
91
Abbildung 4.3: Straßen und Kreuzungen
92
durch die Zerlegung des Straßengraphen in seine Zusammenhangskomponenten
und einen Test, in welcher sich die einzelnen Fahrzeuge überhaupt befinden, beantwortet werden. Mit Zusammenhangskomponenten werden die maximalen Teilgraphen bezeichnet, in denen alle Knoten über Kanten miteinander verbunden
sind. Die Modellierung des Straßennetzes als Graph, also als Netz von Knoten und
Verbindungen zwischen diesen, kommt auch dem menschlichen Verständnis recht
nahe, wie sich im Begriff Straßennetz zeigt.
Die einzelnen Konzepte dieses Teils der Straßenontologie, wie er in Abbildung
4.3 gezeigt wird, werden in folgender Aufzählung genauer beschrieben:
• Das Strassennetz enthält allen Knoten und Kanten des Graphen, also alle
Abschnitte. Diese erfolgt über die Property abschnitte. Eine Unterscheidung in eine Knoten- und Kantenmenge ist nicht nötig1 , kann aber bei Bedarf
leicht definiert werden.
• Die Abschnitte eines Straßennetzes, also die Kreuzungen und die Straßen,
werden durch vier Eigenschaften genauer gekennzeichnet. Ihre ganzzahlige
id dient der eindeutigen Identifikation. Ihr zustand kann entweder gut oder
schlecht sein. Der belag eines Abschnitts besteht entweder aus Schotter,
Beton oder Asphalt. Die transitive Property erreichbar kann im Gegensatz zu den anderen drei Properties auch auf mehrere Werte verweisen. Dies
sind weitere Abschnitte, mit denen eine direkte oder indirekte Verbindung
besteht.
• Die Klasse Kreuzung ist eine Unterklasse von Abschnitt und disjunkt mit
der Klasse Strasse. Die boolesche Property ampel gibt an, ob es eine solche
an der Kreuzung gibt. Die zufahrten sind die in die Kreuzung einmündenden
Strassen. Es gibt drei Arten von Kreuzungen. Die Unechte_Kreuzung verbindet genau zwei Strassen miteinander, ist also ein Hilfskonstrukt zur Zerlegung einer langen Strasse in mehrere Abschnitte, die zum Beispiel einen
unterschiedlichen Belag haben. Ein Endpunkt hat nur eine zufahrt und ist
ein Ergebnis der Festlegung, dass eine Strasse immer zwei Kreuzungen miteinander verbindet. Eine Echte_Kreuzung hingegen ist jede Kreuzung, die
mehr als drei zufahrten hat, also das, was man normalerweise als Kreuzung
oder Einfahrt bezeichnet.
• Die Klasse Strasse ist ebenfalls eine Unterklasse von Abschnitt. Ihre eigenen drei disjunkten Unterklassen sind Autobahn, Landstrasse und InStadt.
Jede Strasse ist über die Properties kreuzung_1 und kreuzung_2 mit den
beiden inzidenten Kreuzungen verbunden. Ob sie als Vorfahrtsstraße in die
jeweiligen Kreuzungen mündet, geben die beiden Properties vorfahrt_1 und
vorfahrt_2 an. Des Weiteren hat jede Strasse einen namen, eine zulässige
1
SPARQL-Anfragen der Form SELECT ?x WHERE (?x rdf:type Kreuzung . ?z abschnitte ?x) liefern
zum Beispiel das gewünschte Ergebnis
93
hoechstgeschwindigkeit und eine laenge, ebenso wie kurven und mindestens eine spur.
Erweiterungen für Straßen
Wie bei der Beschreibung der Klasse Strasse durch die Properties kurven und
spuren schon angedeutet, existieren noch weitere Konzepte zur Modellierung des
Straßennetzes, die eine genauere Beschreibung der einzelnen Straßen ermöglichen.
Es folgt eine Aufzählung dieser Konzepte, die in Abbildung 4.4 gezeigt werden:
• Eine Strasse hat mindestens eine Spur. Spuren haben wie Strassen eine id. Die Klasse Spur ist disjunkt mit der Klasse Abschnitt und Kurve.
Bei der erlaubten Fahrtrichtung der Spur sind drei Fälle möglich. Entweder ist sie in Beide Richtungen befahrbar, oder nur von Fahrzeugen die von
kreuzung_1 der dazugehörigen Strasse kommen (Von1), beziehungsweise
von kreuzung_2 (Von2). Die in einer Spur gültigen Verkehrsschilder werden über die Property schilder erfasst.
• Die Klasse Kurve beschreibt die in einer Strasse vorhandenen Kurven. Sie
ist disjunkt mit den Klassen Abschnitt und Spur. Es gibt drei Arten von
Kurven. Eine Einfache_Kurve ist nur in eine Richtung gekrümmt. Eine
S_Kurve dagegen besteht aus einer Krümmung in die eine und einer darauf
folgenden Krümmung in die entgegengesetzte Richtung. Der dritte Kurventyp
ist eine Serpentine, die eine Kurve mit einer Krümmung von nahezu 180◦
beschreibt. Des Weiteren werden Kurven durch drei Eigenschaften charakterisiert. Die erste ist ihre position. Diese ist durch Messung des Abstands
des Kurvenbeginns von kreuzung_1 in Metern gegeben. Die zweite Property
ist die laenge der Kurve, die dritte ihre kruemmung, gemessen in Grad.
• Die Funktionen von Verkehrsschildern werden hier nicht modelliert, die unterschiedlichen Schilder müssten als separate Unterklassen definiert werden.
Die beiden Properties position und laenge legen den Geltungsbereich eines
Verkehrsschilds fest. Wie bei einer Kurve ist die position der Beginn des
Geltungsbereichs, der sich über die gegebene laenge erstreckt.
Das hier erläuterte Modell des Straßennetzes bietet alle nötigen Konzepte, um das
von VIS SIM generierte Straßennetz zu beschreiben. Andere Konzepte kommen
in VIS SIM gar nicht vor, wie zum Beispiel der Zustand einer Straße oder der
Straßenbelag.
Der Fahrerassistent verwendet die Straßenontologie nur um herauszufinden, ob
zwei Fahrzeuge sich auf Straßenabschnitten befinden, die direkt oder indirekt miteinander verbunden sind. Für ihn ist also nur die Property erreichbar von Interesse. Das Modell wurde aber detaillierter ausgestaltet, um zeigen zu können,
welche zusätzlichen Anwendungsmöglichkeiten sich für eine Straßenontologie ergeben (siehe Kapitel 5).
94
Abbildung 4.4: Spuren, Kurven und Verkehrsschilder
95
4.3.3 Erweiterung der Fahrzeugontologie
Um die Verbindung zwischen Fahrzeugen und Straßen herzustellen, wird die Fahrzeugontologie erweitert. Die einzige notwendige Erweiterung besteht darin, dass
jedes Fahrzeug einen strassen_Abschnitt zugeordnet bekommt. Dies ist der
Abschnitt des Straßennetzes, auf dem es sich gerade befindet. Hierzu muss die
Straßenontologie in die Fahrzeugontologie importiert werden. Anders als bei der
Umweltontologie sind die beiden Modelle also nicht voneinander getrennt, die Fahrzeugontologie bedient sich des Modells des Straßennetzes um die Position des Fahrzeuges in selbigem zu beschreiben.
Die korrekte Instanziierung der Fahrzeuge setzt somit voraus, dass aus der absoluten Position des Fahrzeuges der dazugehörige Straßenabschnitt bestimmt werden
kann. In VIS SIM sind den Fahrzeugen ihre Straßenabschnitte bekannt, bei einem
Einsatz in einem richtigen Fahrzeug wäre es ebenfalls möglich diese Informationen
zu berechnen, wenn genügend Daten über das Straßennetz vorliegen.
Der externe Regelsatz der Fahrzeugontologie wird ebenfalls um eine Regel erweitert. Die verwendeten Jena-Reasoner scheinen die transitive Hülle der Property
erreichbar nicht abzuleiten, weshalb immer nur direkt verbundene Kreuzungen
und Straßenabschnitte als erreichbar betrachtet werden. Es wird also eine neue
Regel eingeführt, die das Problem behebt und den Reasoner die transitive Hülle
ableiten lässt:
# Erreichbarkeit
[rule0:
(?a street:erreichbar ?b) (?b street:erreichbar ?c)
->
(?a street:erreichbar ?c)
]
Problematisch an diesem Ansatz ist, dass diese Regel bei jeder Instanziierung der
Fahrzeuge erneut zum Einsatz kommt und die Simulation zumindest bei einer
größeren Anzahl von Straßenabschnitten erheblich verlangsamt. Dies ist aber nur
ein Problem der Implementierung, nicht des Straßenmodells oder der veränderten
Fahrzeugontologie, wie sich bei Testläufen ohne diese Regel zeigt.
4.4 Änderungen an der restlichen Implementierung
Die Erweiterung des Fahrerassistenten um Umwelt- und Straßenontologie erfordert
ein paar Anpassungen in der Implementierung. Beide Ontologien benötigen Daten,
mit denen sie instanziiert werden können. Die Sensordaten für die Umweltontologie
werden einfach in OntoCar von der Methode produceSensorData() auf konstante
Werte gesetzt, da der Simulator diese nicht erzeugen kann. Das Straßennetz wird
dagegen zu Beginn einmal vom OntoCar direkt aus dem Simulator ausgelesen und
96
in eine eigene Struktur übersetzt, die neue Klasse StreetNet. Diese enthält Daten
zu Kreuzungen, Straßen und Spuren, beschränkt sich aber auf Informationen über
Identität und Struktur, also welche Straße mit welcher Kreuzung verbunden ist,
beziehungsweise welche Spur zu welcher Straße gehört. Diese Informationen sind
für die erweiterte Funktionsweise des Fahrerassistenten ausreichend. Der OntoCar
übergibt das StreetNet an InputOutput, von wo es dann der OntoAssistant
ausliest. Dieser überreicht die Daten schließlich an die ExtOntology, die damit die
erweiterte Fahrzeug- beziehungsweise Straßenontologie instanziiert.
Zur Informationsbeschaffung werden die benötigten Informationen zu Straßenund Sichtverhältnissen aus der Umweltontologie ausgelesen. Da es sich nur um
einfache Sensorwerte handelt, zwischen denen keinerlei Zusammenhang besteht,
werden für die Anfrage in Inquiry einfache Jena-Methoden verwendet und kein
SPARQL-Query. Die Anfrage an die Fahrzeugontologie hingegen ist komplexer und
wird deshalb mit einem SPARQL-Query formuliert.
SELECT ?x
WHERE
{
?x rdf:type kontext:Andere_Fahrzeuge .
?y rdf:type kontext:Eigenes_Fahrzeug .
?x kontext:strassen_Abschnitt ?a .
?y kontext:strassen_Abschnitt ?b .
?a street:erreichbar ?b
}
Diese Anfrage liefert alle Anderen_Fahrzeuge, die sich auf einem Straßenabschnitt
befinden, der vom Abschnitt des Eigenen_Fahrzeugs aus erreichbar ist. Die Anfrage macht für das in VIS SIM simulierte kleine Straßennetz Sinn, um die Anzahl der
möglichen Kollisionspartner einzuschränken, bei einem größeren Straßennetz aber
wären Anfragen, die zusätzlich auch die Distanz zwischen Fahrzeugen oder Straßenabschnitten berücksichtigen, sinnvoller. Hierzu könnte man zum Beispiel die
Properties distance und value, die den Abstand zweier Fahrzeuge berechnen, für
die Fahrzeugontologie definieren und den obigen Query um folgende Ausdrücke für
die WHERE-Klausel erweitern. Die etwas umständliche Beschreibung des Abstandes
?d der beiden Fahrzeuge ?x und ?y ist bedingt durch die Tripelstruktur von RDF.
?x distance ?z .
?y distance ?z .
?z value ?d .
FILTER (?d <= 200)
Diese Erweiterung würde die Rückgabe auf die Anderen_Fahrzeuge beschränken,
die einen Abstand von weniger als 200 Meter zum Eigenen_Fahrzeug haben.
97
Die eigentlichen Kollisionsberechnungen müssen nicht verändert werden, da die
verbesserte Auswahl der Fahrzeuge durch den Query erfolgt. Um auf die gewonnenen Informationen zur Umwelt reagieren zu können, wird in der Klasse Car eine
Anpassung des Gefahrenlevels vorgenommen. Je schlechter die Bedingungen, desto
früher erfolgen Warnungen und Notbremsungen.
4.5 Ergebnisse
Zuerst lässt sich feststellen, dass die Geschwindigkeit des Fahrerassistenten durch
die Einführung der Umweltontologie nicht merklich beeinflusst wird. Wie in Abbildung 4.5 zu sehen ist, verlangsamt die Straßenontologie dagegen den Fahrerassistenten merklich, wobei die eigentlich unnötige Erreichbarkeitsregel hier bei weitem
den größten Einfluss hat. Die in 4.5 dargestellte Simulation verwendet ein Straßennetz, das aus 33 Straßenabschnitten besteht, die alle miteinander verbunden sind.
Führt man einen Test mit einem ähnlich großen Straßennetz durch, bei dem aber
keine Verbindungen zwischen den Straßen bestehen, und somit die Erreichbarkeitsregel nie zum Einsatz kommt, ist die mit dem Straßennetz erweiterte Version des
Fahrerassistenten sogar schneller (siehe Abbildung 5.1).
t[s]
50
rs rs
40
mit Straßennetz
rs
rs
rs
t
u
rs
ohne Sraßennetz
t
u
rs rs
30
rs
20
rs
10
sr rs
rs
rs
rs
t
tu
u
tu
t u
tu
tu
0
0
10
rs
rs
t
u
t
t u
u
20
30
t
u
t
u
40
t
u
t
t u
u
50
t
u
60
t
u
t
u
70
t
t u
t u
u
80
t
u
t
u
t
u
90
t
tu
u
t
u
t
u
100
n
Abbildung 4.5: Vergleich der Geschwindigkeit mit und ohne Straßennetz
Wie aus 4.5 ersichtlich, steigt der Rechenaufwand auch für die mit dem Straßennetz erweiterte Variante des Fahrerassistenten linear zur Anzahl der Fahrzeuge
im hier getesteten Bereich. Die Komplexität beträgt also O(n). Aussagen über
den Einfluss der Anzahl der Straßenabschnitte sind schwieriger zu treffen, da es
hier stark auf die Anzahl der Verbindungen zwischen den Abschnitten ankommt
(Erreichbarkeitsregel). Außerdem kommen ständig neue Fahrzeuge zur Simulation
98
hinzu, die erst einmal die aufwändige Initialisierung vornehmen müssen und somit
die Messwerte verfälschen. Wird die Erreichbarkeitsregel aber nur einmal bei der
Initialisierung angewendet, werden bei jedem Straßenabschnitt in der Ontologie
alle erreichbaren Straßenabschnitte direkt abgespeichert. Somit ist die Anfrage an
“alle Fahrzeuge auf einem erreichbaren Abschnitt” höchstens linear von der Anzahl
m der Straßenabschnitte abhängig, da maximal m Abschnitte überprüft werden
müssen. Also ist in diesem Falle auch die Laufzeit des Assistenten linear im Bezug
auf den Umfang des Straßennetzes, die Komplexität beträgt O(m).
Die Initialisierung des Straßennetzes, die ebenfalls zur Verlangsamung beiträgt,
erfolgt nur einmal pro Fahrzeug. Es zeigt sich also, dass Ableitungen mit externen
Regeln oder sonstige rechenintensive Operationen auf der Ontologie, bei einem
etwas umfangreicheren Straßennetz möglichst selten durchgeführt werden sollten,
weil sie die Geschwindigkeit des Fahrerassistenten reduzieren können. Da aber
Änderungen im Straßennetz an sich nur selten auftreten, ist dies prinzipiell auch
möglich.
Mit Hilfe der Umweltontologie können aus einfachen Sensordaten Informationen
über die allgemeinen Umweltfaktoren abgeleitet werden. Diese können der Kontrolleinheit zur Verfügung gestellt werden, um die Reaktion auf eine Gefahrensituation an diese Faktoren anzupassen. Hier wird nur eine Erhöhung des Gefahrenlevels implementiert, es wäre aber zum Beispiel auch ein anderes Bremsverhalten
bei Glatteis oder Nässe, Einschalten der Nebelscheinwerfer oder eine Warnung bei
Glatteis und Fahren mit Sommerreifen denkbar.
Eine unabhängige Umweltontologie ermöglicht es unter anderem auch, die Häufigkeit der Instanziierung von Umwelt- und Fahrzeugontologie anzupassen, beziehungsweise die Häufigkeit, mit der der Reasoner den externen Regelsatz anwendet.
Dies ist bei der Straßenontologie nicht möglich, was bei dieser Implementierung
zu unnötigem zusätzlichen Rechenaufwand durch die ständige Anwendung der Erreichbarkeitsregel führt. Die Integration von Umwelt- und Straßenontologie bereitet keine Probleme, vor allem der Import der Straßenontologie zeigt, wie leicht ein
bereits vorhandenes Modell um völlig neue Konzepte erweitert werden kann.
Die zusätzliche Information, ob sich Fahrzeuge auf miteinander verbundenen
Straßenabschnitten befinden, erlaubt eine verbesserte Kollisionsprognose. Es ist
sozusagen möglich, das Fahrzeugverhalten in gewisser Weise vorauszusagen, da
man weiß, dass Fahrzeuge nur auf Straßenabschnitte gelangen können, die von
ihrer Position aus erreichbar sind. Also können sich auch nur Fahrzeuge, die sich
auf zusammenhängenden Abschnitten befinden, treffen. Somit ist es möglich die
Fahrzeugauswahl einzuschränken und unmögliche Unfälle auszuschließen. Je nach
Struktur des Straßennetzes wird die Fehlerquote mehr oder weniger stark verringert.
Ein Vorteil dieser Auswahlbeschränkung ist es auch, dass sie nur unmögliche
Unfälle ausschließt, aber keine potentiellen Kollisionspartner aus der Auswahl entfernt. Die Wahrscheinlichkeit, dass ein Unfall übersehen wird, steigt also nicht an,
99
dagegen sinkt die Wahrscheinlichkeit, dass ein harmloses Fahrzeug als gefährlich
angesehen wird. Dies setzt natürlich voraus, dass die Informationen über das Straßennetz korrekt und vollständig sind. Ist dies der Fall, dann führt die Erweiterung
des Kontexts um das Straßennetz bei dieser Anwendung nur zu besseren Ergebnissen, eine Verschlechterung ist nicht möglich. Allerdings kann die Erhöhung der
Rechenzeit bei größeren Straßennetzen kritische Ausmaße annehmen.
100
5 Vergleich und Schlussfolgerungen
In diesem Kapitel werden zuerst die beiden Versionen des Fahrerassistenten, wie
sie in Kapitel 3 und 4 beschrieben werden, miteinander verglichen. Dann wird
untersucht, inwieweit sich die entwickelten Ontologien und der Fahrerassistent für
weitere Anwendungen im Bereich der Kollisionsvermeidung erweitern lassen, und
welche Verallgemeinerungen der Ontologie denkbar sind. Zum Schluss wird noch
auf die Anpassungsfähigkeit der Ontologien und ihre Grenzen eingegangen.
5.1 Vergleich der beiden Szenarien
Die beiden Versionen des Fahrerassistenten werden anhand von drei unterschiedlichen Kriterien verglichen. Dies sind die erstens die Anforderungen, die sie an die
Datenbeschaffung stellen, zweitens die Geschwindigkeit, mit der die notwendigen
Operationen durchgeführt werden können und drittens die Qualität der erzielten
Ergebnisse.
Anforderungen
Im ersten Szenario beschränkt sich der Datensatz auf die Fahrzeugdaten. Jedes
Fahrzeug muss in der Lage sein seine Position, Richtung, Geschwindigkeit und
Beschleunigung eindeutig zu bestimmen. Außerdem benötigen die Fahrzeuge Sender und Empfänger, mit denen sie diese Daten an andere Fahrzeuge, die sich in
der Reichweite ihrer Sender befinden, verschicken. Dies muss regelmäßig und sehr
häufig passieren, da aktuelle, präzise Daten die Voraussetzung für eine korrekte Kollisionsvorhersage sind. Außerdem sollte noch der Fahrzeugtyp bekannt sein
und den anderen Fahrzeugen ebenfalls mitgeteilt werden. Ist dies nicht der Fall,
dann kann auch mit vordefinierten Standardfahrzeugen gearbeitet werden, was
aber natürlich zu schlechteren Ergebnissen führt, da die richtigen Maße und Fahrzeugdaten, wie die maximale Beschleunigung, der Fahrzeuge nicht bekannt sind.
Das zweite Szenario baut auf dem ersten auf. Deshalb benötigt es auch alle Daten, die im ersten Voraussetzung für ein Funktionieren des Fahrerassistenten sind.
Somit sind die Anforderungen an die Datenbeschaffung mindestens so hoch wie
bei der ersten Version des Fahrerassistenten. Da sich die Erfassung des Kontextes
nicht mehr nur auf die Fahrzeugdaten beschränkt, sind weitere Informationsquellen nötig. Die Umweltontologie setzt das Vorhandensein mehrerer Sensoren im
Fahrzeug voraus. Dies sind ein Regensensor, ein Helligkeitssensor, ein Nebelsensor und ein Temperatursensor. Bis auf den Nebelsensor sind diese Sensoren in
den meisten Fahrzeugen vorhanden, eine Erweiterung um Kontextinformationen
101
bezüglich dieser Umweltdaten ist also unproblematisch und stellt keine hohen Anforderungen an die Technik des Fahrzeugs. Die Straßenontologie dagegen benötigt
zusätzliche externe Informationsquellen. Um sie sinnvoll einsetzten zu können,
muss eine exakte Karte des Straßennetzes in einem Format vorliegen, das zur
Instanziierung des Straßenmodells genügend Informationen enthält. Ebenso wird
ein Übersetzungsprogramm benötigt, das aus schon vorhandenen, elektronischen
Karten das Straßenmodell instanziiert. Elektronische Straßenkarten existieren bereits für die unterschiedlichsten Routenplaner und Navigationssysteme, es wäre
also denkbar diese als Informationsquelle zu nutzen. Des Weiteren muss es möglich
sein, aus der Position des Fahrzeugs den dazugehörigen Straßenabschnitt zu bestimmen. Diese Zuordnung muss sehr schnell erfolgen, da sie bei jeder Änderung
der Positionsdaten nötig ist. Das Einlesen der Straßenkarte dagegen kann auch
länger dauern, da es nur einmal zu Beginn der Fahrt erfolgt. Es ist zu beachten,
dass das Straßenmodell vollständig bezüglich der Straßenabschnitte und ihrer Verbindungen sein muss, da es sonst passieren kann, dass Gefahrensituationen nicht
als solche erkannt werden.
Ein Vergleich bezüglich der Anforderungen der beiden Versionen an die Datenbeschaffung ergibt also, dass die erweiterte Version sowohl alle Daten der ersten Version benötigt, als auch die Existenz zusätzlicher Informationsquellen voraussetzt. Dies sind Sensordaten des eigenen Fahrzeugs und externe elektronische
Straßenkarten. Im Simulator VIS SIM ist nur letzteres vorhanden, in der Realität
existiert schon eine Vielzahl von Sensoren in den Fahrzeugen, die die benötigten
Daten zur Verfügung stellen. Straßenkarten gibt es ebenfalls, hier wird nur ein
Parser benötigt, der die gewünschten Daten aus der Karte ausliest. Ein Problem
könnte sich durch die Forderung nach Vollständigkeit ergeben. Wenn die Karte des
Straßennetzes nicht vollständig ist, dann kann es sein, dass Kollisionen übersehen
werden, da sie vom Assistenten als unmöglich angesehen werden, weil ihm die
entscheidende Straßenverbindung nicht bekannt ist. Ansonsten stehen die für die
zweite Version zusätzlich benötigten Daten theoretisch alle zur Verfügung
Sind die Anforderungen der ersten Version, also genaue Positionsbestimmung
und Ausstattung aller Fahrzeuge mit Sendern und Empfängern zur Datenübertragung, erfüllt, dann steht einer Erweiterung mit zusätzlichen Kontextinformationen zu Straßennetz und Umweltfaktoren nichts im Weg.
Geschwindigkeit
Das zweite Vergleichskriterium ist die Geschwindigkeit. Bei der einfachen Version
des Fahrerassistenten ist sie hauptsächlich von der Anzahl der Fahrzeuge abhängig.
Bei einer geringen Anzahl von Fahrzeugen läuft die Simulation problemlos, steigt
die Zahl der Verkehrsteilnehmer aber an, dann verlangsamt sich die Simulation
merklich. Dies kann zwei Ursachen haben. Erstens wird die Verwaltung der Ontologie aufwendiger, wenn eine große Anzahl von Instanzen in ihr gespeichert wird.
Zweitens nimmt natürlich auch der Rechenaufwand bei einer steigenden Zahl von
zu simulierenden Fahrzeugen im Quadrat zur Anzahl zu, da erstens die Berechnun-
102
gen pro Fahrzeug steigen und zweitens diese Berechnungen auch für jedes Fahrzeug
einzeln durchgeführt werden. Das erste Problem kann durch eine Beschränkung
der Instanzenzahl durch Filter und eine effiziente Implementierung der Ontologieverwaltung angegangen werden (siehe Abschnitt 3.6.1). Das zweite Problem, die
quadratische Zunahme des Rechenaufwandes, ist nur in der Simulation gegeben,
da hier ein Rechner die Aufgabe aller Rechner in den Fahrzeugen übernimmt.
Der Rechenaufwand pro Fahrzeug steigt für einen einzelnen Fahrerassistenten nur
linear an, da für das eigene Fahrzeug die Kollisionsgefahr mit jedem anderen Verkehrsteilnehmer berechnet wird.
Die erweiterte Version des Fahrerassistenten benötigt für die eigentliche Kollisionsberechnung pro Fahrzeug zwar die gleiche Zeit, dafür muss sie die Berechnungen
für weniger Fahrzeuge durchführen, wenn das Straßennetz aus verschiedenen Zusammenhangskomponenten besteht. Andererseits ist aber die Anfrage an die Fahrzeugontologie komplexer. Inwieweit dies die Geschwindigkeit des Fahrerassistenten
beeinflusst, hängt von der genauen Formulierung der Anfrage und der Implementierung der Programmierschnittstelle ab. Das Einlesen und die Instanziierung des
Straßennetzes hingegen verlangsamt den Fahrerassistenten merklich. In der Simulation macht es sich zwar nur kurz bemerkbar, hier liegt aber auch nur ein sehr
kleines Straßennetz vor. Insgesamt ergeben Tests mit beiden Versionen, dass die
erweiterte Version durch das Straßennetz merklich abgebremst wird. Je größer das
Netz, desto langsamer die Simulation. Dies liegt unter anderem auch an der eigentlich überflüssigen Erreichbarkeitsregel, die bei jedem Aufruf des Fahrerassistenten
die Erreichbarkeit für das komplette Straßennetz ableitet.
Eine wesentliche Geschwindigkeitsreduktion durch die Umweltontologie kann
nicht festgestellt werden. Dafür ist sie zu einfach gehalten und vor allem ist ihre
Instanzmenge sehr klein.
Somit lässt sich also feststellen, dass die erweiterte Version des Fahrerassistenten
tendenziell langsamer ist als die einfache. Dies liegt vor allem an der Straßenontologie, die Umweltontologie hat nur einen sehr geringen Einfluss auf die Geschwindigkeit. Je komplexer das Straßennetz, desto langsamer wird auch der Fahrerassistent.
Der einzige Fall, in dem das System mit Straßennetz schneller sein könnte als das
ohne, wäre, wenn es eine sehr große Anzahl von Fahrzeugen gibt, diese sich auf sehr
viele Zusammenhangskomponenten verteilen und somit bei einer Berücksichtigung
des Straßennetztes wesentlich weniger Kollisionsberechnungen durchzuführen sind.
Das Diagramm 5.1 zeigt einen Vergleich der beiden Varianten des Fahrerassistenten und des Simulators ohne den Assistenten. Wie zu erkennen ist, ist der
mit dem Straßennetz erweiterte Fahrerassistent einen Bruchteil schneller als die
einfache Variante des Assistenten. Das größte verwendete Straßennetz besteht aus
41 nicht verbundenen, parallelen Straßenabschnitten. Die Unterschiede in den Geschwindigkeiten, die sich bei einem Vergleich mit Diagramm 3.7 zeigen, nämlich
dass hier die Zeiten wesentlich niedriger sind, sind darauf zurückzuführen, dass es
bei diesen Straßennetzen zu keinerlei Bremsmanövern kommt und alle Fahrzeuge
103
sich mit konstanter, relativ hoher Geschwindigkeit bewegen. Der Fahrerassistent
führt also keine Berechnungen für zusätzliche Beschleunigungswarnungen durch.
Des Weiteren sind die Bahngeraden der Fahrzeuge lineare Gleichungen vom Typ
~s(t) = ~x + t · ~v , da die Beschleunigungskomponente wegfällt. Somit liefert die
Fourier-Motzkin-Elimination weniger Ungleichungen, die zudem alle linear und
nicht quadratisch sind. Damit ist auch der Fahrerassistent in 5.1 schneller als in
3.7 oder 4.5.
t[s]
5
t
pqu
ohne Straßennetz
4
u
t
qp
3
2
t
pqu
1
rs
mit Straßennetz
ohne Assistent
rs
rs
0
30
40
50
60
n
Abbildung 5.1: Vergleich der Simulationszeiten
Die Erweiterung des Modells um das Straßennetz bedarf also sorgfältiger Überlegungen, wie groß der jeweils instanziierte Abschnitt des Straßennetzes sein sollte.
Je größer, desto langsamer sind die Zugriffe auf die Ontologie, dafür muss das
Straßennetz seltener instanziiert werden. Vor allem aber sollte der Reasoner so
selten wie möglich auf das Straßennetz angesetzt werden, da dies zu erheblichen
Geschwindigkeitseinbußen führen kann, wie sich bei der Erreichbarkeitsregel zeigt
(siehe Abbildung 4.5).
Qualität
Zum Schluss soll noch die Qualität der Ergebnisse beider Versionen verglichen werden. Die erste Version liefert die besten Ergebnisse, wenn sich die Fahrzeugdaten
kaum ändern und vor allem wenn die Fahrbahnen gerade verlaufen und keine Kurven haben. Die Beschleunigungswarnung führt zu verbesserten Ergebnissen, wenn
es sich um stehende Fahrzeuge oder Fahrzeuge mit einer sehr geringen Geschwindigkeit handelt. Hier ist es möglich das Fahrerverhalten vorauszusagen, wodurch
die Änderung der Fahrzeugparameter abgeschätzt werden kann. Ansonsten stehen
mit den reinen Fahrzeugdaten nicht genügend Informationen zur Verfügung um
Voraussagen zum Fahrerverhalten zu treffen und so zum Beispiel mögliche Wege
104
eines Fahrzeugs zu bestimmen. Auch kann die Reaktion des Fahrerassistenten nicht
an die Umweltbedingungen angepasst werden, was zum Beispiel zu gefährlichen
Bremsmanövern bei Glatteis führen kann. Trotzdem liefert der Fahrerassistent vor
allem bei geradem Streckenverlauf brauchbare Ergebnisse und ermöglicht eine erhebliche Reduktion der Anzahl von Unfällen.
Die zweite Version des Fahrerassistenten soll ein paar dieser Mängel durch zusätzliche Kontextinformationen beheben, was auch gelingt. Die Einführung der
Umweltontologie erlaubt es je nach Situation unterschiedlich auf die erkannte Gefahr zu reagieren. So kann zum Beispiel je nach Sichtverhältnissen eine Warnung
früher oder später erfolgen, oder bei Glatteis das Bremsverhalten des Fahrzeugs angepasst werden. Die genaue Reaktion wird hier nicht implementiert, da der Simulator keine diesbezüglichen Tests ermöglicht. Die nötigen Informationen werden aber
zumindest teilweise bereitgestellt. Eine Erweiterung um zusätzliche gewünschte
Sensordaten und daraus abgeleitete Umweltfaktoren ist leicht durchführbar. Die
Straßenontologie bietet zahlreiche interessante Informationen zum Kontext eines
Fahrzeuges, hier wird aber nur eine genutzt. Weitere Möglichkeiten zum Einsatz
der Straßenontologie zur Kollisionsvermeidung werden im nächsten Abschnitt beschrieben. Die hier berücksichtigte Tatsache der Erreichbarkeit erlaubt es das Fahrerverhalten sehr grob abzuschätzen. Ein Fahrer kann sein Fahrzeug nämlich nur
auf einen Straßenabschnitt steuern, den er von seiner Position aus auch erreichen
kann. Diese Information erlaubt es die Anzahl der potentiellen Kollisionspartner zu
reduzieren. Das erzielte Ergebnis kann also, immer vorausgesetzt die Informationen
zum Straßenverlauf sind korrekt und vollständig, nicht schlechter sein als das mit
der ersten Version des Fahrerassistenten erzielten. Es ist zwar nicht möglich potentielle Kollisionen zu erkennen, die vorher übersehen wurden, aber dafür sinkt die
Anzahl der Fehlalarme. Da eine fälschlicherweise durchgeführte Notbremsung auch
eine Gefährdung der anderen Verkehrsteilnehmer darstellt, ist dies eine wichtige
Verbesserung für die Qualität der erzielten Ergebnisse.
Ein Vergleich der beiden Versionen zeigt also, dass die in der zweiten Version
vorgenommenen Erweiterungen auch die Qualität der Ergebnisse verbessern. Mit
Hilfe von zusätzlichen Kontextinformationen ist es also möglich Situationen besser
einzuschätzen und somit sowohl besser auf die einzelne Situation zu reagieren, als
auch die Fehlerquote des Fahrerassistenten zu verringern.
Zusammenfassung
Vergleicht man die beiden Versionen des Fahrerassistenten bezüglich Anforderungen, Geschwindigkeit und Qualität, stellt man fest, dass beide Vorteile und
Nachteile haben. Die einfachere Version stellt geringere Anforderungen an die Beschaffung von Daten und erweist sich auch als schneller. Die erweiterte Version
liefert dagegen bessere Ergebnisse. Es zeigt sich aber auch, dass die benötigten
zusätzlichen Daten relativ leicht zur Verfügung gestellt werden können. Das Problem der geringeren Geschwindigkeit lässt sich ebenfalls lösen, wenn Implementierung, Anfragen und Instanziierung der Straßenontologie optimiert werden. Somit
105
führt die Berücksichtigung der zusätzlichen Kontextinformationen zu einer besseren Version des Fahrerassistenten. Die besonderen Vorteile, die der Einsatz von
Ontologien hier mit sich bringt, wird in Kapitel 6 genauer erläutert. Weitere Einsatzmöglichkeiten der Kontextmodelle werden im nächsten Abschnitt aufgezählt.
5.2 Weitere Einsatzmöglichkeiten
Die Beschleunigungswarnung ist ein gutes Beispiel, wie mit Hilfe der vorhandenen Ontologien eine neue Anwendung entwickelt werden kann, die sich in diesem
Fall der Fahrzeugontologie bedient und keiner weiteren Modifikationen am Kontextmodell oder der Struktur der Architektur bedarf. Die Straßenontologie zeigt,
dass durch die Erweiterung des Kontextmodells eine Verbesserung der Kollisionsvorhersagen möglich ist. Diese Erweiterung erfordert nur wenige Anpassungen des
Fahrerassistenten, wenn man von der Entwicklung der Straßenontologie absieht.
Auch die Integration der Umweltontologie erfolgt ohne Schwierigkeiten. Man kann
also weiteren Kontext relativ einfach in die Berechnungen des Fahrerassistenten
einfließen lassen. Auch die Entwicklung und Integration neuer Anwendungen für
die vorhandenen oder erweiterten Ontologien ist möglich. In diesem Abschnitt werden neue Einsatzmöglichkeiten für die in dieser Arbeit entwickelten Ontologien
beschrieben, also denkbare Anwendungen und die sich daraus ergebenden Erweiterungen der Ontologien. Alle diese Anwendungen und Erweiterungen sollten mit
relativ geringem Aufwand zu verwirklichen sein.
Warnung bei Überholvorgängen
Eine interessante Anwendung wäre eine Unterstützung des Fahrers bei Überholvorgängen. Vor allem schlecht einzusehenden Kurven oder Fehleinschätzungen und
Unaufmerksamkeit der Fahrer können hier zu Gefahrensituationen führen. Eine
solche Anwendung könnte zum Beispiel vor entgegenkommenden Fahrzeugen warnen oder von Fahrzeugen, die sich dem eigenen schnell von hinten auf der Nebenspur nähern. Zwei denkbare Varianten einer derartigen Überholwarnung werden
hier erläutert.
Die erste berechnet mögliche Gefahren erst dann, wenn die Spur gewechselt wird.
Von hinten kommende Fahrzeuge werden hier eventuell zu spät, oder aber von der
Kollisionswarnung erkannt. Um die Gefahr, die von entgegenkommenden Fahrzeugen ausgeht, zu berechnen, muss deren Position auf der Straße und die eigene
bekannt sein. Aus dem Abstand lässt sich nun einfach der Kollisionszeitpunkt berechnen. Der Unterschied zur bisherigen Kollisionsberechnung besteht darin, dass
keine Richtungen oder Fahrzeuggrößen beachtet werden, sondern einfach aus der
Länge des Streckenabschnitts und den Geschwindigkeiten und Beschleunigungswerten der Fahrzeuge die Zeit bis zur Kollision ermittelt wird. Sobald dieser Zeitpunkt zu nahe kommt, erfolgt die Warnung. Dieses System ist relativ simpel und
erfordert nur die Kenntnis der relativen Position der Fahrzeuge auf ihrem Stra-
106
ßenabschnitt. Dieser kann Anhand einer externen elektronischen Karte ermittelt
werden und in der Fahrzeugontologie, die hierzu um eine Property erweitert werden muss, abgespeichert werden. Eine solche Überholwarnung würde immer aktiv
sein und gegebenenfalls auch vor Gegenverkehr auf der eigenen Spur warnen, da
die Situation des Überholvorgangs nicht erkannt wird.
Eine zweite Variante könnte versuchen, die Situation des Überholvorgangs zu
erkennen. Um zu überholen, muss die Spur gewechselt werden. Will der Fahrer die
Spur wechseln, dann setzt er den Blinker, so er sich korrekt verhält. Eine zweite
Möglichkeit wäre, dass er abbiegen will. Wenn also der Fahrer den Blinker setzt
und es keine Möglichkeit zum Abbiegen gibt, dann will er die Spur wechseln. Wird
der Blinker nach links gesetzt, und vor dem eigenen Fahrzeug befindet sich ein
anderes, dann handelt es sich wohl um ein Überholmanöver. Eine strengere Bedingung wäre, dass die linke Spur für den Gegenverkehr bestimmt ist, allerdings ist
dies zum Beispiel auf Autobahnen nicht der Fall. Mit diesen Informationen lässt
sich also die Absicht des Fahrers zu überholen erkennen. Der Assistent kann nun
überprüfen, was passieren würde, wenn das Fahrzeug sich auf der linken Spur befindet. Aus den Streckenpositionen der anderen Fahrzeuge auf dieser Spur und ihren
Geschwindigkeiten und Beschleunigungswerten kann nun die Unfallgefahr abgeleitet werden. Außerdem kann noch ermittelt werden, wie lange der Überholvorgang
wohl dauert, wenn der Fahrer das Fahrzeug voll beschleunigt und sich ungefähr an
die erlaubte Höchstgeschwindigkeit hält. Kommt es in dieser Zeit zu keiner Kollision mit dem Gegenverkehr, dann ist ein Überholvorgang möglich, ansonsten wird
der Fahrer vor dem Unfallrisiko gewarnt. Ebenso wäre es möglich den Fahrer zum
Beschleunigen aufzufordern, falls er den Überholvorgang zu langsam angeht. Im
Unterschied zur ersten denkbaren Variante erkennt diese die Absicht des Fahrers
und kann somit schon im Voraus berechnen, was passiert, wenn der Fahrer seine
Absicht in die Tat umsetzt. Die hierzu benötigten Informationen sind einfach modellierbar. Die Positionen der Fahrzeuge im Straßennetz müssen auch in der ersten
Variante bekannt sein. Die Information, ob der Blinker gesetzt ist, kann leicht von
entsprechenden Sensoren erhalten werden. Die relative Position, also dass sich ein
Fahrzeug vor dem eigenen befindet, ist aus der Position im Straßennetz ableitbar
und kann als Property ins Modell aufgenommen werden. In der Straßenontologie
muss noch die relative Lage der Spuren einer Straße zueinander definiert werden,
da der Fahrerassistent nur an den Fahrzeugen interessiert ist, die sich auf der Spur
links neben der eigenen befinden. Zu beachten ist die beschränkte Reichweite der
Sender. Es ist durchaus möglich, dass Gegenverkehr nicht erkannt wird, da noch
keine Daten von ihm empfangen werden. Hier könnte das eigene Fahrzeug bei anderen Fahrzeugen aktiv nachfragen, ob sie Daten über weitere Verkehrsteilnehmer
besitzen, die sich außerhalb der eigenen Reichweite befinden.
Fahrzeug- und Straßenontologie können also auch in einer Anwendung eingesetzt
werden, die den Fahrer bei Überholvorgängen unterstützt. Sie müssen nur mit sehr
wenigen zusätzlichen Konzepten erweitert werden, in der ersten Variante nur um
107
die Position der Fahrzeuge auf der Straße, in der zweiten zusätzlich um die beiden
Blinker und die relativ Lage der Spuren einer Straße. Diese Erweiterungen beeinflussen aber nicht die Funktionsweise der bisher implementierten Kollisionsweise,
außerdem sind keine echten Modifikationen an den Ontologien vorzunehmen, es
werden nur wenige zusätzliche Properties benötigt.
Erweiterung um Vorfahrtsregeln
Eine denkbare Erweiterung des Fahrerassistenten ist auch die Berücksichtigung
von Vorfahrtsregeln. Diese würden es ermöglichen, auf erkannte Gefahren differenzierter zu reagieren. Wenn das eigene Fahrzeug Vorfahrt hat, dann ist anzunehmen,
dass das andere abbremsen wird. Natürlich ist das nicht garantiert, deshalb sollte
die Gefahr nur geringer eingeschätzt werden, also zum Beispiel keine frühzeitige
Warnung gegeben und das Fahrzeug nur, wenn es absolut notwendig erscheint,
abgebremst werden.
Die Straßenontologie enthält schon eine einfache Modellierung der Vorfahrt, sie
gibt aber nur an, ob eine Straße in eine Kreuzung als Vorfahrtsstraße mündet. Hier
wäre eine detailliertere Modellierung wünschenswert. Vorfahrtsregeln sollten sich
immer auf zwei Straßenabschnitte beziehen, also wer vor wem Vorfahrt hat, da
es zum Beispiel auch abbiegende Vorfahrtsstraßen gibt. Wenn an einer Kreuzung
bekannt ist, wie die Vorfahrtstraße verläuft, dann lassen sich die Vorfahrtsregeln
für die einzelnen Abschnitte ableiten. Dies erfordert zusätzliche Properties und
einen entsprechenden Regelsatz.
Ein Problem könnten sich ändernde Vorfahrtsregeln darstellen. Ampeln müssten
mit Sendern ausgestattet werden, die es den Fahrzeugen erlauben die verschiedenen Phasen zu erkennen, oder die Fahrzeuge benötigen Kameras und eine gutes
Bilderkennungsprogramm. Außerdem muss die Straßenontologie nun regelmäßig
mit neuen Daten instanziiert werden, was zu Problemen mit der Geschwindigkeit
führen kann. Auch temporäre Änderungen der Vorfahrtsregeln durch neue Schilder, zum Beispiel an einer Baustelle, müssen beachtet werden. Hier bietet sich
wieder eine Kamera und ein entsprechendes Bilderkennungsprogramm an, oder
die Verkehrsschilder müssen mit Sendern versehen werden.
Wenn die Instanziierung der Straßenontologie mit neuen Daten effizient durchgeführt wird und das Regelsystem zur Ableitung der Vorfahrtsregeln so formalisiert
wird, dass diese Ableitung auch in angemessener Zeit durchgeführt werden kann,
ist eine Erweiterung der Straßenontologie mit Vorfahrtsregeln ohne Änderungen
an der Struktur der Ontologie durchführbar. Aus den Angaben, welche Straßen
als Vorfahrtsstraßen in eine Kreuzung münden, lassen sich die Vorfahrtsregeln für
alle Straßenabschnitte untereinander ableiten. Ampeln oder temporäre Verkehrsschilder ändern nichts an diesem Prinzip, sie überschreiben nur die bisher gültigen
Regeln.
Die Straßenontologie muss also sowohl um neue Konzepte, als auch um einen Regelsatz erweitert werden, Änderungen an der Struktur sind aber nicht notwendig.
Die notwendigen Erweiterungen sind umfangreicher als die, die bei der Implemen-
108
tierung einer Unterstützung von Überholvorgängen vorzunehmen sind. Bei den
notwendigen Erweiterungen sollte es keine Schwierigkeiten geben, problematischer
ist dagegen die Datenbeschaffung, da entweder das Fahrzeug mit neuer Technik
ausgestattet werden muss, oder alle Ampeln und Verkehrsschilder.
Die Beachtung der Verkehrsregeln bietet einerseits die Möglichkeit auf erkannte
Gefahren besser zu reagieren, andererseits besteht aber auch die Gefahr, dass Kollisionen zwar vorhergesehen werden, aber wegen Beachtung der Vorfahrtsregeln
nicht oder zu spät auf sie reagiert wird. Wenn zum Beispiel das eigene Fahrzeug
Vorfahrt hat, also nicht abbremst, das andere aber einen defekten Fahrerassistenten besitzt und somit die Gefahr nicht erkennt, kann es zu einem Unfall kommen,
der eigentlich hätte vermieden werden können.
Die Modellierung der Vorfahrtsregeln kann aber natürlich auch für andere Gebiete als die Kollisionsvermeidung von Nutzen sein. So ist es denkbar, dass ein
Autopilot sich dieser Informationen bedient, um zu entscheiden, ob er weiterfahren kann oder abbremsen muss, wenn er an einer Kreuzung auf ein anderes
Fahrzeug trifft. In einem solchen Szenario würde dieselbe Straßenontologie zwei
unterschiedlichen Anwendungen als Kontextmodell dienen, einem Programm zur
Kollisionsvermeidung und einem Autopiloten, da beide ähnlichen Informationen
über ihre Umwelt benötigen. Dies ist eine interessante Möglichkeit, die Ontologien bieten, da die Wiederverwendung und der Ausbau schon vorhandener Modelle
den Entwicklungsaufwand für neue Anwendungen reduziert und, wenn mehrere
Anwendungen gleichzeitig auf dieselbe Ontologie zugreifen, auch den Aufwand zur
Datenbeschaffung und Verwaltung.
So kann der nötige Ausbau der vorhandenen Straßenontologie zum Beispiel durch
Ontologieimporte verwirklicht werden. Versionsinformationen sind in OWL ebenfalls möglich, falls die eigentliche Ontologie geändert und erweitert wird. Hier kann
Kompatibilität bzw Inkompatibilität mit alten Versionen einer OWL-Datei angegeben werden. Ein weiterer Vorteil von Ontologien ist es, dass sie den Einsatz von
Reasonern erlauben, um die Widerspruchsfreiheit von Definitionen und Instanzen
zu überprüfen [Av04]. Vor allem beim Ausbau und der Entwicklung großer Ontologien, wie zum Beispiel einer sehr detaillierten Straßenontologie, kann dies von
großem Nutzen sein.
Empfohlene Höchstgeschwindigkeit
Eine weitere Einsatzmöglichkeit für die vorhandenen Ontologien ist die Ermittlung einer empfohlenen Höchstgeschwindigkeit. Hier können sowohl die in der Umweltontologie als auch die in Fahrzeug- und Straßenontologie enthaltenen Informationen von Nutzen sein. Eine empfohlene Höchstgeschwindigkeit könnte entweder
von einem Autopiloten eingehalten werden, oder der Fahrer wird gewarnt, wenn
er diese überschreitet.
Laut Statistischem Bundesamt ist nicht angepasste Geschwindigkeit die häufigs-
109
te Unfallursache1 , was das Fehlverhalten der Fahrer betrifft [sta07a]. Bei den sonstigen Faktoren spielen Glatteis und Nässe die größte Rolle, aber auch die Sichtbehinderung durch Nebel ist ein nicht zu vernachlässigender Faktor2 [sta07b]. Eine
Warnung des Fahrers bei zu hoher Geschwindigkeit würde also durchaus Sinn machen, die Berücksichtigung von Glatteis, regennasser Fahrbahn und Nebel ebenso.
Die Straßenontologie enthält bereits Informationen zu erlaubter Höchstgeschwindigkeit, dem Zustand der Straße, dem Straßenbelag und dem Neigungswinkel der
Kurven. Alle diese Faktoren sollten bei der empfohlenen Höchstgeschwindigkeit
berücksichtigt werden.
Aus der Umweltontologie lassen sich sowohl Informationen über Glatteisgefahr,
als auch über die Gefahr einer nassen Fahrbahn, die Dichte des Nebels, die Helligkeit und die Sichtverhältnisse entnehmen. Glatteis, Nässe und Nebel sind laut
[sta07b] die wichtigsten Umweltfaktoren was die Unfallursachen betrifft, es empfiehlt sich also diese auch in die Ermittlung der empfohlenen Höchstgeschwindigkeit
einfließen zu lassen. Die Umweltontologie bietet also sowohl diese drei wichtigen Faktoren, als auch noch Informationen zu Helligkeit und Sichtverhältnissen.
Somit stehen die benötigten Daten zur Ermittlung der Geschwindigkeit alle zur
Verfügung, die Umweltontologie muss nicht erweitert werden.
Die Fahrzeugontologie dagegen liefert, so wie sie ist, keine brauchbaren Informationen, wenn man von der maximalen Geschwindigkeit des Fahrzeugtyps absieht.
Man könnte sie aber zum Beispiel mit Daten zur Art der Reifen versehen, die
ebenfalls berücksichtigt werden sollten.
Es zeigt sich also, dass Umwelt-, Fahrzeug- und Straßenontologie leicht zur Ermittlung einer empfohlenen Höchstgeschwindigkeit eingesetzt werden, da sie die
meisten dazu notwendigen Informationen zum Großteil schon enthalten, oder aber
leicht um entsprechende Konzepte erweitert werden können. Da überhöhte Geschwindigkeit, Glatteis und Nässe die wichtigsten Unfallursachen sind, könnte die
Ermittlung einer empfohlenen Höchstgeschwindigkeit, die die wichtigsten Umweltfaktoren berücksichtigt, viele Unfälle vermeiden helfen.
5.3 Mögliche Verallgemeinerungen
Die im letzten Abschnitt untersuchten Einsatzmöglichkeiten und Erweiterungen
der Umwelt-, Straßen- und Fahrzeugontologie sind alle auf Bereiche beschränkt, die
mehr oder weniger mit ihrem ursprünglichen Zweck verwandt sind, der Kollisionsvermeidung. In diesem Abschnitt werden mögliche Verallgemeinerungen der entwickelten Ontologien untersucht. Dies sind einerseits Verallgemeinerungen bezüglich des Einsatzes der Ontologien und andererseits Verallgemeinerungen bezüglich
1
Im Jahr 2006 wurden von 403.886 Unfällen mit Personenschäden 64.742 durch nicht angepasste Geschwindigkeit verursacht.
2
Im Jahr 2006 beträgt die Anzahl der allgemeinen Ursachen 35.675, davon entfallen 9.754 auf Glatteis
und Schnee, 7.837 auf Glätte durch Regen und 518 auf Sichtbehinderung durch Nebel.
110
des mit ihnen modellierten Kontexts.
Die Umweltontologie könnte zum Beispiel zu einer Art Wetterontologie erweitert werden. Hier können weitere Informationen zum Wetter modelliert werden, die
unter anderem für die Routenplanung interessant sein können. Dazu müssen die
vorhandenen Informationen bestimmten Bereichen, zum Beispiel in der Straßenontologie, zugeordnet werden. Somit kann man in der Ontologie beschreiben, dass auf
einer Landstraße dichter Nebel ist, während die höher gelegene Autobahn nebelfrei
ist. Die Informationen hierfür können entweder von anderen Fahrzeugen kommen,
die diese Bereiche mit ihren Sensoren erfasst haben, oder von Wetterdiensten. Es
wäre also denkbar, dass die Fahrzeuge mit solchen Diensten kommunizieren, um
Daten zu erhalten, oder auch Daten an diese weiterleiten. Der Einsatz einer zur
Wetterontologie erweiterten Umweltontologie ermöglicht es hier, Konzepte und
ihren Zusammenhang für alle Teilnehmer zu definieren, beziehungsweise Abbildungen der einzelnen Modelle aufeinander festzulegen. Es können also nicht nur
die Daten, sondern auch ihre Bedeutung eindeutig beschrieben werden. Auch wenn
Wetterdienst und Fahrzeuge unterschiedliche Ontologien einsetzen, können sie die
Informationen dank der Abbildungsregeln richtig interpretieren. Somit wird den
Fahrzeugen ermöglicht, auf die Daten des Wetterdienstes zuzugreifen und die hier
beschriebenen Informationen maschinell zu verarbeiten, oder auch ihre Daten an
den Wetterdienst übermitteln.
Ähnliches ist für die Straßenontologie denkbar. Sie könnte als Grundlage für
den Informationsaustausch zwischen den Fahrzeugen und verschiedenen externen
Informationsquellen oder Anwendungsprogrammen dienen. Ein Beispiel hierfür ist
die Routenplanung. Bedient sich ein Navigationssystem der Straßenontologie, dann
ist es vom genauen Format der elektronischen Straßenkarte unabhängig. Außerdem kann es noch auf weitere Informationen zugreifen, wie zum Beispiel der oben
genannten Wetterontologie. Ebenso ist es möglich, dass aktuelle Verkehrsinformationen in Ontologien gespeichert werden. Diese können dann ebenfalls in die
Routenplanung einfließen. Eventuell könnten auch hier Fahrzeuge den Verkehrsdienst mit Informationen zur Verkehrsdichte, Staus und Unfällen versorgen. Wie
schon bei der Wetterontologie ermöglicht natürlich auch hier der Einsatz von Ontologien eine präzise Definition von Konzepten und Zusammenhängen, die maschinell ausgewertet werden können. Eine allgemeine Straßenontologie könnte also
als Grundlage für Kollisionswarnsysteme, Verkehrsdienste und Naviagtionssysteme
dienen. Sie ermöglicht es, dass alle diese unterschiedlichen Anwendungen miteinander kommunizieren können, also Daten, ihre Bedeutung und den Kontext, in dem
sie stehen, austauschen, da ihnen ein gemeinsames Verständnis von Konzepten
zugrunde liegt.
Zum Schluss wird noch auf die mögliche Erweiterung des Modells um fahrerbezogene Konzepte eingegangen. Da die Fähigkeiten und Eigenschaften der einzelnen
Fahrer sehr unterschiedlich sind, ist eine Berücksichtigung der speziellen Eigenheiten des Fahrers auch bei der Kollisionsvermeidung interessant. So ermöglichen
111
Daten über die Reaktionszeit des Fahrers eine verbesserte Reaktion auf eine erkannte Gefahr. Ist der Fahrer langsam, muss eventuell schon abgebremst werden,
ist er schnell, kann eine Warnung ausreichend sein. Auch die Erfassung weiterer
Daten liefert wertvolle Informationen. So reagiert der Fahrer wahrscheinlich bei
einer langen Fahrt oder in der Nacht langsamer und neigt dazu, mehr Fehler zu
machen. Auch das Sehvermögen, das Alter oder die Tatsache, dass der Fahrer
ein Brillenträger ist, können bei der Reaktion des Fahrerassistenten berücksichtigt
werden.
Sind Informationen zum Fahrer vorhanden, dann ergeben sich weitere Einsatzmöglichkeiten einer solchen Fahrerontologie. Ist zum Beispiel bekannt, dass der
Fahrer schon lange bei Nacht unterwegs ist, und er sein Ziel nicht mehr erreichen
kann, da das Wetter sehr schlecht ist, könnte der Fahrerassistent automatisch
nach dem nächsten Hotel suchen, das in der richtigen Preisklasse liegt, und den
Fahrer, so er daran interessiert ist, dorthin leiten. Eine derartige Anwendung würde
sich sowohl der Fahrer-, als auch der Wetter- und Straßenontologie bedienen und
außerdem noch mit einem Hotelservice im Internet kommunizieren.
Es ist also möglich, die in dieser Arbeit formalisierten Ontologien weiterzuentwickeln oder so zu verallgemeinern und auszubauen, dass sie auch in ganz neuen
Bereichen eingesetzt werden und somit die Grundlage des Informationsaustauschs
und der Zusammenarbeit unterschiedlichster Dienste und Anwendungen bilden.
5.4 Anpassungsfähigkeit und Grenzen
Zum Schluss dieses Kapitels wird noch auf Anpassungsfähigkeit der Ontologien
und ihre Grenzen eingegangen. Wie in den vorigen Abschnitten gezeigt wurde,
sind die Ontologien leicht erweiterbar. Sie können sowohl nur um einzelne Konzepte erweitert werden, als auch um komplette Modelle. Dies geschieht durch den
Import anderer Ontologien. Als Beispiel seien hier die Beipielontologie mit externen Fahrzeugdaten und die Straßenontologie genannt. Beide können ohne Schwierigkeiten in die Fahrzeugontologie integriert werden. Nötig ist nur die Definition
von Abbildungsregeln, die die Konzepte der unterschiedlichen Ontologien in Bezug zueinander setzt. In der Beispielontologie geschieht dies durch einen externen
Regelsatz (siehe Abschnitt 3.3.4).
Da die Ontologien leicht zu erweitern sind, können sie auch leicht an neue Anforderungen angepasst werden. Der Ausbau der Ontologien hat aber nicht nur
Vorteile, sondern kann auch zu Problemen führen.
Eine erweiterte Ontologie ist in der Regel auch langsamer, das heißt sie kann
unter anderem Anfragen nicht mehr so schnell bearbeiten. Bei einer Anwendung
wie der Kollisionsvermeidung ist dies aber ein kritischer Punkt, eine zu langsame
Ontologie ist hier nutzlos. Es muss also ein Kompromiss zwischen der Genauigkeit
des Modells und der Geschwindigkeit gefunden werden, die Ontologie ist nicht
beliebig erweiterbar ohne dass die Geschwindigkeit darunter leidet. Existiert ein
112
allgemeines Kontextmodell, das sehr viele Konzepte enthält, dann ist es unter
Umständen empfehlenswert, wenn sich die einzelnen Anwendungen auf die von
ihnen wirklich benötigen Ausschnitte beschränken und nicht das ganze Modell
verwenden.
Wird eine große Anzahl von Ontologien eingebunden, dann führt dies zu einem
weiteren Problem. Für jede Ontologie müssen gegebenenfalls Abbildungsregeln
aufgestellt werden, die den Zusammenhang ihrer Konzepte definieren. Eine hohe
Anzahl solcher Regeln macht das ganze System komplexer und somit auch langsamer. Somit sind auch der Erweiterung der Modelle durch den Import externer
Ontologien Grenzen gesetzt.
Allgemein lässt sich sagen, dass jedem Modell theoretische Grenzen gesetzt sind,
was seine Genauigkeit und die Menge der modellierten Konzepte betrifft. Nach
[Sta73] ist ein Modell immer nur ein Abbild der Wirklichkeit, es verkürzt und es
ist nach pragmatischen Gesichtspunkten erstellt.
Somit erfasst ein Modell nur einen Ausschnitt der Wirklichkeit, den es abstrahierend darstellt. Es soll auch nur die Aspekte erfassen, die dem Erschaffer des
Modells wichtig erscheinen, da es für einen Verwendungszweck geschaffen wird.
Enthält es zu viele Informationen, verliert es an Wert. Ein Modell, das alle Aspekte
der Wirklichkeit abbildet, ist sinnlos. Somit sind natürlich auch einem ontologischen Kontextmodell Grenzen gesetzt.
113
6 Diskussion
In diesem Kapitel werden zuerst die Erwartungen an ein ontologisches Kontextmodell und die tatsächlich erzielten Ergebnisse verglichen. Im nächsten Abschnitt wird
die Eignung des Ansatzes, Ontologien zur Kontextmodellierung einzusetzen, diskutiert. Am Ende des Kapitels steht ein Ausblick auf weitere Einsatzmöglickeiten
von ontologischen Kontextmodellen.
6.1 Erwartungen und Ergebnisse
Im Abschnitt 2.4.7 werden die Erwartungen an eine ontologische Kontextmodellierung formuliert. Hier wird überprüft, inwieweit diese Erwartungen erfüllt wurden.
Die erste Erwartung, dass die Ausdrucksstärke von Ontologien mächtig genug
ist, um den gewünschten Kontext zu modellieren, bestätigt sich für die in dieser
Arbeit entworfenen Kontextmodelle. Keines der Modelle erweist sich als mangelhaft aufgrund der Beschränkungen der Modellierungssprache OWL. Es ist nicht
einmal nötig den mächtigsten OWL-Dialekt, OWL Full, zu verwenden, sondern es
genügt sich auf OWL DL zu beschränken.
Die Maschinenlesbarkeit ist grundsätzlich ebenfalls gegeben. Problematisch könnte aber die richtige Interpretation von Zahlenwerten sein, wenn die physikalischen
Einheiten wie Meter oder Meile nicht in der Ontologie angegeben werden. Hier
existieren, außer für die Zeit, keine vordefinierten Datentypen in OWL, eine Erweiterung der OWL-Datentypen um Länge, Zeit, Temperatur, usw wäre hier sehr
hilfreich. Ansonsten wäre auch eine Festlegung in der Ontologie durch zusätzliche
Properties oder Kommentare möglich. Diese Lösungen erfordern aber wieder den
Eingriff eines Menschen, der die Properties oder Kommentare richtig interpretiert.
Die Möglichkeit zur Ableitung komplexer Informationen wird in dieser Arbeit
nur bedingt genutzt, einfachere Zusammenhänge wie Helligkeit, Nebel und Sichtverhältnisse, oder der Schluss vom Fahrzeugtyp auf seine Maße sind aber sehr
hilfreich. Die Frage, ob komplexere Anfragen beantwortet werden können, kann
mit Hilfe des Beispiels der Anfrage nach allen Fahrzeugen, die sich auf derselben
Zusammenhangskomponente des Straßennetzes wie das eigene Fahrzeug befinden,
bejaht werden.
Die Hoffnung auf schnelles Ableiten der Zusammenhänge dagegen wird nur bedingt erfüllt. Ist das Modell zu umfangreich, wird es auch langsamer. Zumindest
für eine relativ geringe Anzahl von Fahrzeugen und ein beschränktes Straßennetz
arbeitet der Fahrerassistent, und somit auch die ontologischen Modelle, aber mit
114
einer den Ansprüchen einer Echtzeitanwendung genügenden Geschwindigkeit.
Im Hinblick auf die Wiederverwertbarkeit der Modelle und die Möglichkeit zum
Einbinden externer Ontologien werden die Erwartungen erfüllt. Die Wiederverwertbarkeit und Ausbaufähigkeit einer Ontologie zeigt sich am Beispiel der Fahrzeugontologie. In der zweiten Version des Fahrerassistenten ist es leicht möglich, die
alte Fahrzeugontologie mit einer neuen Property zu erweitern, und ansonsten komplett zu übernehmen. Der Import externer Modelle ist ebenfalls leicht machbar,
wie man am Beispiel der Straßenontologie und der Beispielontologie zum Import
externer Fahrzeugdaten sieht.
Die meisten Erwartungen, die an den Einsatz von Ontologien zur Kontextmodellierung gestellt wurden, werden also erfüllt. Im nächsten Abschnitt wird auf die
Vorteile und Nachteile dieses Ansatzes eingegangen.
6.2 Eignung des Ansatzes der ontologischen
Kontextmodellierung
Ontologien ermöglichen es, formal die Aspekte der Wirklichkeit zu beschreiben, die
für den Verfasser der Ontologie von Interesse sind. Das ontologische Modell beschreibt Konzepte, ordnet ihnen Eigenschaften zu und legt Beziehungen zwischen
ihnen fest. Die Semantik des Modells ist eindeutig und die Ontologie besitzt eine
formale Syntax. Dadurch wird das Modell maschinenlesbar und interpretierbar.
Ein ontologisches Kontextmodell hat diese Eigenschaften natürlich auch. Somit
kann es als Grundlage für verschiedenste Anwendungen dienen, die alle Informationen über ähnlich Aspekte der Umwelt benötigen. Im Falle des Fahrerassistenten
ist es somit möglich, ein einmal erstelltes Modell für unterschiedliche Dienste zu
verwenden. Dies spart Zeit bei der Entwicklung von Anwendungen und erlaubt es,
die Anwendungen auf einem relativ abstrakten Level zu schreiben, da sie nur auf
die wohl formalisierten Daten, die die Ontologie enthält, zugreifen müssen.
In einem ontologischen Kontextmodell können die Zusammenhänge zwischen
Sensordaten und abstrakten Konzepten definiert werden. Dies muss nur einmal
implementiert werden, die Anwendungen können sich dann der Konzepte bedienen,
ohne zu wissen, woher die Informationen kommen.
Wenn Anwendungen das Verständnis über die Umwelt teilen, wie es bei der Verwendung gleicher oder (teilweise) aufeinander abbildbarer ontologischer Modelle
der Fall ist, dann erleichtert dies die Zusammenarbeit der Anwendungen erheblich.
Es ist möglich Informationen auszutauschen, die von beiden Partnern in gleicher
Weise interpretiert werden, wenn sie das Verständnis über die enthaltenen Konzepte und ihre Beziehungen zueinander teilen. Dieser Informationsaustausch wird
auch durch die Tatsache begünstigt, dass es möglich ist, Ontologien aufeinander
abzubilden, beziehungsweise die in ihnen formalisierten Konzepte.
Ontologische Kontextmodellierung ist also vor allem dann sinnvoll, wenn das
erzeugte Modell, oder eines, das darauf abbildbar ist, in mehreren Anwendungen
115
eingesetzt wird. Dies spart sowohl Zeit bei der Entwicklung, ermöglicht aber auch
eine verbesserte Kommunikation zwischen den Anwendungen.
Ein weiterer Vorteil des Einsatzes von Ontologien ist ihre Erweiterbarkeit durch
die Einbindung externer Ontologien. Existieren unterschiedliche ontologische Modelle der einzelnen Aspekte des zu modellierenden Kontexts, also zum Beispiel eine
Wetterontologie, eine Straßenontologie und eine Personenontologie als Teilaspekte
des Fahrzeugkontexts, können diese in die eigene Kontextontologie eingebunden
werden. Da je nach Problemstellung die unterschiedlichsten Aspekte des Kontexts
eine Rolle spielen, ist dies eine interessante Möglichkeit. Der Ersteller des Kontextmodells kann also auf die Arbeit anderer zurückgreifen und sich genau der Teile
bedienen, die für ihn von Interesse sind. Bei einer möglichen Erweiterung des Fahrerassistenten könnten dies die Fahrzeugontologien verschiedener Hersteller sein,
oder auch Ontologien, die Informationen zu Wetter und Verkehr enthalten.
Die Tatsache, dass es mit Hilfe von Reasonern möglich ist, aus den modellierten
Daten weitere Rückschlüsse zu ziehen, ist ebenfalls sehr hilfreich. Die Überprüfung
der Ontologie auf Widersprüche durch einen Reasoner ist bei der Entwicklung
größerer Kontextmodelle nützlich, die Überprüfung der Instanzmenge beim Einsatz des Modells.
Ein weiterer Vorteil des Einsatzes von Ontologien zur Kontextmodellierung ist
es, dass sie eine relativ “natürliche” Modellierung erlauben. Die Beschreibung der
Wirklichkeit durch Konzepte, ihren Eigenschaften und Beziehungen zueinander ist
verständlicher als zum Beispiel eine Modellierung durch reine Beschreibungslogiken. In geeigneter Darstellungsform sind zumindest kleinere Ontologien für den
menschlichen Betrachter relativ leicht zu verstehen. Dies ist vor allem bei der
Verwertung externer Ontologien wichtig, aber natürlich auch bei der Entwicklung
eigener Modelle.
Die ontologische Kontextmodellierung hat aber nicht nur Vorteile. Zuerst einmal
ist der Einsatz einer Ontologie relativ aufwändig. Unter anderem wird zur Entwicklung ein spezieller Editor benötigt, die Modellierungssprache muss eventuell
erst erlernt werden, die Einbettung in eine Anwendung erfordert ein Framework
und Zugriffe auf die Ontologie geschehen meist über spezielle Querysprachen und
Reasoner. Die Vorteile des Einsatzes einer Ontologie müssen so groß sein, dass sie
diesen Aufwand rechtfertigen, was zum Beispiel beim hier implementierten Fahrerassistenten der Fall ist.
Ein weiterer Nachteil ist, dass vor allem bei Ontologien mit einer Vielzahl von
Konzepten und Instanzen, die in komplexen Beziehungen zueinander stehen, die
auf ihnen durchgeführten Operationen sehr langsam werden können. Dasselbe gilt
für zu komplexe Anfragen, die vom Reasoner nicht in der gewünschten Zeit beantwortet werden können.
Spielt die Geschwindigkeit also eine große Rolle, dann dürfen Ontologie und Anfragen nicht zu komplex sein. Einfache Ontologien führen unter solchen Umständen
zu besseren Ergebnissen. Können aber die interessanten Eigenschaften eines on-
116
tologischen Kontextmodells nicht genutzt werden, da diese die Anforderungen an
die Geschwindigkeit des Systems nicht erfüllen würden, ist der Aufwand einer Modellierung mittels einer Ontologie eventuell nicht mehr angebracht. Hier mag der
Einsatz anderer Arten von Modellen, die sowohl einfacher in der Erstellung und
im Einsatz als auch schneller bei der Anwendung sind, sinnvoller sein.
Vor allem die Vorteile bezüglich des Imports externer Modelle, des Einsatzes
als Grundlage mehrerer Programme und des wesentlich erleichterten Informationsaustauschs zwischen unterschiedlichen Anwendungen überwiegen die Nachteile
des Ansatzes einer ontologischen Kontextmodellierung. Bei einem Einsatz eines
ontologischen Kontextmodells in Fahrzeugen können sich die unterschiedlichsten
Programme dieses Modells bedienen und auch die Kommunikation mit externen
Diensten wird erleichtert. Die Möglichkeit zur Abstraktion ist bei der großen Anzahl von Sensoren in modernen Fahrzeugen von entscheidender Bedeutung. Da sie
die konkreten Werte und Typen der Sensoren verbirgt, erlaubt sie es Anwendungen zu entwickeln, die in den Fahrzeugen unterschiedlicher Hersteller eingesetzt
werden können.
6.3 Ausblick
Der Einsatz ontologischer Modelle in Fahrzeugen bietet viele Möglichkeiten. Wie
in dieser Arbeit gezeigt wurde, lassen sich die Ergebnisse, die mit Programmen
zur Kollisionsvermeidung bei Fahrzeugen erreicht werden, wesentlich verbessern,
wenn der Kontext, in dem sich die Fahrzeuge befinden, beachtet wird.
Der Einsatz ontologischer Kontextmodelle ist aber nicht nur bei der Kollisionsvermeidung von Fahrzeugen sinnvoll. Die in dieser Arbeit entwickelten Modelle
lassen sich leicht erweitern und in anderen Gebieten einsetzen. Als Beispiel seien hier die Kommunikation des Fahrzeugs mit Routenplanern und Verkehrsdiensten genannt. Eine Erweiterung der Straßenontologie um Vorfahrtsregeln würde es
ermöglichen zu entscheiden, welches von zwei Fahrzeugen, die sich an einer Kreuzung treffen, fahren darf, und welches bremsen muss. In Kombination mit einem
Routenplaner könnte ein ontologisches Kontextmodell hier eventuell den Einsatz
eines Autopiloten unterstützen.
Nach [Rei96] bestehen autonome mobile Systeme aus vier Komponenten. Dies
sind das Sensorsystem zur Informationserfassung, das Aktorsystem zur Fortbewegung, das Kontrollsystem zur Informationsauswertung, und eine Kommunikationsstruktur sowohl für die Verbindung der restlichen drei Komponenten untereinander, als auch zur Kommunikation mit der Außenwelt.
Das Kontrollsystem könnte sich einer Ontologie zur Modellierung des vom Sensorsystem ermittelten Datensatzes, und der Ableitung abstrakter Informationen
aus diesen einfachen Daten bedienen. Auch die Funktionen und Parameter des
Aktorsystems lassen sich in einer Ontologie erfassen, die Kommunikation mit der
Außenwelt wird durch den Einsatz eines ontologischen Kontextmodells ebenso er-
117
leichtert. Navigationsdienste ermöglichen eine Streckenplanung, Verkehrsdienste
die Anpassung an die aktuellen Verkehrsverhältnisse. Entscheidungen zur Fahrzeugsteuerung könnten mit Hilfe eines detaillierten Kontextmodells, das sich auf
die nähere Umgebung des Fahrzeugs beschränkt, vom Kontrollsystem ebenso getroffen werden wie es ihm möglich ist, plötzlich auftretende Gefahren zu erkennen.
Hierzu könnte sich das Kontrollsystem des Autopiloten wiederum einer erweiterten
Version des Fahrerassistenten bedienen.
118
Abbildungsverzeichnis
2.1
2.2
2.3
Die logischen Programmkomponenten . . . . . . . . . . . . . . . . . 18
Einfache Klassenhierarchie und Properties . . . . . . . . . . . . . . 26
Einfache Propertyhierarchie . . . . . . . . . . . . . . . . . . . . . . 28
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
Die Properties des Klasse Fahrzeug . . . . . . . . . . . . . . . .
Die Klassenhierarchie der Fahrzeugtypen . . . . . . . . . . . . .
Die Modellierung der Verkehrsteilnehmer . . . . . . . . . . . . .
Die Importbeispiel - Ontologie . . . . . . . . . . . . . . . . . . .
Die logischen Komponenten und die wichtigsten Javaklassen . .
Die Einbindung der Klasse OntoCar . . . . . . . . . . . . . . . .
Geschwindigkeit des Simulators mit und ohne Fahrerassistenten
Geschwindigkeit eines einzelnen Fahrerassistenten . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
44
46
48
50
65
66
74
75
4.1
4.2
4.3
4.4
4.5
Die Sensoren der Umweltontologie . . . . . . . . . . . . .
Die abgeleiteten Werte der Umweltontologie . . . . . . .
Straßen und Kreuzungen . . . . . . . . . . . . . . . . .
Spuren, Kurven und Verkehrsschilder . . . . . . . . . . .
Vergleich der Geschwindigkeit mit und ohne Straßennetz
.
.
.
.
.
.
.
.
.
.
86
88
92
95
98
5.1
Vergleich der Simulationszeiten . . . . . . . . . . . . . . . . . . . . 104
119
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Literaturverzeichnis
[AD99]
Abowd, Gregory D. und Dey, Anind K.: Towards a Better Understanding of Context and Context-Awareness. In: HUC ’99: Proceedings of the 1st international symposium on Handheld and Ubiquitous
Computing, Seiten 304–307. Springer-Verlag, 1999.
[Av04]
Antoniou, Grigoris und van Harmelen, Frank: A Semantic
Web Primer. The MIT Press, Cambridge, Massachusetts, 2004.
[Baa03]
Baader, Franz: The Description Logic Handbook : Theory, Implementation and Applications. Cambridge University Press, Cambridge,
2003.
[BK01]
Borgelt, Christian und Kruse, Rudolf: Unsicherheit und Vagheit: Begriffe, Methoden, Forschungsthemen. KI, 15(3):5–8, 2001.
[CMD99]
Cheverst, Keith, Mitchell, Keith und Davies, Nigel: Design
of an object model for a context sensitive tourist GUIDE. Computers
and Graphics, 23(6):883–891, 1999.
[DFv03]
Davies, John, Fensel, Dieter und van Harmelen, Frank: Towards the Semantic Web: Ontology-Driven Knowledge Management.
John Wiley & Sons, 2003.
[DSK05]
Doetzer, Florian, Strassberger, Markus und Kosch, Timo:
Classification for traffic related inter-vehicle messaging. In: 5th International Conference on ITS Telecommunications (ITS-T), 2005.
[FHH04]
Fikes, Richard, Hayes, Patrick und Horrocks, Ian: OWL-QL–
a language for deductive query answering on the Semantic Web. Technischer Bericht, Stanford University, 2004.
[Fot02]
Fotherby, Tom: Visual Traffic Simulation.
University of
London, Student Project, http://mysite.wanadoo-members.co.uk/
tomfotherby/Contents/Uni/Project/index.html, 2002.
[GMF+ 03] Gennari, John H., Musen, Mark A., Fergerson, Ray W.,
Grosso, William E., Crubézy, Monica, Eriksson, Henrik,
Fridman Noy, Natalya und Tu, Samson W.: The evolution of
Protégé: an environment for knowledge-based systems development. Int.
J. Hum.-Comput. Stud., 58(1):89–123, 2003.
120
[Gro04]
Groetschel, Martin: Skript zur Vorlesung Lineare Optimierung. Technische Universität Berlin, http://www.math.tu-berlin.
de/Vorlesungen/WS03/LinOpt/, 2004.
[Gru93]
Gruber, Thomas R.: A translation approach to portable ontology
specifications. Knowledge Acquisition, 5(2):199–220, 1993.
[HIR03]
Henricksen, Karen, Indulska, Jadwiga und Rakotonirainy,
Andry: Generating Context Management Infrastructure from Context
Models. In: 4th International Conference on Mobile Data Management
(MDM), Industrial Track Proceedings, Seiten 1–6, Melbourne, January
2003.
[HM01]
Haarslev, Volker und Möller, Ralf: RACER System Description. In: International Joint Conference on Automated Reasoning, IJCAR’2001, June 18-23, Siena, Italy, Seiten 701–705. Springer-Verlag,
2001.
[Ian98]
Ian Horrocks: The FaCT System. In: Proc. of the 2nd Int. Conf.
on Analytic Tableaux and Related Methods (TABLEAUX’98), Band
1397 der Reihe Lecture Notes in Artificial Intelligence, Seiten 307–312.
Springer, 1998.
[KFFM04] Knublauch, Holger, Fergerson, Ray W., Fridman Noy, Natalya und Musen, Mark A.: The Protégé OWL Plugin: An Open
Development Environment for Semantic Web Applications. In: International Semantic Web Conference, Seiten 229–243, 2004.
[KR07]
Krajzewicz, Daniel und Roessel, Christian: SUMO - Simulation of Urban MObility - User Documentation. http://sumo.
sourceforge.net/docs/gen/user_index.shtml, 2007.
[mey07a]
Meyers Lexikon online. http://lexikon.meyers.de/meyers/Modell,
July 2007.
[mey07b]
Meyers Lexikon online.
Ontologie, July 2007.
[MH69]
McCarthy, John und Hayes, Patrick J.: Some philosophical problems from the standpoint of Artificial Intelligence. In: Machine Intelligence, vol. 4, Seiten 463–502. Edinburgh University Press, 1969.
[MH02]
Miller, Ronald und Huang, Qingfeng: An Adaptive Peer-to-Peer
Collision Warning System. In: Proceedings of IEEE Vehicle Technology
Conference (Spring), (Birmingham, Alabama)., May 2002.
http://lexikon.meyers.de/meyers/
121
[Mv04]
McGuinness, Deborah L. und van Harmelen, Frank:
OWL Web Ontology Language Overview. http://www.w3.org/TR/
owl-features/, 2004.
[Rei96]
Reichardt, Dirk: Kontinuierliche Verhaltenssteuerung eines autonomen Fahrzeugs in dynamischer Umgebung. Doktorarbeit, Universität Kaiserslautern, 1996.
[SAW94]
Schilit, Bill, Adams, Norman und Want, Roy: Context-Aware
Computing Applications. In: IEEE Workshop on Mobile Computing
Systems and Applications, Santa Cruz, CA, US, 1994.
[SBF98]
Studer, Rudi, Benjamins, Richard und Fensel, Dieter: Knowledge Engineering: Principles and Methods. Data & Knowledge Engineering, 25(1-2):161–198, March 1998.
[SL04]
Strang, Thomas und Linnhoff-Popien, Claudia: A Context Modeling Survey. In: First International Workshop on Advanced Context
Modelling, Reasoning And Management at UbiComp 2004, Nottingham, England, 2004.
[SS04]
Staab, Steffen und Studer, Rudi: Handbook on Ontologies. International Handbooks on Information Systems. Springer, 2004.
[SSH98]
Seiler, Peter, Song, Bongsob und Hedrick, J. Karl: Development of a Collision Avoidance System. University of CaliforniaBerkeley, http://vehicle.me.berkeley.edu/Publications/AVC/
pseil_sae98.pdf, 1998.
[Sta73]
Stachowiak, Herbert: Allgemeine Modelltheorie. Springer, Wien,
1973.
[sta07a]
Unfallursachen - Fehlverhalten der Fahrzeugführer bei Unfällen mit
Personenschaden. Statistisches Bundesamt Deutschland, http://www.
destatis.de/, 2007.
[sta07b]
Unfallursachen - Ursachen von Unfällen mit Personenschaden. Statistisches Bundesamt Deutschland, http://www.destatis.de/, 2007.
[SWM04] Smith, Michael K, Welty, Chris und McGuinness, Deborah
L.: OWL Web Ontology Language Guide. http://www.w3.org/TR/
owl-guide/, 2004.
[wik07a]
Wikipedia.
Online-Lexikon,
Wireless_LAN, July 2007.
[wik07b]
Wikipedia. Online-Lexikon, http://de.wikipedia.org/wiki/VANET,
July 2007.
122
http://de.wikipedia.org/wiki/