BRouter: offline Fahrrad-Routing für Android

Mittlerweile ist die Technik umgestellt, BRouter implementiert seit Version 0.93 eine Android-spezifische Dienste-Schnittstelle und OruxMaps in der Version 5.5.3 (= aktuell in Google-Play) ruft diese Schnittstelle.

Damit gibt’s keine Probleme mehr mit dem Dienst-Lebenszyklus (da muss kein Dienst laufen, OruxMaps startet ihn einfach) und damit gibt’s auch nicht mehr die “voller Internetzugang” Berechtigung bei BRouter (ist ja schliesslich eine Offline-App…)

Ich hab’ an der “anderen Stelle” heute noch bisschen was geschrieben zur Konfiguration.

https://groups.google.com/forum/#!topic/osm-android-bikerouting/dAGCaq32QUU

Das die Google-Play Variante von Orux das jetzt kann ist ein schöner Schritt vorwärts, aber es gibt halt auch noch sooo viel zu tun (schnelle partielle Neuberechnungen, Advanced Voice-Navigation hints, …)

Bei Locus besteht Interesse, diese Schnittstelle zu integrieren (aber er hätte auch gerne die Voice-Navigation hints…), bei OsmAnd ist das Interesse gedämpfter weil sie ja einen eigenen offline Router haben, aber die Aussgae ist, dass sie einen Pull-Request dazu nicht ablehnen würden. Was jetzt fehlt ist primär Zeit…

Hi Arndt,

ich habe BRouter in Verbindung mit Oruxmaps getestet. Auf meinem Huawei X3 mit Android 2.3.3 läuft die Verbindung BRouter OruxMaps problemlos.
Oruxmaps liegt auf der SD Karte unter /mnt/sdcard/oruxmaps. Es geht sowohl Brouter mit “from/to”, als auch das Routing innerhalb von OruxMaps.

…aber auf meinen LG-P700 mit Android 4.0.3 bringe ich das nicht zum Laufen.
OruxMaps kann ja nicht vollständig auf /mnt/sdcard/external_sd/ ausgelagert werden die ORUX-DB mit den Waypoints etc. muß auf der internen SD liegen (laut Forum) also auf /mnt/sdcard.
Es gibt also zwei Pfade:

/mnt/sdcard/oruxmaps kann/darf nicht verschoben werden laut Orux
und
/mnt/sdcard/external_sd/OruxData zegt auf die Maps, exportierten Tracklogs etc. gleiche Struktur wie zuvor

Wie muß man BRouter installieren bzw. geht das überhaupt?

BRouter meldet “An Error occured”
No coordinate source from a maptool found…etc…

und kann nicht gestartet werden. Kann nur durch Deinstallation beseitigt werden.

Was mache ich falsch?

Viele Grüsse
Achim

Ps: Pathproblem OruxForum ==> http://oruxmaps.foroactivos.net/t2816-track-db-path-bug-or-feature

Hi Arndt,

das klingt wunderbar. Leider bekomme ich weder ein Routerin mit OruxMaps hin (was muss in einstellen?) und dann verstehe ich noch nicht die Zuordnung der Routing-Profile. Welches ist welches? Was ist “Bicycle_short” und was “Bicycle_fast”? Ich würde gerne “trekking” und ein eigenes Profil verwenden, dass sich an die CycleRoutes hält. Kann man die Profile zuweisen?

Hi Achim,

garnichts, Du hast einfach Recht, da ist eine Lücke. Da muss ich wohl nochmal ran und die Konfiguration der Basisverzeichnisse bzw. die Suche nach den Map-Tools flexibler machen.

Du kannst natürlich das BRouter-Verzeichnis auch unter /mnt/sdcard/ anlegen, dann passt es, d.h. er findet die Datei /mnt/sdcard/oruxmaps/tracklogs/oruxmapstracks.db (mehr braucht er nicht).

Du kannst aber auch einmalig die Datei oruxmapstracks.db händisch an eine Stelle im Dateisystem kopieren, wo BRouter sie findet, also /mnt/sdcard/external_sd/oruxmaps/tracklogs/oruxmapstracks.db (wenn /mnt/sdcard/external_sd Dein Basisverzeichnis ist), denn Du brauchst da ja nur initial, um die Konfiguration durchzuführen, beim Betreib über die Diensteschnittstelle spielen Datei-Pfade ja dann keine Rolle mehr.

Hallo thaigait,

in oruxmaps ist es das Autobahn-Symbol in der Top-Leiste und dann “Route suchen”. Dann hast Du unten 3 Auswahlboxen. In der dritten musst Du statt “Cloudmade” “BRoute” wählen. Die beiden anderen definieren den Modus (also eine der 6 Kombinationen aus Auto/Fahrrad/Fuss + short/fast).

Ein Mapping zwischen Modus und Profil gebe ich nicht vor, das musst Du selber konfigurieren, indem Du Brouter “klassisch” startest (mit oder ohne from/to-Koordinaten, geht beides) und anschliessend den “Server-Mode” Button drückst, dann hast Du die 6 Modi zur Auswahl und kannst wählen, für welche Du die gerade eben benutzte Konfiguration (=Profil + Liste der Sperrpunkte) hinterlegen willst. Solange Du das nicht gemacht hast, wird Oruxmaps eine Fehlermeldung bringen, wenn nur einModus fehlt, nimmt er stattdessen den zuletzt konfigurierten.

I do know it… und habe es bereits vor einiger Weile gestestet, Orux hatte wenige Tage nach Erscheinen Deiner 0.93 bereits umgestellt, ich war lediglich schreibfaul…:stuck_out_tongue:

Ich hatte die Kombi intensiv getestet und dutzende Bilder hochgeladen, bei Gelegenheit werd ich mal einige hier verlinken.
Vorab: Ein Hauptproblem im Zusammenspiel ist nach wie vor die Geschwindigkeit, was auf dem 4-Kerner in der Emu noch klappt rennt auf dem realen Androiden dann ins timeout: Routen mit mehr als ca. 50km Länge kann mein Defy nicht routen.
Lange Routen, so 120 - 150 km in ca. dauern auch in der Emu so ab 300 sec aufwärts, 500 - 600 sec können erreicht werden.
Lt. Animation scheinen 3 Durchläufe statt zu finden, der erste ist meistens recht schnell, von Sekundenbruchteilen bis zu ca. 20 sec, der zweite deutlich langsamer und der dritte quälend langsam. SO kann z.B. eine 60 km Route im 1. Lauf unter 2 sec benötigen, im 2. zwischen 5 und 20 und im 3. dann im Zeitfenster noch gerade ein Ergebnis liefern oder dieses mit über 100 sec drastisch verfehlen.

Hier ist noch einiges zu tun, imho sinnvoller als Auto(mobil) Gedöns und weitere Profile.

Des weiteren ist mir aufgefallen, dass Brouter bei LInkskurven mit separaten Radwegen den Weg in der Gegenrichtung wählt, nach STVO nicht gestattet und kürzlich in D’dorf im Rahmen einer Aktionwoche mit saftigem Bußgeld (30 Euro wegen Verkehrgefährdung) belegt.

???
Das verstehe ich nicht so wirklich…wieso interne SD Karte, verschieben…?

Möchtest Du die app auf die externe SD Karte verschieben? Warum um alles in der Welt?
Ich bin kein ANdroid Spezi, aber ich habe mal irgendwo gelesen, das das Verschieben einer app-Installation auf die externe SD Karte seid Version 4.0 nicht mehr möglich ist, jedenfalls nicht mit dem offiziellen Android.
Im Normalfall sollte daher die app auf der internen SDcard installiert sein, die Arbeitsverzeichnisse (also Karten, Db e.t.c, der ganze schmarren halt) aber komplett auf der externen SD Karte! Und deren Hauptverzeichnis wird bei der Brouter Installation angegeben!
Wie das nun letztendlich ist abhängig von android Version bzw. Herstellerimplementation.

Das kann sein:
/mnt/sdcard
/mnt/ext_SD
/mnt/erternal_sd
/storage/external
/storage/emulated/0

Am häufigsten gesehen habe ich bislang /mnt/sdcard und /storage/emulated/0.

Solltest Deine externe SD also /mnt/sdcard/external_sd heißen dann ist dem halt so.
Die paar kB Oruxmaps sollten doch noch ein Plätzchen auf der internen SD Karte finden und als Arbeitsverzeichnisse nimmst Du die externe Karte,
also /mnt/sdcard/external_sd/oruxmaps/tracklogs z.B für die oruxmapstracks.db

Darum sollten Radwege bei denen das zutrifft ein oneway=yes erhalten :wink:

Hi Arndt,
vielen Dank für die Antwort. Die Segmentdateien will ich natürlich auf der externen SD Karte haben. Also bleibt mir nur die OruxDB zu kopieren. Das geht dann auch wenn man das Routing intern von Oruxmaps nutzt.

…aber dann geht das Routen mit BRouter mit “from/to” nicht. Bei mir kommt dann die Meldung

…Sucess
no from/to found
(coordinate-source:/mnt/sdcard/external_sd/osmand)

… warum er da ins osmand direktory geht kannst nur Du wissen. Er sollte in dem Fall im …/OruxData/tracklogs suchen. Aber selbst da würde er nur die kopierte DB mit dem from/to finden. Suchen sollte er aber im
aktuellen /mnt/sdcard/oruxmaps/tracklogs Direktory. Ich nutze Brouter um mir mehere alternativen zu generieren. Das geht ja intern in OruxMaps nicht, ODER?

Das mit dem from/to ist eine feine Sache seit man die from/to Marker verschieben kann. Ist das nicht möglich dieses auch in OruxMaps via Intent aufzurufen, ohne dass man OruxMaps verlassen muß um BRouter mehrmals zu starten? Angenehm ist, dass da GPX Routen/Files angelegt werden…

Wie aber schon oben erwähnt, unter 2.3.3 auf dem Huawei X3 funktioniert das gut

…genau so mache ich das ja. Aber da klappt das Zusammenspiel OruxMaps mit BRouter nicht! Genau das ist mein Problem, welches von Arndt bestätigt wurde… und hoffentlich bald abgemildert wird.

Hi,

Ich antworte mal gesammelt:

zur /sdcard-Problematik: die Probleme entstehen mit Android-4, wo /mnt/sdcard in der Regel garkeine Karte mehr
ist, sondern fest eigebaut, aber trotzdem was anderes als der “interne Telefonspeicher”, wo die Apps selbst
installiert sind (und auch nochmal ein Arbeitsverzeichnis haben, wo sie Dateien ablegen können. Mein bisheriger
Ansatz, das Basisverzeichnis für die BRouter-Dateien und für die Suche nach den Wegpunkte-Datenbanken der Maptools
gleichzusetzen funktioniert bei Oruxmaps nicht mehr, weil Oruxmaps bzgl. der Datenbankfiles fest gegen die
eingebaute Karte (/mnt/sdcard) programmiert ist. Ich werde BRouter entsrechend flexibler machen.

Zur Geschwindigkeit: Das mit den 3 Durchgängen stimmt, und der erste entspricht dem, was sie
bei OsmAnd “Routing” nennen und der dritte dem, was sie bei OsmAnd “precice Routing” nennen. Ich mache
den ersten Durchgang aber nur, um eine obere Schätzung zu bekommen, die beim dritten Durchgang das
Suchgebiet besgrenzen soll und würde nicht auf die Idee kommen, das Ergebnis des ersten Durchgangs als
Routingergebnis zu verkaufen. Das ist nämlich keins.

Andere setzten auf contraction-hirachies, also vorberechnete Teil-Routen, aber dabei geht jede Konfigurierbarkeit verloren.

Was ich tatsächlich plane nenn ich “fast partial recalculations”, um speziell das Problem der Neuberechnung nach
Track-Abweichung zu lösen. Das kann man natürlich bisschen weiter spinnen, indem man nicht nur einen
“vorher berechneten Track” speichert, auf den man sich bei einer partiellen Neuberechnung bezieht, sondern
mehrere, und da wird der Übergang zu den contraction-hirarchies fliessend. mal sehen.

zu den paarweisen Radwegen ich denke, ich werd’s mal so probieren, dass ich mich mal auf die gemappte Richtung des Radweges beziehe und nur eine kleine Symmetriebrechung einbaue, (± 2% Kostendifferenz oder so), so dass in der Regel die richtige Seite genommen werden sollte. onway=yes für solche Wege halte ich für problematisch.

Gruss, Arndt

Oh man, ich war echt zu doof :roll_eyes:! Vielen Dank für Deine GEDULD hier :D!

Ahhh, JETZT hab ich auch das verstanden :). Nun funktioniert alles wunderbar. Ich finde es nur etwas schade, dass man nicht die Länge der Strecke anzeigen lassen kann. Aber das ist ja ein OruxMaps Problem…

…also auf Umwegen geht das schon. Ich habe auch lange gesucht. Vorgehensweise:

-Routen mit BRouter erstellen ( Einstellungen Track/Route muss Routenstart angehakt sein!!!)
-KURZ (!!!)auf den Marker am Routenanfang klicken
-Im Kontextmenü runterscrollen und die Route speichern
-Route entfernen
-Abgespeicherte Route laden
-Auf Routenanfangmarker klicken (kurz)
-Im Kontextmenü gibts jetzt zwei Abschnitte (Wegpunkt) und (Route)
-Im zweiten Abschnitt steht dann zum Beispiel die Strecke …etc…

Ich hoffe das hilft dir etwas.

BRouter auf Nexus 7 (Android 4.3)

Das Thema zieht sich ja leider schon recht lange dahin, nachdem es wieder bei einem klappt, schliesse ich mich mit "geht nicht " an :slight_smile:

Ich habe bereits alle möglichen Pfade ausprobiert (Post 155), das Nexus 7 hat hier nahezu alle im Angebot, die dann im selben Verzeichnis landen (es sieht zumindest so aus)

Stand:
Ich erhalte nach der Installation die Verzeichnisabfrage die ich bestätige
dann kommt die Profilauswahl → Hier wähle ich z.B Trecking
Dann erhalte ich eine Fehlermeldung:
An Error occured
java.lang.RuntimeExeption:java.ioEOFExeption
->Jetzt kommt man nur noch mit deinstallieren und reinstallieren weiter, man erhält sonst immer die Meldung.

Habt ihr noch ein paar Tipps?

Gruß Ludwig

Ich tippe auf korrupte .rd5 Dateien, z.B. abgeschnittene (also zu kleine) Kannst Du mal die Datei-Grössen der verwendeten RD5-Dateien prüfen?

Danke für den Tipp .-)

Sieht gut aus - jetzt geht`s ans testen.

ludwich

Ich habe heute die Version 0.94 deployed, die diese Änderung enthält. Siehe http://brensche.de/brouter/revisions.html

Alle unterstützten Mapttools (osmand/locus/oruxmaps) werden jetzt immer zusätzlich unter /mnt/sdcard gesucht (genauer: unter Environment.getExternalStorageDirectory() )

Ausserdem habe ich einen Fehler in der Fehlerbehandlung im Service-Interface behoben, so dass man dort jetzt bessere Fehlermeldungen bekommt.

Hallo Arndt,

…werde ich dann mal testen. Danke für das Update.

Bei OruxMaps ist das unangenehm, dass man bei jedem Routen die Parameter neu einstellen muß. Oder dass man das in der Konfiguration einstellen kann. Hast Du einen direkten Draht zu dem Oruxentwickler um das anzuregen, im Forum geht das meistens unter.

Eine andere Frage: Kann mann mit Oruxmaps mit der Routingfunktion auch gleich die alternativen generieren (zB.:Parameter Anzahl=3) und es werden entsprechend Brouter Files erzeugt, ohne BRouter extern aufrufen zu müssen…

Hallo Arndt,

also auf meinem LG_P700 mit der Android Version 4.0.3 läuft das in Verbindung mit Oruxmap jetzt.

Was mir (!) nicht so gefällt ist folgendes, aber man kann damit leben!!!

Ich habe zur Zeit OruxMaps V5.5.3beta11.

OruxInstallationsdir: /mnt/sdcard/oruxmaps/
OruxDaten: /mnt/sdcard/external_sd/OruxData

BRouter DirAnfrage : /mnt/sdcard/external_sd/

-Installation funzt jetzt.

Was mir nicht so gefällt, dass BRouter wenn man den außerhalb von Oruxmaps mit den “from/to” Parametern startet werden die Routingfiles im Oruxmaps dir wo die Datenbank ist abgelegt ==> /mnt/sdcard/oruxmaps/tracklogs

und nicht im erwarteten OruxDatendirektory also auf ==>/mnt/sdcard/external_sd/OruxData/tracklogs

Oruxmaps sucht aber DEFAULT mäßig im konfigurierten Daten-Verzeichnis:==> /mnt/sdcard/external_sd/OruxData/tracklogs

Somit muß man jedesmal beim Laden der “brouterx.gpx” Files jedesmal das Direktorie wechsen und das ist unschön.

Schön wäre auch, wenn man mit einem Lauf von BRouter gleich x Alternativen (zB: 4) generieren könnte, ohne jedesmal den BRouter zu beenden und wieder neu zu starten.

Aber ich kann damit leben und das soll nur als eine konstruktive (!!!) Kritik aufgefasst werden.

Für Deine Arbeit nochmals vielennDank
Achim

Habe heute die Version 0.9.5 von BRouter deployed ( http://brensche.de/brouter/revisions.html )

Neben einer allgemeinen Performance-Verbesserung und einer Sonderlocke fürs Car-Routing (“car-subset” files) addressiert das insbesondere das Problem des Timeouts im Service-Interface, und ich nenne das “timeout-free recalculations”.

Das alles mit dem Ziel, eine praxistaugliche Lösung für die Langstrecken-Navigation zu schaffen.

Ist im Moment noch bisschen akademisch, weil das Service-Interface ja bisher nur von Oruxmaps unterstützt wird, und Oruxmaps aber keine dynamische Neuberechnung macht, wenn man von der Route abweicht. Locus unterstützt das Service-Interface aber in einer beta-Version auch schon ( http://forum.locusmap.eu/index.php?topic=3423.msg24024#msg24024 ), und Locus kann dynamisch neu berechnen.

Ich selbst benutze es aber meist mit OsmAnd und einer ziemlich wackeligen Proxy-Strecke, denn OsmAnd selbst kann BRouter noch nicht direkt aufrufen.

Wa jetzt funktoniert ist, bis zu mittleren Distanzen (=30km Luftlinie Fahhrad, 50km Luftlinie Auto) einfach garnicht drüber nachzudenken, sondern einfach das Ziel in’s Maptool einzugeben, und bis zu "gewöhnlichen Langstrecken (300km Fahhrad, 500km Auto) die Strecke einmalig über die BRouter-App zu berechnen (was dann 10 Minuten dauern kann), dem dann aber per Zielfürhung mit schnellen automatischen Neuberechnungen nachzufahren.

Aber wie gesagt: interessant wird das, wenn OsmAnd das kann (ich bleib dran…).