PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] OpenStreetMap / Routenberechnung



arnoa
07.12.2011, 15:40
Hallo!

Nachdem meine Indoor Navigation/Lokalisierung gerade im Entstehen ist möchte ich auch gleich eine Outdoorfähige Navigation implementieren.
Ziel ist es meinem Bot Startkoordinaten (aktuelle Position) und Zielkoordination mitzuteilen - danach soll er sich per OpenStreetMap einen geeigneten Weg suchen und sich dann zum Ziel begeben.

Hat jemand schon eine Routenfunktion mit Openstreetmap umgesetzt und kann mir diesbezüglich ein wenig Input geben? GPS würde für diesen Fall maximal unterstützend wirken (zu ungenau) und somit eigentlich nur die grobe Richtung vorgeben. Den Rest möchte ich bzw. habe ich zum Teil schon mit OpenCV umgesetzt.


Großes Ziel - mein Bot soweit zu bringen dass er sich selbstständig durch urbanes Gelände bewegen kann ;)
Danke, Arno

arnoa
12.12.2011, 14:04
Habe nun mein Offline-Navi soweit laufen. Bin schon soweit dass ich die Daten in einer Postgres DB importieren kann, und in Postgres meine Query absetzten kann um den kürzesten Weg zu finden.

Aktuelles Problem derzeit - die Navigation bezieht sich bzw. ist nur funktional wenn ich Straßen als Start/Ziel wähle. Ich habe keine Möglichkeit z.B. in meinem Trainingspark (Donaupark) zu navigieren. Die Wege werden zwar alle in OSM dargestellt, aber irgendwie scheint es dass die Daten dann doch nicht zur Verfügung stehen.
Liegt es an osm2po oder an OSM selber - kennt jemand das Problem?
Kann fast nicht glauben dass ich der einzige bin der mit OSM bzw. osm2po arbeitet?!

Danke schon mal!
LG, Arno

lokirobotics
13.12.2011, 17:00
Ich arbeite gelegentlich auch mit OSM. In den Karten steht alles, was man wissen muss.

Jegliche Wege, Flächen etc. sind Geometrische Figuren mit Koordinatenangaben.
Dazu steht auch immer der Typ.
Wenn du dir aus den interessanten Geländeabschnitten einen Graph erstellst solltest du da auch ohne Probleme navigieren können.
Was ist osm2po?

arnoa
13.12.2011, 17:44
Mit osm2po bringe ich die OSM Daten in eine Postgresql Datenbank. Dort mache ich mit pgRouting die Routenberechnung – das funktioniert im Grunde schon ganz gut aber eben noch nicht perfekt. osm2po hat auch ein Web-GUI mit dem mitunter Routen grafisch dargestellt werden.

Meine Probleme liegen jetzt nur noch beim pgRouting. pgRouting bzw. die Postgres Functions bringe ich nicht dazu z.B. nur Wege (footway) zur Routenberechnung zu nehmen. Hier werden immer noch Straßen mitberücksichtig – was ich in meinem Fall ausschließen möchte da ich meinen Bot nur innerhalb eines Parks (keine öffentlichen Straße) navigieren lassen möchte.

lokirobotics
13.12.2011, 19:53
Gibt's die Möglichkeit, bestimmte Layer beim Konvertieren auszuschliessen?

arnoa
13.12.2011, 21:58
Genau bei diesem Problem hänge ich im Moment ;(
pgRouting bietet eine Postgres-Function shortest_path - diese bietet selbst keine Parameter. Soweit ich jetzt gelesen habe kann man die Wege/Strasse/... über cost irgendwie regulieren - da bin noch am suchen und rumprobieren ...

Hast Du zufällige mit OSM in Verbindung mit Postgres Erfahrung?

lokirobotics
13.12.2011, 22:16
Nein, überhaupt nicht.
Ich mache die Sachen immer lieber selbst. Dann weiß ich auch genau, was abläuft. ;D

Ich denke mal, ne Straße wird wesentlich niedrigere Kosten haben, als (unbefestigte) Wege. Vielleicht kann man ja ne cost range angeben?

markusj
13.12.2011, 23:44
Während eines Praktikums an der Uni habe ich an einem OpenStreetMap-Routenplaner gearbeitet, auf Java-Basis. Die dabei gewonnene Erkenntnis (vor ca. zwei Jahren): Das OSM-Kartenmaterial ist hübsch anzusehen, aber für Routingzwecke nicht ohne Zusatzarbeit geeignet, da das Format butterweich ist (keine einheitlichen Standards und Computer sind nicht gut darin, Zusammenhänge zu erraten). Außerdem gibt es teilweise hässliche kleine Lücken im Kartenmaterial, die Optisch nicht zu erkennen sind, aber Pfade unterbrechen. Vielleicht hat sich da im Rahmen von Aufräumarbeiten/Verbesserungen inzwischen was getan, aber ich glaube kaum dass das Grundproblem, nämlich viele verschiedene Umschreibungsmöglichkeiten für das gleiche, behoben wurde.

mfG
Markus

PS: Mich würde Mal die Performance der Postgres-Lösung interessieren ... Könntest du da Mal Zahlen für entsprechendes Kartenmaterial +Routen nennen?

arnoa
14.12.2011, 12:02
@lokirobotics: das mit den Costs scheint der richtige Ansatz für meine Problemstellung zu sein. Werde mich in den nächsten Tagen mal damit herumspielen.

@Markus: Du hast natürlich recht was die Qualität von OSM angeht - ist halt free und doch relativ gut und einfach zu nutzen. Bei meinen Testumgebungen bin ich bisher noch nie auf Probleme wie von Dir beschrieben gestoßen - muss aber natürlich dazu sagen dass die paar Parks die ich derzeit zum Testen verwende nicht wirklich aussagekräftig sind was die allgemeine Qualität von OSM betrifft.

Welche Zahlen hättest Du den gerne? Ich habe heute nochmal die Österreichdaten neu gemacht, dazu folgendes:
- austria.osm.pbf (171.631KB) von geofabrik.de
- osm2po / erzeugen des SQL Files -> 1 Minute 15 Sekunden
- Resultierendes SQL File -> 252.993KB
- 16.883.768 Nodes
- Import des SQL Files in Postgres -> 1 Minute 43 Sekunden
- 614.527 Datensätze
- Testabfrage von Wien/Stephansplatz 1 -> NACH -> Bregenz/Römerstrasse1
=> 1.629 Rows in 3.252 ms mit shortest_path
=> 1.629 Rows in 5.602 ms shortest_path_astar
Anmerkung zur Postgres: ich habe die DB bzw. Tabellen noch in keinster Weise optimiert. Soweit ich Postgres kenne kann man da sicher noch einiges rausholen. Ist für meine "Minikarten" aber einfach nicht notwendig.

Mein System: Win7 64Bit, 8GB Ram, Corei7-2600/3.4GHz

LG, Arno

EDIT: Habe jetzt auch noch direkt mit dem osm2po WebUI getestet - die Routenberechnung scheint damit um ein gutes Stück schneller zu sein wie die Abfrage mit meiner PostgresDB. Schätzte hier die Abfragezeit auf unter zwei Sekunden.

markusj
14.12.2011, 12:56
Hui, das ist schnell. Klingt nach viel Know-How im Hintergrund. Danke für die Info, wir hatten damals u.A. mit Karlsruhe, Liechtenstein, Luxembourg, Portugal, Manhattan, dem Vatikan und Portugal gearbeitet, wobei letzteres schon sehr Grenzwertig lief (Das Rendering, weniger das Routing). Ach ja, alles auf nem kleinen Dualcore-Notebook mit 2GB RAM ;)

mfG
Markus

arnoa
14.12.2011, 13:29
Ja, ich denke auch dass hier ziemlich viel im Hintergrund gemacht wird. osm2po ist für meine Zwecke optimal - vielen Dank an dieser Stelle an Carsten (www.osm2po.de (http://www.osm2po.de)), der mich bei meinen Problem unterstützt hat und mir SEHR weitergeholfen hat!!!!
Mit dem letzten Imput von Carsten habe ich mein Ziel erreicht -> Routenberechnung welche mir die genauen Wegpunkte bzw. Koordinaten bis zum Ziel ausgibt. Wenn es das Wetter zulässt geht´s in den nächsten Tagen wieder mal in einen Live-Outdoor Test, voraussichtlich im Donaupark ;)