-
Gebiet der Erfindung
-
Diese Erfindung betrifft die Navigation, um insbesondere auf der Straße und im Gelände unter Verwendung von mehrfach aufgelösten Karten effizient Fahrtrouten zu erzeugen.
-
Diskussion des Hintergrunds
-
Die
US-Patente 6 963 800 („Routing soldiers around enemy attacks and battlefield obstructions”) und
7 756 635 („Method and System for Generating and Presenting Off-Road Travel Routes”) von Randy Milbert bahnten den Weg für die automatisierte Routenplanung im Gelände. Sie ermöglichten Soldaten und Zivilisten gleichermaßen, Routen durch jedes beliebige Gelände – Wüste, Dschungel, bergiges, städtisches – auf oder abseits der Straßen zu planen.
-
Während die Routenplanung auf der Straße auf eine relativ spärliche Graphik beschränkt ist – man kann an einer typischen Kreuzung nur nach links, rechts oder geradeaus gehen – führt die Routenplanung im Gelände zu ungeheuer dichteren Graphiken, weil man an jedem Punkt einen Freiheitsgrad von 360 Grad hat.
-
Eine beispielhafte Ausführungsform, die in den
US-Patenten 6 963 800 und
7 756 635 beschrieben ist, verwendet A* (siehe
Seiten 93 bis 99 von „Artificial Intelligence: A Modem Approach, Third Edition" von Stuart Russel und Peter Norvig), um diese Routen im Gelände zu erzeugen. A*s Rechengeschwindigkeit und Speichernutzung sind vielen alternativen Wegsuchalgorithmen, wie etwa der Breiten- und Tiefensuche, weit überlegen, aber A* ist immer noch nicht in der Lage, schnell lange Routen im Gelände mit hoher Qualität auf ressourcenbeschränkten Plattformen, wie etwa Mobiltelefonen oder persönlichen Navigationsvorrichtungen (PNDs), zu erzeugen.
-
Speicherbegrenzte Varianten von A* (siehe Seiten 101 bis 102 von „Artificial Intelligence: A Modern Approach, Third Edition"), wie etwa ein vereinfachter speicheroptimierter A* (SMA*) verringern den Speicherverbrauch und halten die Optimalität unter Verwendung einer zulässigen Heuristik aufrecht, aber sie opfern Leistung. Alle Knoten, die von A* untersucht werden, werden auch durch SMA* untersucht, auf ressourcenbeschränkten Plattformen können einfach einige von ihnen vorübergehend aus dem Speicher entfernt werden.
-
Anytime-Varianten von A*, wie etwa Anytime Repairing A* (ARA) (siehe
"ARA*: Anytime A* with Provable Bounds an Sub-Optimality" von Maxim Likhachev, Geoff Gordon und Sebastian Thrun) verringern auch den Speicherverbrauch und halten die Optimalität bei einer gegebenen zulässigen Heuristik aufrecht, aber sie opfern ebenfalls Leistung, wenn man sie bis zum Abschluss laufen lässt. In diesem Fall untersucht ARA* wenigstens so viele Knoten wie A*. Sein Vorteil ist, dass er einem ermöglicht, verbesserungsfähige Routen mit begrenzten Fehlern zu erhalten, während die Routenerzeugung voranschreitet.
-
Ein anderer Ansatz (siehe „An optimal pathfinder or vehicles in real-world digital terrain maps" von F. Markus Jönsson) erzeugt eine unterabgetastete Version der Graphik, erzeugt eine grobe Route und teilt die grobe Route in Segmente, erzeugt unter Verwendung der Segmentendpunkte feine Routen und heftet dann die feinen Routen zusammen. Wiederum verringert diese Lösung den Speicherverbrauch. In einigen Fällen verringert er auch die Rechenzeit, weil es schneller ist, mehrere kurze Routensegmente zu erzeugen als eine lange vollständige Route. Dieser Ansatz hat jedoch einen erheblichen Nachteil in der Hinsicht, dass er Routen mit Einbindepunkten erzeugt, an denen die feinen Routen zu den groben Segmentendpunkten gezeichnet wurden, die in einem unerwünschten Gelände sein können.
-
Keine dieser vorhandenen Lösungen ist fähig, schnell lange Routen mit hoher Qualität im Gelände auf ressourcenbeschränkten Plattformen zu erzeugen.
-
Zusammenfassung der Erfindung
-
Die vorliegende Erfindung ist ein computerimplementiertes Verfahren zum effizienten Erzeugen von Fahrtrouten auf der Straße und im Gelände unter Verwendung von mehrfach aufgelösten Karten. Eine beispielhafte Ausführungsform der Erfindung umfasst einen Kartengenerator, eine Kartendatenbank, einen Routengenerator, einen Heuristikgenerator und einen Search-Envelope- bzw. Suchhüllen-Faktorgenerator.
-
Eine beispielhafte Ausführungsform des Kartengenerators wandelt Eingangsrasterdaten und Vektorkartendaten in mehrfach aufgelöste Rasterkartendaten, die für die Routenplanung geeignet sind, um. Wenn die Eingangsvektorkartendaten lineare Merkmale enthalten, welche die Routenplanung beeinflussen (z. B. Umzäunungen, Straßen, Flüsse und Pfade), zeichnet der Kartengenerator diese Merkmale mit einer festen Breite auf allen Zoomstufen in die Ausgangsrasterkartendaten.
-
Eine beispielhafte Ausführungsform des Routengenerators erzeugt eine Route mit einer groben Zoomstufe und erzeugt die Route dann mit fortschreitend höheren Zoomstufen neu. Bei diesen höheren Zoomstufen verwendet der Routengenerator die auf der vorhergehenden Zoomstufe erzeugte Route, um den Suchbereich auf der aktuellen Zoomstufe zu begrenzen. Insbesondere benachteiligt der Routengenerator Kandidatenrouten auf der aktuellen Zoomstufe, die zu weit von der Route abweichen, die auf der vorhergehenden Zoomstufe erzeugt wurde. Das Ergebnis sind verringerte Rechenzeit und Speichernutzung. Der Routengenerator verwendet einen wohlbekannten Heuristik-basierten Wegsuchalgorithmus, wie etwa A*, um die Routen zu erzeugen.
-
Eine beispielhafte Ausführungsform des Heuristikgenerators berechnet die Heuristik, die von dem Wegsuchalgorithmus verwendet wird. Auf der Anfangszoomstufe erzeugt der Heuristikgenerator basierend auf der Entfernung zwischen dem aktuellen Knoten und dem Zielknoten ebenso wie auf minimalem Aufwand zwischen benachbarten Knoten einen Wert. Auf höheren Zoomstufen berücksichtigt der Heuristikgenerator zusätzlich einen Search-Envelope-Faktor.
-
Eine beispielhafte Ausführungsform des Search-Envelope-Faktorgenerators berechnet diesen Faktor. Sie berechnet die Entfernung von dem aktuellen Knoten zu der Vorgewichtungsroute (d. h. der Route, die auf der vorhergehenden Zoomstufe berechnet wurde) als einen Knotenzähler und berechnet dann einen Faktor, der zunehmende Heuristikwerte für Knoten ergibt, die außerhalb die Search-Envelope fallen, welche die Vorgewichtungsroute umgibt. In einer beispielhaften Ausführungsform ist die Search-Envelope ein Bereich mit fester Breite, der die Vorgewichtungsroute umgibt, so dass die Suche im Inneren des Envelope zulässig ist und anderswo unzulässig ist.
-
Vorteilhafterweise ist die vorliegende Erfindung im Gegensatz zu der Hintergrundtechnik fähig, schnell lange Routen im Gelände mit hoher Qualität auf ressourcenbeschränkten Plattformen zu erzeugen. Auch ermöglicht die vorliegende Erfindung, Kompromisse zwischen der Routenqualität und der Berechnungszeit/Speichernutzung zu machen, indem die Search-Envelope verschmälert oder verbreitert wird. Auch verbessert die vorliegende Erfindung die Routenplanung auf groben Zoomstufen, indem sie schmale Bodenabdeckungsmerkmale, welche die Routenplanung beeinflussen (z. B. Umzäunungen, Straßen, Flüsse und Pfade), in allen Kartenauflösungen berücksichtigt.
-
Folglich werden in beispielhaften Aspekten der vorliegenden Erfindung ein System, ein Verfahren und ein Computerprogrammprodukt bereitgestellt, um eine Fahrtroute, einschließlich eines Kartengenerators zum Erzeugen von Karten auf mehreren Zoomstufen, zu erzeugen; und ein Routengenerator zum Erzeugen einer hoch aufgelösten Route basierend auf einer oder mehreren Routen mit geringer Auflösung, die aus den Karten bestimmt werden, die von dem Kartengenerator erzeugt werden.
-
Der Routengenerator gewichtet die Route mit hoher Auflösung zugunsten der Routen mit niedriger Auflösung mit einer Vorgewichtung, die sich mit der Entfernung zu den Routen mit geringer Auflösung ändert.
-
Die Graphiksuche des Routengenerators ist in Richtung von Knoten vorgewichtet, die näher an den Routen mit niedriger Auflösung sind.
-
Der Routengenerator begünstigt hoch aufgelöste Kandidatenrouten, die innerhalb eine Search-Envelope fallen, welche die nieder aufgelösten Routen umgibt.
-
Die Abmessungen der Search-Envelope hängen von der aktuellen Zoomstufe ab.
-
Das System, das Verfahren und das Computerprogrammprodukt umfassen ferner einen Heuristikgenerator, der hoch aufgelöste Kandidatenrouten begünstigt, die näher an den nieder aufgelösten Routen sind.
-
Der Heuristikgenerator gewichtet die hoch aufgelöste Route mit einer Vorgewichtung zugunsten der nieder aufgelösten Routen, die sich mit der Entfernung zu den nieder aufgelösten Routen ändert.
-
Die Graphiksuche des Heuristikgenerators ist in Richtung von Knoten vorgewichtet, die näher an den nieder aufgelösten Routen sind.
-
Der Heuristikgenerator begünstigt hoch aufgelöste Kandidatenrouten, die innerhalb eine Search-Envelope fallen, welche die nieder aufgelösten Routen umgibt.
-
Die Abmessungen der Search-Envelope hängen von der aktuellen Zoomstufe ab.
-
Der Kartengenerator vergrößert Kartenmerkmale auf niedrigeren Zoomstufen, um die Routenplanung zu verbessern.
-
Der Routengenerator gewichtet die hoch aufgelöste Route zugunsten der nieder aufgelösten Routen mit einer Vorgewichtung, die sich mit einer Entfernung zu den nieder aufgelösten Routen ändert.
-
Die Graphiksuche des Routengenerators ist in Richtung von Knoten, die näher an den nieder aufgelösten Routen sind, vorgewichtet.
-
Der Routengenerator begünstigt hoch aufgelöste Kandidatenrouten, die in eine Search-Envelope fallen, welche die nieder aufgelösten Routen umgeben.
-
Die Abmessungen der Search-Envelope hängen von der aktuellen Zoomstufe ab.
-
Noch andere Aspekte, Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung ohne weiteres offensichtlich, indem eine Anzahl von beispielhaften Ausführungsformen und Implementierungen, einschließlich der besten Art zur Ausführung der Erfindung, dargestellt wird. Die vorliegende Erfindung ist auch zu anderen und verschiedenen Ausführungsformen fähig, und ihre mehreren Einzelheiten können in verschiedener Hinsicht modifiziert werden, jeweils ohne vom Geist und Bereich der vorliegenden Erfindung abzuweichen. Folglich sind die Zeichnungen und Beschreibungen als von erläuterndem Wesen und nicht als einschränkend zu betrachten.
-
Kurze Beschreibung der Zeichnungen
-
Die Ausführungsformen der vorliegenden Erfindung werden in den Figuren der begleitenden Zeichnungen, in denen gleiche Bezugsnummern sich auf ähnliche Elemente beziehen, beispielhaft und nicht einschränkend dargestellt, wobei:
-
1: Gesamtes mehrfach aufgelöstes Routenplanungssystem
-
2: Kartengenerator
-
3: Routengenerator
-
4: Heuristikgenerator
-
5: Search-Envelope-Faktorgenerator
-
6: Einfach aufgelöstes Routenplanungsbeispiel
-
7: Mehrfach aufgelöstes Routenplanungsbeispiel, nieder aufgelöste Stufe
-
8: Mehrfach aufgelöstes Routenplanungsbeispiel, hoch aufgelöste Stufe
-
Detaillierte Beschreibung
-
1 zeigt eine beispielhafte Ausführungsform der vorliegenden Erfindung. Der Kartengenerator 108 wandelt Eingangsraster- und Vektorkartendaten in mehrfach aufgelöste Ausgangsrasterkartendaten um, die für die Routenplanung geeignet sind, und speichert sie in die Kartendatenbank 106. Der Routengenerator 100 erzeugt eine Route auf einer groben Zoomstufe und verfeinert sie dann unter Verwendung vorhergehender Routen auf höheren Zoomstufen, um die Suche einzugrenzen. Der Routengenerator 100 verwendet einen wohlbekannten Heuristik-basierten Wegsuchalgorithmus, wie etwa A*. Der Heuristikgenerator 102 erzeugt Heuristikwerte, die von dem Wegeplanungsalgorithmus verwendet werden. Auf der anfänglichen Zoomstufe gibt der Heuristikgenerator 102 Werte zurück, die aus der Entfernung des aktuellen Knotens zu dem Ziel und einem minimalen Aufwand zwischen benachbarten Knoten abgeleitet werden. Auf höheren Zoomstufen berücksichtigt der Heuristikgenerator 102 auch eine Search-Envelope, die Knoten weit weg von der Vorgewichtungsroute, die auf der vorhergehenden Zoomstufe erzeugt wurde, benachteiligt. Um diese Benachteiligung zu berechnen, stützt sich der Heuristikgenerator 102 auf den Search-Envelope-Faktorgenerator 104. Der Search-Envelope-Faktorgenerator 104 gibt einen Wert von 1 zurück, wenn der Knoten innerhalb der Search-Envelope ist, oder einen höheren Wert, wenn ein Knoten außerhalb der Search-Envelope ist. Knoten weiter entfernt von der Search-Envelope haben höhere Search-Envelope-Faktoren. Das Ergebnis ist, dass der Routengenerator 108 wenig Zeit verbraucht, um Knoten außerhalb der Search-Envelope, welche die auf der vorhergehenden Zoomstufe erzeugte Route umgibt, zu untersuchen.
-
2 zeigt eine beispielhafte Ausführungsform des Kartengenerators 108. Der Kartengenerator 108 wandelt Eingangsraster- und Vektorkartendaten in für die Routenplanung geeignete mehrfach aufgelöste Rasterkartendaten um und speichert sie in der Kartendatenbank 106. Typischerweise umfassen die Eingangskartendaten eine Rasterhöhenkarte und eine Vektorbodenbedeckungskarte. Die Rasterhöhenkarte gibt die Höhe des Lands an jedem Punkt auf der Karte an. Die Vektorbodenbedeckungskarte gibt die Art des Geländes (z. B. Feld, Wald, Straße oder Wasser) an jedem Punkt auf der Karte an. Der Kartengenerator 108 wandelt diese Eingangsraster- und Vektorkartendaten in mehrfach aufgelöste Ausgangskartendaten um, die für die Routenplanung geeignet sind. Um die eindeutigen Farben der Bodenbedeckungskarte bei gröberen Auflösungen zu bewahren, verwendet der Kartengenerator 108 die Nächste-Nachbar-Wiederabtastung (nearest neighbor resampling). Der Kartengenerator 108 zeichnet lineare Merkmale in die Eingangsvektorbodenbedeckungsdaten, welche die Routenplanung beeinflussen, wie etwa Umzäunungen, Straßen, Flüsse und Pfade, auf allen Zoompegeln in die Ausgangsrasterdaten. Dies hat die Wirkung, dass gewisse Kartenmerkmale auf niedrigeren Zoomstufen vergrößert werden, was die Routenplanung verbessert. Man kann ein geographisches Fremdinformationssystem-(GIS)Werkzeug, wie etwa Global Mapper oder ESRI ArcGIS verwenden, um dies zu erreichen. Unter Verwendung von Global Mapper kann man die Anwendung konfigurieren, um lineare Merkmale auf allen Zoomstufen mit der gleichen Dicke (z. B. zwei Pixel) zu zeichnen. Man kann dann mehrfach aufgelöste Rasterdaten in einer Vielfalt an Formaten, einschließlich Google oder Microsoft Tile- bzw. Bildelementsätze, exportieren. Der Kartengenerator 108 speichert diese Ausgangsrasterdaten in der Kartendatenbank 106.
-
In einer beispielhaften Ausführungsform enthält die Kartendatenbank 106 256 mal 256 Pixel-Bildelemente, die in einem tragbaren Netzgraphik-(PNG)Format gespeichert sind. Diese Bildelemente entsprechen Standards, die von Google (siehe „Google Maps Overlays", die aus dem World Wide Web unter code.google.com/apis/maps/) und Microsoft (siehe „Ging Maps Tile System", im World Wide Web verfügbar unter msdn.microsoft.com/enus/library/bb259689.aspx) für ihre Online-Karten entwickelt wurden. Beide diese Standards beginnen mit einem einzigen Bildelement, das bei der gröbsten Kartenauflösung – Zoomstufe 0 – den Globus abdeckt. Auf jeder anschließenden Zoomstufe teilen sie ein Bildelement in vier. Daher hat die Zoomstufe 1 4 Bildelemente, die den Globus abdecken, die Zoomstufe 2 hat 16 Bildelemente, die den Globus abdecken, etc.
-
-
3 zeigt eine beispielhafte Ausführungsform des Routengenerators 100. Bei Schritt 300 erhält der Routengenerator 100 die Entfernung zwischen den Start- und Zielknoten in Kilometer. Bei Schritt 302 berechnet der Routengenerator 100 eine Anfangszoomstufe unter Verwendung der folgenden Gleichung: Anfangszoomstufe = Boden(log2(156,250/Entfernung in Kilometern))
-
Wenn zum Beispiel die geradlinige Entfernung zwischen den Start- und Zielknoten einer Route 5 Kilometer ist, ist die Anfangszoomstufe: Anfangszoomstufe = Boden(log2(156,250/5)) = 14
-
Bei Schritt 304 erzeugt der Routengenerator 100 eine Route mit der Anfangszoomstufe. Um dies zu erreichen, verwendet eine beispielhafte Ausführungsform des Routengenerators 100 den Heuristik-basierten A*-Algorithmus. Der Heuristikgenerator 100 liefert Heuristikwerte, und die Kartendatenbank 106 liefert routenplanungsfähige Kartenbildbereiche für die aktuelle Zoomstufe. Bei Schritt 306 fragt der Routengenerator 100 die Kartendatenbank ab, um zu bestimmen, ob Karten mit höherer Auflösung verfügbar sind. Wenn ja, inkrementiert der Routengenerator 100 bei Schritt 308 die aktuelle Zoomstufe um eins (indem er z. B. von der Anfangszoomstufe 14 auf die aktuelle Zoomstufe 15 vorrückt). Bei Schritt 310 erhält der Routengenerator 100 die passende Search-Envelope-Breite für die aktuelle Zoomstufe aus der Search-Envelope-Nachschlagtabelle 314 (z. B. ist für die Zoomstufe 15 die Search-Envelope-Breite 18 Knoten). Bei Schritt 312 erzeugt der Routengenerator 100 unter Verwendung dieser Search-Envelope-Breite und der auf der vorhergehenden Zoomstufe erzeugten Route als eine Vorgewichtungsroute, was den Suchbereich wirksam begrenzt, eine Route mit der aktuellen Zoomstufe. Erneut stützt sich der Routengenerator 100 auf A*, um die Route zu erzeugen. Dieses Mal umfasst die Heuristik zusätzlich einen Search-Envelope-Faktor, der Knoten außerhalb der Search-Envelope, welche die Vorgewichtungsroute umgeben, benachteiligt. Wenn der Schritt 312 abgeschlossen ist, kehrt die Ausführung zu Schritt 306 zurück, um zu bestimmen, ob Karten mit höherer Auflösung übrig sind.
-
Fachleute der Technik werden erkennen, dass die vorliegende Erfindung für viele Wegsuchalgorithmen – nicht nur A* – Anwendung findet. Andere Heuristik-basierte Wegeplanungsalgorithmen umfassen die Greedy-Best-First-Suche, die iterative Tiefensuche von A* (IDA*), die rekursive Best-First-Suche (RBFS), die speicheroptimierte A* (MA*), die einfache speicheroptimierte A* (SMA*) und die Anytime repairable A* (ARA*) und Anytime-D*.
-
Fachleute der Technik werden erkennen, dass die Gleichung zum Berechnen einer Anfangszoomstufe bei Schritt 302 durch eine Nachschlagtabelle oder eine andere Gleichung ersetzt werden könnte, die für eine lange Route eine niedrige Anfangszoomstufe und für eine kurze Route eine hohe Anfangszoomstufe zurückgeben würde.
-
Fachleute der Technik werden erkennen, dass die die Search-Envelope-Nachschlagtabelle 314 auf verschiedene Anwendungen abgestimmt werden könnte. Zum Beispiel könnte man die Search-Envelope-Breiten verringern, um die Rechenzeit und den Speicherverbrauch auf ressourcenbeschränkten Plattformen zu verringern. Auch könnte man die Search-Envelope-Nachschlagtabelle 314 durch eine Gleichung ersetzen, die eine Zoomstufe auf eine passende Search-Envelope-Breite abbildet.
-
4 zeigt eine beispielhafte Ausführungsform des Heuristikgenerators 102. Bei Schritt 400 erhält der Heuristikgenerator 102 die Entfernung von dem aktuellen Knoten zu dem Zielknoten als einen Knotenzähler. Bei Schritt 402 erhält der Heuristikgenerator 102 den minimalen Aufwand zwischen benachbarten Knoten. Bei Schritt 404 erhält der Heuristikgenerator 102 den Search-Envelope-Faktor von dem Search-Envelope-Faktorgenerator 104. Bei Schritt 406 bestimmt der Heuristikgenerator 102, ob das System eine Route mit einer Anfangszoomstufe erzeugt. Wenn ja, berechnet er die Heuristik wie folgt (wobei n den aktuellen Knoten darstellt und Ziel den Zielknoten darstellt): Heuristik (n) = Entfernung (n, Ziel) × minimaler Aufwand zwischen benachbarten Knoten
-
Andernfalls berechnet der Heuristikgenerator 102 die Heuristik wie folgt: Heuristik (n) = Entfernung (n, Ziel) × minimaler Aufwand zwischen benachbarten Knoten × Search-Envelope-Faktor (n)
-
5 zeigt eine beispielhafte Ausführungsform des Search-Envelope-Faktorgenerators 104. Bei Schritt 500 erhält der Search-Envelope-Faktorgenerator 104 die Entfernung von dem aktuellen Knoten zu der Vorgewichtungsroute (d. h. der Route, die bei der vorhergehenden Zoomstufe erzeugt wurde) als einen Knotenzähler. Bei Schritt 502 erhält der Search-Envelope-Faktorgenerator 104 die Search-Envelope-Breite von dem Routengenerator 100. Bei Schritt 504 berechnet der Search-Envelope-Faktorgenerator 104 den Search-Envelope-Faktor unter Verwendung der folgenden Gleichung (wobei n den aktuellen Knoten darstellt): Search-Envelope-Faktor (n) = 1 + (Entfernung (n, Vorgewichtungsroute)/Search-Envelope-Breite)2
-
Bei Schritt 506 bestimmt der Search-Envelope-Faktorgenerator 104, ob der berechnete Search-Envelope-Faktor kleiner oder gleich 2 ist. Wenn ja, legt der Search-Envelope-Faktorgenerator 104 bei Schritt 508 den Search-Envelope-Faktor auf 1 fest. Dies stellt sicher, dass Knoten innerhalb der Search-Envelope oder ihrem Rand nicht mit höheren Aufwänden benachteiligt werden. Knoten außerhalb der Search-Envelope werden jedoch mit Aufwänden benachteiligt, die zunehmen, wenn die Vorgewichtungsroutenentfernung zunimmt.
-
Fachleute der Technik werden erkennen, dass jede Formel zum Einstellen der Heuristik, die in der Nähe der Vorgewichtungsroute klein ist, aber dann weit weg zunehmend groß wird, potentiell verwendet werden könnte.
-
Um die vorliegende Erfindung (ein mehrfach aufgelöstes Routenplanungssystem) besser zu verstehen, ist es hilfreich, es mit einem einfach aufgelösten Routenplanungssystem, wie etwa dem, das in den
US-Patenten 6 963 800 und
7 756 635 beschrieben ist, zu vergleichen. Beispielhafte Ausführungsformen beider Routenplanungssysteme verhelfen dem Heuristikbasierten A*-Algorithmus zum Durchbruch. Das einfach aufgelöste Routenplanungssystem verwendet eine Heuristik, welche die Entfernung eines Knotens zu dem Ziel und den minimalen Aufwand zwischen benachbarten Knoten eingearbeitet hat. Die Heuristik des mehrfach aufgelösten Routenplanungssystems fügt einen Search-Envelope-Faktor hinzu, der auf der Nähe eines Knotens zu einer Vorgewichtungsroute basiert, die mit einer vorhergehenden Zoomstufe erzeugt wurde.
-
6 zeigt ein einfach aufgelöstes Routenplanungsbeispiel. Der Suchalgorithmus ist A*. Die Heuristik ist: Heuristik (n) = Entfernung (n, Ziel) × minimaler Aufwand zwischen benachbarten Knoten
-
Das Aufwandsgitter 600 zeigt den Aufwand für das Durchqueren jedes Knotens. Der untere linke Knoten (0, 0) ist der Startknoten. Der obere rechte Knoten (5, 5) ist der Zielknoten. Jeder Knoten ist mit acht oder weniger benachbarten Knoten verbunden. Der minimale Aufwand zwischen benachbarten Knoten ist 1. Das Aufwandsgitter 600 stellt eine Bodenbedeckungskarte mit Pfaden mit niedrigem Aufwand (1) entlang der Ränder, Gras mit mittlerem Aufwand (2) in der Mitte und Bäumen mit hohen Kosten (5) oben rechts dar.
-
Bei Schritt 602 fügt der Algorithmus den Startknoten (0, 0) zu der Prioritätenwarteschlange von A* hinzu und aktualisiert seinen Schlüssel Der Aufwand, um den Knoten zu erreichen, ist 0. Die Entfernung zu dem Ziel ist 5. Daher ist der Schlüssel des Knotens gleich dem Aufwand, um das Ziel zu erreichen, plus die Entfernung mal der minimale Aufwand zwischen benachbarten Knoten = 0 + 5 × 1 = 5.
-
Bei Schritt 604 extrahiert der Algorithmus den Knoten (0, 0) aus der Warteschlange, fügt jeden benachbarten Knoten zu der Warteschlange hinzu und aktualisiert ihre Schlüssel. Der Aufwand, um den Knoten (0, 1) zu erreichen, ist 1. Die Entfernung zu dem Ziel ist 5. Daher ist der Schlüssel des Knotens 6. Der Aufwand, um den Knoten (1, 1) zu erreichen, ist 3. Seine Entfernung zum dem Ziel ist 4. Daher ist der Schlüssel des Knotens gleich 7. Der Aufwand, um den Knoten (1, 0) zu erreichen, ist 1. Seine Entfernung zu dem Ziel ist 5. Daher ist der Schlüssel des Knotens gleich 6.
-
Bei Schritt 606 sondert der Algorithmus den Knoten (0, 0) aus, extrahiert den Knoten (0, 1) und fügt die Knoten (0, 2) und (1, 2) zu der Warteschlange hinzu.
-
Bei Schritt 608 sondert der Algorithmus den Knoten (0, 1) aus, extrahiert den Knoten (1, 0) und fügt die Knoten (2, 0) und (2, 1) zu der Warteliste hinzu.
-
Bei Schritt 610 sondert der Algorithmus den Knoten (1, 0) aus, extrahiert den Knoten (1, 1) und fügt den Knoten (2, 2) zu der Warteschlange hinzu.
-
Bei Schritt 612 sondert der Algorithmus den Knoten (1, 1) aus, extrahiert den Knoten (0, 2) und fügt die Knoten (0, 3) und (1, 3) zu der Warteschlange hinzu.
-
Bei Schritt 614 sondert der Algorithmus den Knoten (0, 2) aus, extrahiert den Knoten (2, 0) und fügt die Knoten (3, 0) und (3, 1) zu der Warteschlange hinzu.
-
Bei Schritt 616 sondert der Algorithmus den Knoten (2, 0) aus, extrahiert den Knoten (1, 2) und fügt den Knoten (2, 3) zu der Warteschlange hinzu.
-
Bei Schritt 618 sondert der Algorithmus den Knoten (1, 2) aus, extrahiert den Knoten (2, 1) und fügt den Knoten (3, 2) zu der Warteschlange hinzu.
-
Bei Schritt 620 sondert der Algorithmus den Knoten (2, 1) aus, extrahiert den Knoten (0, 3) und fügt die Knoten (0, 4) und (1, 4) zu der Warteschlange hinzu.
-
Bei Schritt 622 sondert der Algorithmus den Knoten (0, 3) aus, extrahiert den Knoten (3, 0) und fügt die Knoten (4, 0) und (4, 1) zu der Warteschlange hinzu.
-
Bei Schritt 624 sondert der Algorithmus den Knoten (3, 0) aus, extrahiert den Knoten (2, 2) und fügt den Knoten (3, 3) zu der Warteschlange hinzu.
-
Bei Schritt 626 sondert der Algorithmus den Knoten (2, 2) aus, extrahiert den Knoten (1, 3) und fügt den Knoten (2, 5) zu der Warteschlange hinzu.
-
Bei Schritt 628 sondert der Algorithmus den Knoten (1, 3) aus, extrahiert den Knoten (3, 1) und fügt den Knoten (4, 2) zu der Warteschlange hinzu.
-
Bei Schritt 630 sondert der Algorithmus (3, 1) aus, extrahiert den Knoten (0, 4) und fügt die Knoten (0, 5) und (1, 5) zu der Warteschlange hinzu.
-
Bei Schritt 632 sondert der Algorithmus (0, 4) aus, extrahiert den Knoten (1, 5) und fügt die Knoten (2, 5) zu der Warteschlange hinzu.
-
Bei Schritt 634 sondert der Algorithmus (1, 5) aus, extrahiert den Knoten (2, 5) und fügt die Knoten (3, 5) und (3, 4) zu der Warteschlange hinzu.
-
Bei Schritt 636 sondert der Algorithmus (2, 5) aus, extrahiert den Knoten (3, 5) und fügt die Knoten (4, 5) und (4, 4) zu der Warteschlange hinzu.
-
Bei Schritt 638 sondert der Algorithmus (3, 5) aus, extrahiert den Knoten (4, 0) und fügt die Knoten (5, 0) und (5, 1) zu der Warteschlange hinzu.
-
Bei Schritt 640 sondert der Algorithmus (4, 0) aus, extrahiert den Knoten (4, 0) und fügt den Knoten (5, 2) zu der Warteschlange hinzu.
-
Bei Schritt 642 sondert der Algorithmus (5, 1) aus, extrahiert den Knoten (5, 2) und fügt die Knoten (5, 3) und (4, 3) zu der Warteschlange hinzu.
-
Bei Schritt 644 sondert der Algorithmus (5, 2) aus, extrahiert den Knoten (5, 3) und fügt den Knoten (5, 4) zu der Warteschlange hinzu.
-
Bei Schritt 646 sondert der Algorithmus (5, 3) aus und extrahiert den Knoten (2, 3).
-
Bei Schritt 648 sondert der Algorithmus (2, 3) aus und extrahiert den Knoten (3, 2).
-
Bei Schritt 650 sondert der Algorithmus (3, 2) aus und extrahiert den Knoten (1, 4).
-
Bei Schritt 652 sondert der Algorithmus (1, 4) aus und extrahiert den Knoten (4, 1).
-
Bei Schritt 654 sondert der Algorithmus (4, 1) aus und extrahiert den Knoten (0, 5).
-
Bei Schritt 656 sondert der Algorithmus (0, 5) aus und extrahiert den Knoten (5, 0).
-
Bei Schritt 658 sondert der Algorithmus (5, 0) aus und extrahiert den Knoten (3, 4).
-
Bei Schritt 660 sondert der Algorithmus (3, 4) aus und extrahiert den Knoten (4, 3).
-
Bei Schritt 662 sondert der Algorithmus (4, 3) aus und extrahiert den Knoten (3, 3).
-
Bei Schritt 664 sondert der Algorithmus (3, 3) aus und extrahiert den Knoten (2, 4).
-
Bei Schritt 666 sondert der Algorithmus (2, 4) aus und extrahiert den Knoten (4, 2).
-
Bei Schritt 668 sondert der Algorithmus (4, 2) aus und extrahiert den Knoten (4, 5) und fügt den Knoten (5, 5) zu der Warteschlange hinzu.
-
Bei Schritt 670 sondert der Algorithmus (4, 5) aus und extrahiert den Knoten (5, 4).
-
Bei Schritt 672 sondert der Algorithmus (5, 4) aus und extrahiert den Knoten (4, 4).
-
Bei Schritt 674 sondert der Algorithmus (4, 4) aus und extrahiert den Knoten (5, 5). Dies ist der Zielknoten, so endet die Suche.
-
Das Ergebnis ist die Route 676.
-
7 und 8 zeigen ein mehrfach aufgelöstes Routenplanungsbeispiel. 7 zeigt die Routenplanung mit einer niedrigen Auflösung, und 8 zeigt die Routenplanung mit einer hohen Auflösung. Bei der niedrigen Auflösung ist der Routenplanungsalgorithmus der gleiche wie in dem einfach aufgelösten Routenplanungsbeispiel.
-
Wir beginnen mit dem in 7 gezeigten nieder aufgelösten Routenplanungsbeispiel.
-
Das Aufwandsgitter 700 zeigt den Aufwand für das Durchqueren jedes Knotens in der nieder aufgelösten Karte. Der untere linke Knoten (0, 0) ist der Startknoten. Der obere rechte Knoten (2, 2) ist der Zielknoten. Jeder Knoten ist mit seinen acht oder weniger benachbarten Knoten verbunden. Der minimale Aufwand zwischen benachbarten Knoten ist 1. Dieses Aufwandsgitter 700 stellt eine Bodenbedeckungskarte mit Pfaden mit niedrigem Aufwand (1) entlang der Ränder, Gras mit mittlerem Aufwand (2) in der Mitte und Bäumen mit hohen Kosten (5) oben rechts dar. Obwohl die Pfade schmal sind, umfasst der Kartengenerator 108 sie in allen Zoomstufen, um die Routenplanung mit groben Zoomstufen zu verbessern.
-
Bei Schritt 702 fügt der Algorithmus den Startknoten (0, 0) zu der Prioritätswarteschlange hinzu und aktualisiert seinen Schlüssel. Der Aufwand, um den Knoten zu erreichen, ist 0. Die Entfernung zu dem Ziel ist 2. Daher ist der Schlüssel des Knotens gleich dem Aufwand, um das Ziel zu erreichen, plus die Entfernung zu dem Ziel mal dem minimalen Aufwand zwischen benachbarten Knoten = 0 + 2 × 1 = 2.
-
Bei Schritt 704 extrahiert der Algorithmus den Knoten (0, 0) aus der Warteschlange, fügt jeden benachbarten Knoten zu der Warteschlange hinzu und aktualisiert ihre Schlüssel. Der Aufwand, um den Knoten (0, 1) zu erreichen ist 1. Seine Entfernung zu dem Ziel ist 2. Daher ist der Schlüssel des Knotens gleich 3. Der Aufwand, um den Knoten (1, 1) zu erreichen, ist 3. Seine Entfernung zu dem Ziel ist 1. Daher ist der Schlüssel des Knotens gleich 4. Der Aufwand, um den Knoten (1, 0) zu erreichen, ist 1. Seine Entfernung zu dem Ziel ist 2. Daher ist der Schlüssel des Knotens gleich 3.
-
Bei Schritt 706 sondert der Algorithmus den Knoten (0, 0) aus, extrahiert den Knoten (0, 1) und fügt die Knoten (0, 2) und (1, 2) zu der Warteschlange hinzu.
-
Bei Schritt 708 sondert der Algorithmus den Knoten (0, 1) aus, extrahiert den Knoten (1, 2) und fügt die Knoten (2, 2) und (2, 1) zu der Warteschlange hinzu.
-
Bei Schritt 710 sondert der Algorithmus den Knoten (1, 2) aus, extrahiert den Knoten (1, 0) und fügt den Knoten (2, 0) zu der Warteschlange hinzu.
-
Bei Schritt 712 sondert der Algorithmus den Knoten (1, 0) aus und extrahiert den Knoten (2, 1).
-
Bei Schritt 714 sondert der Algorithmus den Knoten (2, 1) aus und extrahiert den Knoten (1, 1).
-
Bei Schritt 716 sondert der Algorithmus den Knoten (1, 1) aus und extrahiert den Knoten (0, 2).
-
Bei Schritt 718 sondert der Algorithmus den Knoten (0, 2) aus und extrahiert den Knoten (2, 0).
-
Bei Schritt 720 sondert der Algorithmus den Knoten (2, 0) aus und extrahiert den Knoten (2, 2). Dies ist der Zielknoten, so endet die Suche.
-
Das Ergebnis ist die nieder aufgelöste Route 722.
-
Wir gehen nun weiter zu dem in 8 gezeigten hoch aufgelösten Routenplanungsbeispiel.
-
Der Suchalgorithmus bleibt A*, aber nun ändert sich die Heuristik, um den Search-Envelope-Faktor aufzunehmen: Heuristik (n) = Entfernung (n, Ziel) × minimaler Aufwand zwischen benachbarten Kosten × Search-Envelope-Faktor (n)
-
Wobei: Search-Envelope-Faktor (n) = 1 + (Entfernung (n, Vorgewichtungsroute)/ Search-Envelope-Breite)2
-
Wenn der Search-Envelope-Faktor gleich oder weniger als 2 ist, legt der Algorithmus ihn auf 1 fest.
-
Für dieses Beispiel werden wird eine Search-Envelope-Breite von 1 verwenden.
-
Das Aufwandsgitter 800 ist das gleiche wie das, das wir in dem einfach aufgelösten Routenplanungsbeispiel verwendet haben. Dieses Mal haben wir jedoch eine zusätzliche Eingabe, die Vorgewichtungsroute 802. Die Vorgewichtungsroute 802 ist die, die wir gerade mit der niedrigen Auflösung erzeugt haben. Sie wird helfen, um die Routenerzeugung zu leiten und die Knotenuntersuchung mit der hohen Auflösung zu begrenzen. Die Entfernungskarte 804 zeigt die Entfernung jedes Knotens von dieser Vorgewichtungsroute an. Das Aufwandsgitter 800 stellt eine Bodenbedeckungskarte mit Pfaden mit niedrigem Aufwand (1) entlang der Ränder, Gras mit mittlerem Aufwand (3) in der Mitte und Bäumen mit hohen Kosten (5) oben rechts dar.
-
Bei Schritt 806 fügt der Algorithmus den Startknoten (0, 0) zu der Prioritätswarteschlange hinzu und aktualisiert seinen Schlüssel. Die Entfernung von der Vorspannungsroute ist 0. Daher ist der Search-Envelope-Faktor gleich 1 + (0/1)2 = 1. Der Aufwand, um den Knoten zu erreichen, ist 0. Die Entfernung zu dem Ziel ist 5. Daher ist der Schlüssel des Knotens gleich dem Aufwand, um das Ziel zu erreichen, plus die Entfernung zu dem Ziel mal dem minimalen Aufwand zwischen den benachbarten Kosten mal dem Search-Envelope-Faktor = 0 + 5 × 1 × 1 = 5.
-
Bei Schritt 808 extrahiert der Algorithmus den Knoten (0, 0) aus der Warteschlange, fügt jeden benachbarten Knoten zu der Warteschlange hinzu und aktualisiert ihre Schlüssel. Der Aufwand, um den Knoten (0, 1) zu erreichen, ist 1. Seine Entfernung zu dem Ziel ist 5. Sein Search-Envelope-Faktor ist 1. Daher ist der Schlüssel des Knotens 6. Der Aufwand, um den Knoten (1, 1) zu erreichen, ist 3. Seine Entfernung zu dem Ziel ist 4. Sein Search-Envelope-Faktor ist 1. Daher ist der Schlüssel des Knotens gleich 7. Der Aufwand, um den Knoten (1, 0) zu erreichen, ist 1. Seine Entfernung zu dem Ziel ist 5. Sein Search-Envelope-Faktor ist 1. Daher ist der Schlüssel des Knotens gleich 6.
-
Bei Schritt 810 sondert der Algorithmus den Knoten (0, 0) aus, extrahiert den Knoten (0, 1) und fügt die Knoten (0, 2) und (1, 2) zu der Warteschlange hinzu.
-
Bei Schritt 812 sondert der Algorithmus den Knoten (0, 1) aus, extrahiert den Knoten (1, 0) und fügt die Knoten (2, 0) und (2, 1) zu der Warteschlange hinzu. Dies ist der erste Fall, in dem wir auf Knoten getroffen sind, die außerhalb der einen Knoten breiten Search-Envelope sind. Die Knoten (2, 0) und (2, 1) sind beide zwei Knoten von der Vorgewichtungsroute weg. Als ein Ergebnis werden sie mit hohen Heuristikwerten benachteiligt, die zu hohen Schlüsselwerten (jeweils 27 und 24) führen. Zum Beispiel ist der Aufwand, um den Knoten (2, 0) von dem Startknoten 2 zu erreichen, 2. Seine Entfernung zu dem Zielknoten ist 5. Sein Search-Envelope-Faktor ist 1 + (2/1)2 = 5. Daher ist der Schlüssel des Knotens gleich 2 + 5 × 5 = 27. Da in diesem Beispiel die Knoten (2, 0) und (2, 1) derartig hohe Schlüsselwerte haben, wird der Algorithmus enden, bevor sie extrahiert werden.
-
Bei Schritt 814 sondert der Algorithmus den Knoten (1, 0) aus, extrahiert den Knoten (1, 1) und fügt den Knoten (2, 2) zu der Warteschlange hinzu.
-
Bei Schritt 816 sondert der Algorithmus den Knoten (1, 1) aus, extrahiert den Knoten (0, 2) und fügt die Knoten (0, 3) und (1, 3) zu der Warteschlange hinzu.
-
Bei Schritt 818 sondert der Algorithmus den Knoten (0, 2) aus, extrahiert den Knoten (1, 2) und fügt den Knoten (2, 3) zu der Warteschlange hinzu.
-
Bei Schritt 820 sondert der Algorithmus den Knoten (1, 2) aus, extrahiert den Knoten (0, 4) und fingt die Knoten (0, 4) und (1, 4) zu der Warteschlange hinzu.
-
Bei Schritt 822 sondert der Algorithmus den Knoten (0, 4) aus, extrahiert den Knoten (1, 3) und fügt den Knoten (2, 4) zu der Warteschlange hinzu.
-
Bei Schritt 824 sondert der Algorithmus den Knoten (1, 3) aus, extrahiert den Knoten (0, 4) und fügt die Knoten (0, 5) und (1, 5) zu der Warteschlange hinzu.
-
Bei Schritt 826 sondert der Algorithmus den Knoten (0, 4) aus, extrahiert den Knoten (1, 5) und fügt den Knoten (2, 5) zu der Warteschlange hinzu.
-
Bei Schritt 828 sondert der Algorithmus den Knoten (1, 5) aus, extrahiert den Knoten (2, 5) und fügt die Knoten (3, 5) und (3, 4) zu der Warteschlange hinzu.
-
Bei Schritt 830 sondert der Algorithmus den Knoten (2, 5) aus, extrahiert den Knoten (3, 5) und fügt die Knoten (4, 5) und (4, 4) zu der Warteschlange hinzu.
-
Bei Schritt 832 sondert der Algorithmus den Knoten (3, 5) aus, extrahiert den Knoten (2, 3) und fügt die Knoten (3, 3) und (3, 2) zu der Warteschlange hinzu.
-
Bei Schritt 834 sondert der Algorithmus den Knoten (2, 3) aus und extrahiert den Knoten (1, 4).
-
Bei Schritt 836 sondert der Algorithmus den Knoten (1, 4) aus und extrahiert den Knoten (0, 5).
-
Bei Schritt 838 sondert der Algorithmus den Knoten (0, 5) aus, extrahiert den Knoten (3, 4) und fügt den Knoten (4, 3) zu der Warteschlange hinzu.
-
Bei Schritt 840 sondert der Algorithmus den Knoten (3, 4) aus und extrahiert den Knoten (2, 4).
-
Bei Schritt 842 sondert der Algorithmus den Knoten (2, 4) aus, extrahiert den Knoten (4, 5) und fügt die Knoten (5, 5) und (5, 4) zu der Warteschlange hinzu.
-
Bei Schritt 844 sondert der Algorithmus den Knoten (4, 5) aus, extrahiert den Knoten (4, 4) und fügt den Knoten (5, 3) zu der Warteschlange hinzu.
-
Bei Schritt 846 sondert der Algorithmus den Knoten (4, 4) aus und extrahiert den Knoten (5, 5). Dies ist der Zielknoten, so endet die Suche.
-
Das Ergebnis ist die hoch aufgelöste Route 848.
-
In diesen Beispielen erzeugten die einfach aufgelösten und mehrfach aufgelösten Routenplanungssysteme identische Routen. Das einfach aufgelöste Routenplanungssystem fächerte 36 Knoten auf. Das mehrfach aufgelöste Routenplanungssystem fächerte für insgesamt 29 aufgefächerte Knoten in der nieder aufgelösten Karte 9 Knoten und in der hoch aufgelösten Karte 20 Knoten auf. Dies ist eine Leistungseinsparung von 19%. Außerdem musste das mehrfach aufgelöste System höchstens 20 Knoten in dem Speicher speichern, während das einfach aufgelöste System höchstens 36 Knoten in dem Speicher speichern musste. Dies ist eine Speichereinsparung von 44%.
-
In einer praktischen Testplanung mit 100 zufälligen null bis zehn Kilometer lange Routen im Gelände im Yosemite National Park verbesserte die Search-Envelope die Leistung um 37% und verringerte den Speicherverbrauch um 72%.
-
Die vorstehend beschriebenen Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 können zum Beispiel beliebige geeignete Server, Workstations, PCs, Laptopcomputer, PDAs, Internet-Endgeräte, Handgeräte, Mobilfunktelefone, drahtlose Vorrichtungen, andere elektronische Vorrichtungen und ähnliches umfassen, die fähig sind, die Verfahren der beispielhaften Ausführungsformen von 1 bis 8 durchzuführen. Die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 können unter Verwendung jedes geeigneten Protokolls miteinander kommunizieren und können unter Verwendung eines oder mehrerer programmierter Computersysteme oder Vorrichtungen implementiert werden.
-
Ein oder mehrere Schnittstellenmechanismen können mit den beispielhaften Ausführungsformen von 1 bis 8 verwendet werden, die zum Beispiel Internetzugang, Telekommunikation in jeder geeigneten Form (z. B. Sprache, Modem und ähnliches), drahtlose Kommunikationsmedien und ähnliches umfassen. Zum Beispiel können verwendete Kommunikationsnetze oder Verbindungen ein oder mehrere drahtlose Kommunikationsnetze, Mobilfunkkommunikationsnetze, Kabelkommunikationsnetze, Satellitenkommunikationsnetze, 3G-Kommunikationsnetze, öffentliche vermittelte Telefonnetze (PSTNs), Paketdatennetze (PDNs), das Internet, Intranets, WiMax Netze, eine Kombination daraus und ähnliches umfassen.
-
Es versteht sich, dass die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 für beispielhafte Zwecke sind, da, wie Fachleute der relevanten Technik(en) zu schätzen wissen, viele Variationen der spezifischen Hardware und/oder Software, die verwendet wird, um die beispielhaften Ausführungsformen zu implementieren, ebenfalls möglich sind. Zum Beispiel kann die Funktionalität einer oder mehrerer Vorrichtungen und Teilsysteme in den beispielhaften Ausführungsformen von 1 bis 8 über ein oder mehrere programmierte Computersysteme oder Vorrichtungen implementiert werden.
-
Um derartige Variationen ebenso wie andere Variationen zu implementieren, kann ein einziges Computersystem programmiert werden, um die Spezialfunktionen einer oder mehrerer der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 durchzuführen. Andererseits können zwei oder mehr programmierte Computersysteme oder Vorrichtungen jede der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 ersetzen. Folglich können auch die Prinzipien und Vorteile der verteilten Verarbeitung, wie etwa Redundanz, Wiederholung und ähnliches, nach Wunsch ebenfalls implementiert werden, um die Robustheit und Leistung der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 zu erhöhen.
-
Die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 können Informationen speichern, die sich auf die verschiedenen hier beschriebenen Verfahren beziehen. Die Informationen können in einem oder mehreren Speichern, wie etwa einer Festplatte, einer optischen Platte, einer magnetooptischen Platte, einem RAM und ähnlichem, der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 gespeichert werden. Eine oder mehrere Datenbanken der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 können die Informationen speichern, die verwendet werden, um die beispielhaften Ausführungsformen der vorliegenden Erfindung zu implementieren. Die Datenbanken können unter Verwendung von Datenstrukturen (z. B. Datensätzen, Tabellen, Feldern, Graphen, Bäumen, Listen und ähnlichem), die in einem oder mehreren Speichern oder Speichervorrichtungen enthalten sind, die hier aufgeführt sind, organisiert werden. Die Verfahren, die in Bezug auf die beispielhaften Ausführungsformen von 1 bis 8 beschrieben sind, können geeignete Datenstrukturen zum Speichern von Daten umfassen, die durch die Verfahren der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 in einer oder mehreren ihrer Datenbanken gesammelt und/oder erzeugt werden.
-
Alle oder ein Teil der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 können, wie für Fachleute der Computer- und Softwaretechniken zu schätzen gewusst wird, in geeigneter Weise unter Verwendung eines oder mehrerer Universalcomputersysteme, Mikroprozessoren, digitaler Signalprozessoren, Mikrocontroller und ähnlichem implementiert werden, welche gemäß den Lehren der beispielhaften Ausführungsformen der vorliegenden Erfindung programmiert sind. Geeignete Software kann, wie von Fachleuten der Softwaretechnik zu schätzen gewusst, basierend auf den Lehren der beispielhaften Ausführungsformen ohne weiteres von Programmierern mit gewöhnlichen Kenntnissen erzeugt werden. Außerdem können die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8, wie von Fachleuten in der/den elektrischen Techniken zu schätzen gewusst, durch die Herstellung anwendungsspezifischer integrierter Schaltungen oder durch Verbinden eines geeigneten Netzes aus herkömmlichen Komponentenschaltungen implementiert werden. Somit sind die beispielhaften Ausführungsformen nicht auf irgendeine spezifische Kombination der Hardwareschaltungsanordnung und/oder Software beschränkt.
-
Auf irgendeinem oder auf einer Kombination von computerlesbaren Medien gespeichert, können die beispielhaften Ausführungsformen der vorliegenden Erfindung Software zum Steuern der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8, zum Antreiben der Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 umfassen, um die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 in die Lage zu versetzen, mit einem menschlichen Benutzer und ähnlichem zu interagieren. Derartige Software kann Vorrichtungstreiber, Firmware, Betriebssysteme, Entwicklungswerkzeuge, Anwendungssoftware und ähnliches umfassen, ist aber nicht darauf beschränkt. Derartige computerlesbare Medien können ferner das Computerprogrammprodukt einer Ausführungsform der vorliegenden Erfindung umfassen, um die gesamte oder einen Teil (wenn die Verarbeitung verteilt ist) der Verarbeitung durchzuführen, die in der Implementierung der beispielhaften Ausführungsformen von 1 bis 8 durchgeführt wird. Die Computercodevorrichtungen der beispielhaften Ausführungsformen der vorliegenden Erfindung können jeden geeigneten interpretierbaren oder ausführbaren Codemechanismus, einschließlich Skripte, interpretierbare Programme, Dynamic-Link-Libraries (DLLs), Java-Klassen und Applets, vollständige ausführbare Programme, Common-Object-Request-Broker-Architecture-(CORBA) Objekte und ähnliches, umfassen, sind aber nicht darauf beschränkt. Überdies können Teile der Verarbeitung der beispielhaften Ausführungsformen der vorliegenden Erfindung für eine bessere Leistung, Zuverlässigkeit, Kosten und ähnliches verteilt werden.
-
Wie vorstehend dargelegt, können die Vorrichtungen und Teilsysteme der beispielhaften Ausführungsformen von 1 bis 8 computerlesbare Medien oder Speicher zum Halten von Anweisungen, die gemäß den Lehren der vorliegenden Erfindung programmiert sind, und zum Halten von Datenstrukturen, Tabellen, Datensätzen und/oder anderen hier beschriebenen Daten umfassen. Das computerlesbare Medium kann jedes geeignete Medium umfassen, das dabei mitmacht, Anweisungen für einen Prozessor zur Ausführung bereitzustellen. Ein derartiges Medium kann viele Formen, einschließlich nichtflüchtige Medien, flüchtige Medien, Übertragungsmedien und ähnliches, annehmen, ist aber nicht darauf beschränkt. Nichtflüchtige Medien können zum Beispiel optische oder magnetische Platten, magnetooptische Platten und ähnliche umfassen. Flüchtige Medien können dynamische Speicher und ähnliche umfassen. Übertragungsmedien können Koaxialkabel, Kupferdraht, Glasfasern und ähnliches umfassen. Übertragungsmedien können auch die Form akustischer, optischer, elektromagnetischer Wellen und ähnlicher, wie etwa die, die während Funkfrequenz-(RF-)Kommunikationen, Infrarot-(IR)Kommunikationen und ähnlichen erzeugt werden, annehmen. Übliche Formen von computerlesbaren Medien können zum Beispiel eine Diskette, eine flexible Magnetplatte, eine Festplatte, ein Magnetband, jedes andere geeignete magnetische Medium, eine CD-ROM, CDRW, DVD, jedes andere geeignete optische Medium, Lochkarten, Lochstreifen, optische Markierungsbelege und jedes andere geeignete physikalische Medium mit Muster aus Löchern oder anderen optisch erkennbaren Hinweisen, einen RAM, einen PROM, einen EPROM, einen FLASH-EPROM, jeden anderen geeigneten Speicherchip oder Kassette, eine Trägerwelle oder jedes andere geeignete Medium, von dem ein Computer lesen kann, umfassen.
-
Während die vorliegende Erfindung in Verbindung mit einer Anzahl beispielhafter Ausführungsformen und Implementierungen beschrieben wurde, ist die vorliegende Erfindung nicht so beschränkt, sondern deckt vielmehr verschiedene Modifikationen und äquivalente Anordnungen ab, die in den Bereich der beigefügten Patentansprüche fallen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 6963800 [0002, 0004, 0043, 0055]
- US 7756635 [0002, 0004, 0043, 0055]
-
Zitierte Nicht-Patentliteratur
-
- Seiten 93 bis 99 von „Artificial Intelligence: A Modem Approach, Third Edition” von Stuart Russel und Peter Norvig [0004]
- Seiten 101 bis 102 von „Artificial Intelligence: A Modern Approach, Third Edition” [0005]
- ”ARA*: Anytime A* with Provable Bounds an Sub-Optimality” von Maxim Likhachev, Geoff Gordon und Sebastian Thrun [0006]
- „An optimal pathfinder or vehicles in real-world digital terrain maps” von F. Markus Jönsson [0007]
- „Google Maps Overlays”, die aus dem World Wide Web unter code.google.com/apis/maps/ [0042]
- „Ging Maps Tile System”, im World Wide Web verfügbar unter msdn.microsoft.com/enus/library/bb259689.aspx [0042]