BRouter: offline Fahrrad-Routing für Android

Also Osmand ist die zweitbeste Sprachführung, die ich kenne und nutze. Die beste ist meiner Meinung nach die des Oziexplorers unter Windows Mobile. GArmin ist nicht brauchbar und Locus zu unzuverlässig.

Bei Osmand hat man immer noch nicht gelöst, was Victor auf Englisch das Wenkelproblem nennt. Man fährt auf eine Kreuzung zu, und bekommt statt leicht rechts scharf rechts gesagt. Dies hat etwas mit unzureichenden OSM-Daten zu tun.

Brouter und Osmand sollten aber meiner Meinung eine Sache lösen. Wenn was schief geht, sind es nach Entwicklermeinung ganz gerne die unzureichenden OSM-Daten. Da es aber ähnliche Fehlersituationen sind, sollte man sich vielleicht Heuristiken einfallen lassen, um solche Fehlersituationen zu erkennen und mit ihnen umzugehen.

Z.B. highway berührt in der graphischen Darstellung den anderen highway, sind aber nicht verbunden. Ich würde mal behaupten, wenn es zwei highway=track sind, dann dürfte das de facto ein Fehler sein. highway=track highway=motorway sollten getrennt bleiben.

Heuristiken mögen nützlich sein, um problematischen Situationen (nahe aber nicht verbunden, Kreuzung ohne Verbindung, …) zu erkennen. Allerdings ist es ohne Ortskenntnisse (oder manchmal sehr guten Luftbildern) nicht entscheidbar, ob das nun real so ist oder ob ein Datenfehler vorliegt.

Da erwartest du zuviel von den Routern. Sie sollen ein Problem automatisiert lösen, was aus gutem Grund nicht automatisiert korrigiert wird.

Edbert (EvanE)

Gibt es irgendwo eine Doku zu den Profildateien?
Was heißt z.B.
assign downhillcost switch consider_elevation 60 0
assign downhillcutoff 1.5
assign uphillcost 0
assign uphillcutoff 1.5

Ich hätte eher vermutet, das uphill Kosten verursacht und nicht downhill. :sunglasses:

Chris

Hallo Chris

Es gibt durchaus Leute, die ungern steile Straßen abwärts fahren, da es ihnen dann zu schnell wird. Es soll sogar Leute geben, die in solchen Situationen lieber absteigen und das Fahrrad schieben.

Aufwärts empfinden solche Leute als sicherer, da die Geschwindigkeit sehr viel niedriger liegt.

Edbert (EvanE)

http://brensche.de/brouter/profile_developers_guide.txt

Was hoch geht muss auch wieder runter… Von daher ist es egal, was man zählt. Der Unterschied ist nur, dass man dararuf diese 1,5% Cutoff anwenden kann, also entweder flache Abstiege und/oder flache Aufstiege bevorzugen gegenüber steilen Strecken.

Dazu zähl ich mich nicht. Bei mir kann es downhill schonmal 3 stellig werden. :sunglasses:

Nun ja, es ist dein Leben.
Hoffentlich hast du hervorragende Bremsen.

@abrensch: Für eine einfache Strecke oder einen Rundkurs gilt deine Aussage
“Was hoch geht muss auch wieder runter”
nur begrenzt. Oder berücksichtigst du die Richtung der Route nicht?

Edbert (EvanE)

Man kann sowas ähnliches machen mit 2 nogo-Kreisen, zwischen denen der “via-around” als Durchgang frei bleibt.

Was mit via-Punkten ja ohnehin schwierig ist, ist dass man damit nicht dynamisch neu berechnen kann, weil man ja nie genau weiss, ob man einen via-Punkt jetzt noch beachten muss oder man ja “eigentlich” schon dran vorbei ist, ohne ihn wirklich erreicht zu haben. Nogo-Areas haben dieses Problem nicht, weshalb sie als Planungs-Hilfsmittel in Verbindung mit dynamischer Neuberechnung die bessere Wahl sind (DAfür bringen sie aber bei der Rechenzeit nicht den selben Gewinn wie via-Punkte)

Wenn ich sowas wie “via-around” implementieren würde, würde ich’s also wohl intern auch über einen Kostenaufschlag für die Nachbargebiete abbilden.

Wenn wir BRouter das erste Mal öffnen wollen, erhalten wir die Meldung “Enter SDCARD base dir: (no basedir configured previously) /mnt/sdcard” angezeigt. Sobald wir auf OK drücken erscheint danach jedesmal die Meldung “An Error occured: from-position not found! (coordinate-source: /mnt/sdcard/oruxmaps)” beim Start der App. OruxMaps ist auf dem Android installiert. Welcher Pfad müssen wir beim ersten Start angeben?

Die Fehlermeldung “from-position not found!” belegt eigentlich, dass mit dem Pfad alles in Ordnung ist (D.h. BRouter benutzt das selbe Basisverzeichnis wie Oruxmaps), es fehlen einfach nur die Wegpunkte “from” und “to”, die Du im Oruxmaps anlegen musst, um BRouter zu sagen, von wo nach wo er routen soll.

Da steht:

Download the file "brouter_0_8.zip" 

Ich finde die nicht. Ixh nehme an, Du meinst http://brensche.de/brouter/BRouter.apk

@abrensch: Vielen Dank für die schnelle Antwort. Nun erscheinte bei uns noch eine andere Meldung "An Error occured: The segments-directory /mnt/sdcard/brouter/segments2 contains no routing data files (*.rd5). see … Habe mir dann die readme.txt Datei mal genauer durchgelesen. Und siehe da. Wer lesen kann, ist klar im Vorteil. Wir mussten noch eine der *.rd5 Dateien extra herunterladen. Jetzt sollte alles supi funktionieren. Besten Dank.

Da redest Du jetzt jetzt aber von Fahrrad-Navigation? Ich glaub bei Auto-Navigation sind die Marktführer schon noch einen Schritt weiter.

Bei OsmAnd ist vieles noch nicht gelöst, nur in dem Fall kann es schlicht nichts mit unzureichenden OSM-Daten zu tun haben, weil OsmAnd an dieser Stelle die OSM-Daten überhaupt nicht nutzt, sondern ausschliesslich den berechneten Track verwendet.

Ich denke in der Tat, dass es genau hier den Preis zu gewinnen gibt. Wie schon gesagt, ich experimentiere zur Zeit mit der Integration in OsmAnd und beutzte dazu BRouter als Online-Dienst. Habe mir dazu OsmAnd so gepatched, dass es meinen Server kontaktiert statt den des konfigurierten Dienstes und einen gesonderten Dienst auf dem Server gestartet. Die automatischen Neuberechnungen sind schon ein echter Vorteil. Wenn ich das jetzt noch so hinkriege, dass es komplett offline läuft, langstreckenfähig und voll konfiguriertbar ist (=Profil + nogo-Areas), dann wäre das schon nicht schlecht, wenn da nicht diese grottenschlechten Sprachansagen wären.

Und da denk ich drüber nach, ob man nicht als ersten Schritt zur Integration zunächst mal den Neuberechnungstrigger und die Sprachausgaben in BRouter abbilden kann und damit erstmal die “Hemdentaschen-Navigation” brauchbar kann. Und ob man dann noch selbst eine offline-Karte rendert oder eine definierte Schnittstelle zu maptools baut, die das übernehmen, würde sich dann schon ergeben.

Wow! Das hört sich sehr vielversprechend an :).

Hallo,
leider reichen meine Kenntnisse nicht aus um Brouter mit Oruxmaps zu verbinden.
Gelingt mir die Speicherung der Webseite am PC, verzweifel ich damit am
Android Tablet.
Wie so wir nicht einfach eine GPX Datei heruntergeladen wenn man bei der
Onlinerversion das entsprechende Feld anklickt?

edit:

Ich kann mittlerweile meine Frage selbst beantworten.

Erzeugen der Textseite aus der Online Version von Brouter mit Firefox.
Alles markieren durch längeres Drücken auf das Textfeld.
Kopieren durch längeres drücken auf das Textfeld.
Einen Texteditor öffen, hier Office Suite Pro, drücken auf leeres Textfeld, der Text wird eingefügt.
Speichern als txt Datei.
Umbenennen mit einem File Explorer in *.gpx
Die GPX Datei mit Oruxmaps öffnen.

Es wäre toll wenn das etwas einfacher funktionieren würde.
Danke an das tolle Programm an den Autor.
jörg

Heute habe ich die Version 0.9 veröffentlicht, die grundsätzlich das neue Location-Matching verwendet. Und es ist auch nicht mehr spürbar langsamer.

Es werden also Wegpunkte jetzt immer so zu Wegen gematched, dass der nächstgelegene Weg verwendet wird, der im Routing-Profil erlaubt ist.

Klingt wie ein unwesentliches Detail und ist es auch, wenn man die Wegpunkte selber setzt, aber für die Integration in ein Navigationssystem mit automatischer Neuberechnung ist es natürlich ganz wesentlich.

Und ich betreibe auch schon einen Online-Service und wer’s probieren will und hacken kann, kann ja mal in OsmAnd die URL für yournavigation durch meine ersetzen, damit OsmAnd solche URLs ruft:

http://h2096617.stratoserver.net:7777/brouter?format=kml&flat=49.565883&flon=8.799297&tlat=49.563606&tlon=8.811764&v=motorcar&fast=1&layer=mapnik%20HTTP/1.1

Super Arndt.
Wenn du mir jetzt noch verraten tust, welche Datei man in Osmand hacken muß, wo sie zu finden ist und welche Zeile durch was zu ersetzen ist.LG Volker

Suche mal nach “www.yournavigation.org/api/1.0/gosmore.php?format=kml” in den Java-Dateien und ersetze das durch “h2096617.stratoserver.net:7777/brouter?format=kml”.

Ich bin wieder einen schönen Schritt weiter, indem ich diesen “Online-Dienst” auf dem Telefon laufen lasse, womit es dann natürlich ein Offline-Dienst wird, aber das ist ja mein Ziel, eine voll-konfigurierbare Offline-Lösung zu schaffen, weshalb ich über diese Online-Spielereien auch garnicht so viel reden wollte. Insbesondere die Möglichkeit, in einem integrierten Routing mit automatischer Neuberechnung auch Sperrgebiete zu berücksichtigen hatte ich vorher nicht. Das geht jetzt.

Das ist schon ganz cool, und ich habe dazu dier Version BRouter 0.9.1 deployed, die diesen Android Dienst startet. Der notwendige Patch zu OsmAnd ist aber leider immer noch nur Hackern zugänglich, funktioniert wie oben beschrieben, nur dass es statt “h2096617.stratoserver.net:7777” dann “localhost:17777” heisst, damit OsmAnd auf einen lokal laufenden Service zugreift.

Ich habe selber von einem cleveren User eine Anleitung bekommen, wie man den Patch mit dem “apktool” hinkriegt, ohne OsmAnd wirklich von den Sourcen bauen zu müssen.

Ich würde ja gerne ein gepatches OsmAnd APK zur Verfügung stellen, aber das lässt die Lizenz wohl nicht zu.

Das mit dem Offline interface ist ein “uraltes” Thema (alt gemessem am Tempo der Entwicklung auf diesem Feld), siehe hier:

https://groups.google.com/forum/?fromgroups#!topic/osmand/paCDL5_xHkk

https://groups.google.com/forum/?fromgroups#!msg/osmand/CTwTvlKSHKQ/Bz98kmpxxD0J

Und das Thema ist auch noch nicht zu Ende, ein “entgültiges” Offline-Interface, was dann auch in die OsmAnd releases eingehen könnte, braucht sicher noch bisschen Hirnschmalz, und insbesondere die schnelle, partielle Neuberechnung, die ich unter dem Zwiten dieser Links mal beschrieben hatte, die muss ich jetzt endlich mal machen.

Hallo,

darf ich mal kurz dazwischen funken?

Kann man den BRouter nicht unter Verwendung der “INTENTS” -Schnittstelle mit OruxMaps “verheiraten”. Da steht zum Beispiel im Manual unter anderem folgendes:

OruxMaps INTEGRATION

…You can also show a route based on a set of points and / or waypoints:
//Offline map on current position
//Intent i = new Intent("com.oruxmaps. VIEW_MAP_OFFLINE ");
//Online map
Intent i = new Intent(“com.oruxmaps.VIEW_MAP_ONLINE”);
//Waypoints
double[] targetLat = {33.4,8.3,22.2};
double [] targetLon = {33.4,8.3,22.3};
String [] targetNames = {“point alpha”,“point beta”};
i.putExtra(“targetLat”, targetLat);
i.putExtra(“targetLon”, targetLon);
i.putExtra(“targetName”, targetNames);
//Track points
double[] targetLatPoints = {33.43,8.32,22.24};

Ich habe aber keine Ahnung was Intents sind. Mit diesen kann man wohl ein Programm von einem anderen Programm fernsteuern, falls ich das richtig verstanden habe. Eventuell kann man dort im Forum erforderliche Intents vorschlagen, um BRouter nahtlos zu integrieren

…oder liege ich da voll daneben?
…dann SORRY…

Viele Grüsse
Achim