BRouter: offline Fahrrad-Routing für Android

Vorsichtshalber in ReadMe.txt ist das noch nicht erläutert.

Toll! Danke! Ich wollte vorm Schlafen noch kurz hier vorbei schauen, und dann sowas :). Funktioniert super mit OruxMaps! Merci beaucooouuuup :D!

Ich habe Locus und Osmand gleichzeitig auf dem Handy. Starte ich BRouter, dann will dein Programm mit Locus arbeiten. Da ich im Locus keine Punkte definiert habe sondern in Osmand, arbeitet das Programm nicht.

Ich musste Locus deinstallieren, damit Brouter mit Osmand zusammenarbeiten kann.

Ich befürchte, wenn jemand Oruxmap und Osmand auf dem Handy hat, dass derjenige nicht mit Oruxmap arbeiten kann. Alphabetische Reihenfolge.

Nicht alphabetisch, sondern sortiert nach dem last-modified-timestamp der jeweiligen Wegpunkte-Datei, das sind:

{basedir}/osmand/favourites.gpx
{basedir}/oruxmaps/tracklogs/oruxmapstracks.db
{basedir}/Locus/data/database/waypoints.db

D.h. eigentlich sollte die Quelle genommen werden, die zuletzt geändert wurde
(allerdings unabhängig davon, ob wirklich die relevanten Wegpunkte geändert
wurden)

In meinen Tests hat das auch immer funktioniert.

Hast Du vielleicht wirklich Deine Wegpunkte in OsmMand früher schon gesetzt?
Oder irgendwann das Handy-Datum verstellt, so dass die Locus Datei
einen Zeitstempel in der Zukunft hatte?

Oder habe ich hier noch einen Bug. Werde aber nochmal drüber nachdenken,
wie ich das robuster machen kann.

Gruss, Arndt

Ich habe jetzt mal Locus wieder installiert.

Bevor ich Locus gestartet habe, blieb nach dem Start von Brouter der Bildschirm schwarz. Nach Start von Locus und dem Akzeptieren der Bedingungen moserte Brouter wieder, dass es im Locusordner nichts findet. Das nur zu Info

Nachdem ich in Osmand, meine ewig alten from und to Punkte ersetz habe, funktioniert es.

Hi Volker,

ich antworte mal im “richtigen” Faden.

BRouter fragt nach dem Basisverzeichnis der SD-Card, also das Verzeichnis im Android-Dateisystem, relativ zu dem die Arbeitsverzeichnisse sowohl von brouter als auch osmand (, locus, oruxmaps) liegen.

Typisch ist das /mnt/sdcard oder /mnt/sdcard/external_sd oder so. Der Vorschlag, dem BRouter macht, sollte auch nicht ganz daneben sein.

Bei OsmAnd gibt es eine Menu-Option, um das Arbeitsverzeichnis einzustellen. BRouter braucht einfach das selbe.

Gruss, Arndt

Hi vielen Dank erstmal Arndt,
mal schauen ob ich das so hinbekomme.
Wie funktioniert das dann in Locus und Oruxmaps? Genauso mit den Punkten setzen “from” und “to”?
LG Volker

Hi Volker,

Ja, genauso mit “from” und “to” - klappt wunderbar :).

Habe die readme.txt jetzt (für die Version 0.8) überarbeitet und das mit aufgenommen.

Wobei die spannendere Geschichte ja eigentlich die “nogo” Punkte sind, und die hatten in der Version 0.7 noch ein Problem (dokumentiere niemals eine schlechte Lösung, sondern verbessere sie…)

In 0.7 wurden nogo-Punkte genau wie die Wegpunkte auf “nicht Triviale Knoten” gemapped, also zur nächsten Abweigung, Kreuzung etc. Damit waren die nur beschränkt benutzbar, und ich brauchte z.B. 6 Sperrpunkte, um die Rheinbrücke bei Worms zu sperren… Jetzt (0.8) werden die geometrisch gemapped, wie man das auch erwartet, d.h. eine nogo-Area mit z.B. 20m Radius sperrt jeden Weg, der diese Scheibe berührt. Und der Radius ist konfigurierbar, sodass man z.B. mit einem “Wegpunkt” mit Namen “nogo40000 Schwarzwald” auch eine ganze Region sperren kann und nicht nur eine Brücke.

Und apropos geometrisches Mapping von Wegpunkten. Auch für die “from”, “to” und “via” Punkte verwendet BRouter ja das simple Mapping auf den nächsten (Luftline!) nichttrivialen Knoten. Das ist bisher gut genug, und es hat sich auch noch keiner beschwert, aber:

  • im Online Protokoll sehe ich immer wieder gescheiterte Routings, weil der Zielpunkt auf einer “Insel” liegt oder auf einem Privatparkplatz etc und die laufen dann ewig und der Benutzer weiss nicht, warum

  • ich experimentiere mit dynamischer Neuberechnung, und da reicht das einfach nicht, weil hier ja das Maptool die Neuberechnung triggert und die aktuelle GPS-Position als Startpunkt vorgibt. Und dann ist das simple Mapping zum nächsten Knoten auch mal auf der anderen Seite der Bahnlinie und dann hat man ein Problem. Ich habe also auch für das Wegpunkt-Mapping jetzt ein “Line-Matching” implementiert was auch nur Wege findet, über die das Profil routen kann. Das habe ich aber bisher nur für die Online-Version enabled, für die Android-Version noch nicht, weil es noch ein bisschen langsam ist.

Die Version 0.8 ist auch notwendig geworden, weil bei der alten ja ab morgen (5.5.) schon ein Warnhinweis kommt wegen der Beta-Expiry, und die 0.8 läuft jetzt ein Jahr länger.

Super Arndt. Ganz hervorragende Arbeit.Ich bin jetzt schon etliche Radtouren gefahren mit Deinem Brouter. Die Wegvorschläge sind das beste was mir bisher im Bereich Radeln über den Weg gelaufen ist. Es macht richtig Spaß und mit den Berechnungen des “Save” Profiles kann ich ohne Bedenken mit meinem Sohn (sieben Jahre) losradeln. Heute 30km zusammen gefahren. Da passt einfach alles. Wenn es Dir jetzt noch gelingt Touren über 100 km berechnen zu können, dann wäre das der Oberhammer.
Ist aber kein “must have”. Es gibt bei uns zuhause ganz excellente Radwege,z.B. den Mainradweg, der bei uns in Redwitz a.d.Rodach vorbeiführt bis hinunter nach Nbg und auch Richtung Schweinfurt-Würzburg. Da würde ich mir noch ein Profil von Dir wünschen das versucht so “Eben” wie möglich zu routen. Nun weiß ich eben auch das ich das “save” Profil selbst ändern kann, jedoch nicht ganz durch steige,sprich-hiermit Dich darum bitten möchte so ein Profil bereitzustellen. Evtl. wäre ein deutsches “how to modify” allererste Sahne. Übrigens, es funktioniert bei mir sowohl mit Oruxmaps,Osmand+ und Locus pro. Am liebsten ist mir dabei immer noch Osmand WG. des direkten Routings,sprich Sprachansagen und Abzweig Hinweisen und der direkten Poi Offline Anbindung und Suche.
Mittlerweile besteht mein Sohn immer drauf das Smartphone (HTC DesireX) an sein Rad zu schnallen.
Nochmals danke an Dich für Deine tolle Arbeit, das innovativste Produkt fürs Biken wie ich finde.
LG Volker

Hey Arndt,

welche Rationale gibt es denn, die App überhaupt zu beschränken? Dass Du die App verlängert hast, ist schon mal super. Ich habe ein paar Leuten Dein Programm empfohlen und die hielten es für ungeeignet für den Sommer wg. der Expiry. Sie wollten sich einfach nicht in ein System eindenken, dass nicht mehr lange verfügbar ist.

Wäre es nicht möglich die Expiry ganz raus zu nehmen?

Viele Grüße und frohes Radeln :D,

Vipanny

Hi Volker,

Mit Zwischenpunkten kannst Du längere Touren rechnen, denn die Rechenzeit skaliert zwar quadratisch, aber das zählt bei Zwischenpunkten ja nur pro Abschnitt. Ich habe aber auch schon 250km Luftlinie am Stück gerechnet auf dem Handy, dauert halt nur sehr lange, aber geht.

Der Vorteil, wenn man eine solche Strecke “frei” rechnet statt mit Zwischenpunkten ist, dass das Suchgebiet grösser ist und man auf diese Weise natürlich Strecken finden kann, die man durch Zwischenpunkte ausgeshlossen hat.

Änder einfach die Zeile:

assign uphillcost 0

in

assign uphillcost 60

Dann hast Du die “Höhenstrafe” verdoppelt. Führt natürlich dazu, dass er dann auch mal im Maintal bleibt, obwohl jeder Ziel-Orientierte Radler die Abkürzung über den Hügel nehmen würde. Aber das ist wohl das, was Du willst.

Das safety-profil hat noch einen anderen Fehler: Ich benutze bisher das “cycleway” tag fast nicht (ausser für die umgekehrten Einbanhstrassen). Weil ich es auch nicht vermisse, denn hinter solchen an der Strasse getaggten Radwegen steckt oft die übliche Bordsteinkanten und Baumwurzel-Folter, und das bei Benutzungspflicht, sodass man diese Strecken nicht unbedingt suchen sollte. Vernünftige Radwege sind, zumindest in Deutschland, in OSM meist als eigener Weg eingetragen (highway=cycleway).

Für ein Safety-Profil für Kinder müsste man aber auch die “normalen” Radwege präferieren-

Danke für deine Mühe und Infos

Die Syntax ist mir beim Durchlesen der Dokumentation und des Posts nicht klar geworden.

nogo40000 Schwarzwald

Bedeutet das, der Schwarzwald wird komplett mit einem zusätzlichen Rand von 40km gesperrt. Oder ein Punkt der den Tag Schwarzwald hat wird in einem Radius von 40 km gesperrt.

Was kann muss ich einsetzen, wenn ich die Stadt Frankfurt am Main umfahren will.

Persönlich vermute ich auf Dauer das Problem, wenn man bestimmte Dinge umfahren will, die exakte Bezeichnung braucht. Woher bekommt man die.

Beim Schreiben merke ich, dass man vermutlich das OSM-Datenmodell verdammt gut kennen muss, um die richtige Eingabe zu machen.

Fazit: Grenzen und Möglichkeiten gehen aus der Dokumentation nicht hervor.

Hi,

nein Missverständnis. Der Text “Schwarzwald” wird hier einfach ignoriert.

Nogo-Punkte sind ja beliebig viele erlaubt, also habe ich erlaubt, dass man den Nodenamen um was sprechendes ergaenzen kann, um sie wiederzuerkennen. Man bekommt ja einen Dialog (“Check nogo-selection”) mit allen Wegpunkten, die mit “nogo” anfangen, und dann muss man ja wissen, was sie bedeuten.

Um Frankfurt zu umfahren, würde ich einen Wegpunkt “nogo5000 Mainhatten” auf den Hauptbahnhof setzen.

Das sperrt dann allerdings auch den Mainradweg.

Ich bin darauf angewiesen, Qualitäts-Feedback aus dem Beta-Test zu sammeln, um das Ding erstens fehlerfrei zu kriegen und die Funktionalität an die Erwartungshaltung der Benutzer anzupassen. Und funktioniert ja bisher auch ganz gut und bin ja schon ein ganzes Stück vorangekommen.

Nur: dafür muss ich von den neuen Fehlern erfahren und nicht von den längst behobenen aus älteren Versionen. Und dazu ist es wichtig, die Kontrolle zu behalten über die Versionen “im Feld”. Alle machen das so, nur eben über automatische Updates oder ein serverseitig gesteuerten Update-Trigger.

Mir ist es aber wichtig, den “offline”-Charakter der App nicht anzutasten und Datenschutz-sensitive Benutzer nicht zu verschrecken indem da irgendwas “nach Hause telefoniert”. Also geht das nur mit einem clientseitig gesteurten Expiry.

Ja, schon, wenn’s halbwegs fertig ist. Eigentlich wollte ich auch jetzt soweit sein, aber ich hab’ noch zu viele Ideen im Kopf. Vielleicht sehe ich das ja falsch, aber fehlende Turn-Restrictions, das “schlampige” Wegpunkt-Mapping, die rein technische Beschränkung auf die Zahl der Osm-Tags etc das ist alles noch “zu beta”.

Ähnliches Thema mit der deutschen Dokumentation. Würde definitiv die Nutzerzahlen pushen, aber auch eine Support-Last erzeugen, die die Weiterentwicklung bremst. Also im Moment keine Priorität.

Und es gibt natürlich den Wunschgedanken, irgendwann in Google-Play zu gehen mit einer “Killer-App”, die nicht mehr nur paar hundert, sondern Hunderttausende Benutzer finden kann. Das wäre dann aber nicht mehr der nackte Offline Router, sondern eine integrierte Anwendung, und der Offline-Router in seiner jetzigen Form würde (werbe-)frei bleiben.

Gruss, Arndt

Hallo Arndt,

das hört sich alles sehr gut an! D.h. Du hast große Pläne mit der App und das freut mich sehr! Meine Befürchtung war, dass das Projekt irgendwann einschlafen könnte und dann wenig später auch die App nicht mehr funktionieren würde. In dem von Dir vorgesehenem Szenario bin ich gerne Beta Tester! Ich mag Radfahren und ich mag Radfahrer. Je mehr Menschen auf das Rad umsteigen und das Auto häufiger stehen lassen, desto besser für uns alle :D. Wenn die Version in der bisherigen Art frei bleibt, ist das mehr als fair. Ich drücke die Daumen, dass eine Killer-App dabei rauskommt und trage gern dazu bei, dass die aktuelle Version noch besser wird :).

Hi Arndt
Danke für den Tipp mit dem Kostenfaktor und den via-points.
Aber mal wieder zurück zur Sache, auch um Dir zu bestätigen, daß Du auf dem richtigen Weg bist. Ich finde das der Beta Status schon extremst vielversprechend ist.
Mich stört jetzt eigentlich nur noch eines konkret an Deinem Brouter—das direkte ansteuern der via-points.
Praktisch schaut es so aus, das ich z.B. von Redwitz nach München mit dem Fahrrad fahren möchte-also setze ich via-points-vollkommen logisch.
Allerdings will ich einfach nur sagen–hey Junge–fahre bitte über Bamberg(via) - aber bitte nicht direkt auf dem via-punkt(meist das geographische Zentrum wenn ich in Locus einfach Bamberg als Suchkriterium schnell auswähle) - sondern einfach praktisch Richtung Bamberg aber immer schön dem Profil entsprechend.
Ich denke Du weißt was ich meine— eine Art ungefähre Richtungsangabe
praktisch1 würde ich dann vorschlagen so eine Art “via1-around2000(2km um den Punkt herum)” für die ungefähre Richtung.
praktisch2 würde ich dann für ein direktes ansteuern des via-punktes das “via1” so belassen.

Via bedeutet in dem Sinne für mich — Hey klasse, genau in den Biergarten will ich reingehen als Zwischenziel
Via-around bedeutet für mich — kein Alkohol am Steuergrins - aber fahr mal trotzdem in die Richtung des Biergartens.

Da bin ich ja mal gespannt auf Deine Killer-App , da bin ich voll dabei weil ich merke, daß Du genau weißt was Du tust und der Weg einfach passt.
Aber bitte keine Experimente mit Online-Kartenmaterial bzw. Online Verbindung während des Routings.
Wobei ich ganz ehrlich sagen muß, daß ich bereits mit dem jetzigen Zustand sehr zufrieden bin. Am besten ist es in Locus integrierbar, da ich einfach in Locus über die Bedienfelder eine App hinzufügen kann (Dein Brouter) ohne Locus klein schalten zu müssen.
Ein grafisches Interface hast Du Doch in Form von ORUX,OSMAND,LOCUS. > Punkte in der Karte antippen-benennen-Brouter starten > das finde ich sehr komfortabel.
Deine Punkte kann man ja auch schon an-abwählen.
Die App im jetzigen Zustand trifft den Tourenplaner doch eigentlich schon mitten ins Herz.
Ganz klar, ich kann aber Deinen Anreiz nach ner eigenständigen App voll verstehen-zumal Du irgendwann auch mal “Cash” dafür sehen willst.

In diesem Sinne weiter so und ich hoffe das ich mit den ein oder anderen Vorschlägen behilflich sein kann.
Ich programmiere selbst in C und Basic intern in der Firma für unser CAM-System und weiß um die ganze Problematik außen herum … es hört sich immer so einfach an…Ratschläge: mach mal dies und das…aber warum hast Du nicht?..
LG Volker

P.S. : Routenberechnung von Redwitz nach München über via Points !!! “Darf ich dich küssen??” das passt-klasse.

@Arndt:

Kennst Du eigentlich OpenAndroMaps? Das sind großartige weltweite offline Radvektorkarten aus den Daten der OpenCylceMaps. Das Projekt wird von Christian umgesetzt - einem Radfahrer, der sich auch gerne für die Community einsetzt - und das mit Herzblut. Seine Karten sind unschlagbar gut! Eine Offline App mit Deinem Routing, seinen Karten und einem intuitiven Interface wäre die Erfüllung der kühnsten Träume aller Radfahr-Navigatoren ;)!

Ach: Den Punkt von Volker zu den “via1-around” kann ich voll unterstützen! Finde ich sehr sinnvoll und habe ich mir auch schon mal gewünscht.

So, mal meine 2 Cents zur Killer-App :slight_smile:

Wenn Du wirklich die Killer-App willst, ist ja das wichtigste, den Need zu analysieren. Ich fasse hier mal meine Sicht zusammen:

Der Schwachpunkt aller Smartphones ist der Akkuverbrauch des Displays. Beim Energieverbrauch haben OutdoorGPS gegenüber Smartphones einfach das intelligentere Display. Also muß man mit dem Energieproblem umgehen. Hier mein bisheriger Ansatz:

Ich nutze aktuell Dein Routing zusammen mit den OpenAndroMaps in OruxMaps. Zusätzlich setze ich Wegpunkte an Stellen, an denen ich auf die Karte schauen sollte, weil ich nicht nur einfach geradeaus fahren kann. Wenn ich nicht zu faul bin, versehe ich die Wegpunkte mit Text, der dann über OruxMaps ausgesprochen wird, wenn ich an den Koordinaten ankomme. So sagt mir OruxMaps “halb links” und ich weiß Bescheid. Allerdings muss ich den Ansage-Text immer umständlich in den Wegpunkt schreiben (sehr nervig). Wenn ich faul bin, setze ich die Wegpunkte ohne Text (bei 100km braucht man 5-6min, um die ganze Strecke durchzugehen), lasse ich mich am WegPunkt nur akustisch alarmieren und schaue dann kurz auf die Karte. Vorteil im Vergleich zum OutdoorGPS: Ich muss nicht immer auf die Karte schauen. Und genau das will ich auf einer Radtour auch nicht - da will ich die Gegend genießen. Ach: Falls ich bei den Wegpunkten einen vergessen habe: OruxMaps meldet sich, wenn ich die Router mehr als 160m verlassen habe.

Wer jetzt sagt, man könne sich doch bei bestehender Route sehr gut von OSMand sprachlich navigieren lassen, der hat es wohl noch nicht getestet. Die App hört gar nicht auf zu labern. An entspanntes Radfahren ist so nicht mehr zu denken. Manchmal besser als nichts, aber überzeugt hat mich das nicht…

Wenn das Display eingeschaltet bleiben sollte, könnte man es nach 30sek immer automatisch auf eine geringere Helligkeitsstufe regeln. Ein Klick auf den Touchscreen müsste dann sofort für eine Erhöhung der Helligkeit sorgen. Das Gerät nach 30sek ganz abzuschalten ist in meinen Augen keine gute Lösung, weil man es häufig umständlich wieder einschalten muss (Schalter häufig oben oder an der Seite, nicht an der Front). Benutzt man das Handy in einer Handy-Radtasche mit durchsichtiger Folie (vor Wetter und ausreichend vor Stössen geschützt - auf meiner Sicht die einzige sinnvolle Transportlösung), bringt einem der Schalter an der Seite gar nichts - man kommt nicht dran. Ich nutze aktuelle in altes Handy mit Powerschalter an der Front, aber da es sehr lahm ist, ist es nur eine Verlegenheitslösung. Im Sommer nutze ich auch mal eine einfache Halterungen ohne Schutz, aber das mache ich immer ungern (Smartphone ist mir schon mal rausgefallen).

Wenn Deine finale App da eine Lösung hätte, wärst Du an der Killer-App nah dran ;).

…man kann aber auch in Osmand den Ton ausschalten und nach den Pfeilen fahren, also was direktes Routing betrifft dann ganz klar Osmand, da es die Gpx-Daten am besten auswertet und informiert. Dafür hat Locus und Orux andere Vorteile-ich mag sie alle drei und entscheide immer kurzfristig. Wenn ich Tracks auf zeichne verwende ich aber meist Locus, da es auch automatisch Sprachanweisungen gibt während dem gpx-routing. Wenn ich mit dem Rennrad auf Speed unterwegs bin,dann nehme ich Oruxmaps, da es bei der Aufnahme Infos in Sprachform gibt über Durchschnittsgeschwindigkeit etc. und das Dasboard klasse ins Display integriert ist.
Zurück zum Thema: Wenn ich Arndts Talent hätte, würde ich versuchen das ganze grafisch aufzuwerten und als Standalone neben Osmand,Orux,Locus laufen lassen. Es wird ungemein schwer an das Potenzial der drei Programme heran zu kommen,also lieber auf die wichtigen Sachen konzentrieren und vorhandenes optimieren und konsolidieren. Ich versuche auch in meinen eigenen Scripts|Makros möglichst modular und konzentriert auf Universalität zu programmieren. Ein gutes Interface mit dem streben nach wenigen Klicks und guter Überschaubarkeit.
LG Volker.