Navit verliert unter Android immer noch die Route

Hallo,

wie woanders beschrieben, zeichnet Navit unter Android während der Navigation immer wieder für längere Zeit (bis zu fünf Minuten) keine Route. So kann man das natürlich als Navigationssystem nicht brauchen.

In einem anderen Thread (http://forum.openstreetmap.org/viewtopic.php?id=17155) bekam ich den Hinweis, dass inzwischen ein Memory Leak während der Navigation behoben sei, was mich dazu veranlasste, die zu diesem Zeitpunkt neueste Version (5160) zu installieren. Leider besteht das Problem immer noch: heute hatte ich mitten in Belgien innerhalb einer unübersichtlichen Umleitung plötzlich von Navit keinerlei Route mehr, mehrere Minuten lang. Schade.

Weiss jemand, ob die Ursache des Problems erkannt ist?

Ich fühle mich ein wenig wie in der Entscheidung zwischen Pest und Cholera: ZaNavi funktioniert unter Android fast perfekt, aber ich würde - aus anderswo erklärten Gründen - lieber Navit nutzen. Aber das funktioniert nur mangelhaft.

Schönen Gruss

So weit ich weiß, hatte cp15 dazu schon mal hier etwas geschrieben:

Mir ist allerdings nicht klar, warum ZaNavi nicht unter dem gleichen Problem leidet - dafür bin ich mit der internen Funktionsweise von ZaNavi nicht hinreichend vertraut. Ich könnte mir höchstens vorstellen, dass GPS-Koordinaten komplett ignoriert werden, wenn das Satellitensignal zu schwach ist, um eine Neuberechnung der Route mit stark abweichenden Koordinaten zu vermeiden. Das sollte sich im Prinzip auch bei Navit einbauen lassen.

Hallo MHohmann,

ja, das hatte ich gelesen. Ausser, dass ZaNavi (anscheinend) nicht dasselbe Problem hat, sprechen gegen zu schwaches GPS-Signal als Ursache für den Verlust der Route folgende Umstände:

  • Während die Route nicht gezeichnet ist, zeigt Navit die Position trotzdem korrekt an, auch in Bewegung. Die Position ist also richtig.
  • Im Auto ist der GPS-Empfang auch mit dem Cat Nova gut bis hervorragend. Wenn man GPSTest+ mitlaufen lässt, sieht man, dass immer ausreichend viele Satelliten in ausreichender Qualität vorhanden sind.

Möglicherweise sieht man bei ZaNavi einfach nicht, dass die Route nicht gezeichnet ist, weil ZaNavi viel schneller (im Sekundenbereich) eine neue Route berechnet. Soviel, wie ich bisher aber mit ZaNavi herumgefahren bin und so genau, wie ich das beobachtet habe, hätte mir das meiner Meinung nach auffallen müssen.

Bei Abweichungen von der vorgegebenen Route (vorbeifahren an einer Abzweigung oder Ausfahrt), ist Navit allerdings genauso schnell wie ZaNavi; die neue, korrigierte Route ist sofort da. Ich habe den Eindruck, dass Navit hin und wieder die gesamte Route neu berechnet. Da das meistens mehrere Minuten dauert, wird solange keine Route gezeichnet.

Zum Thema “langdauernde Berechnung von Routen” hatte ich gestern auch noch ein interessantes Erlebnis: Als Ziel war ein Punkt in Sichtweite eingegeben, als höchstens 200 m vom aktuellen Standpunkt entfernt und in derselben Strasse liegend, wie der aktuelle Standpunkt. Navit hätte also einfach ein Linie ziehen müssen, da gab es nichts zu berechnen, keine Abzweigungen, noch nicht einmal eine Kurve dazwischen. Dennoch brauchte Navit zwei Minuten, um diese “Route” einzuzeichnen.

Schönen Gruss

Das klingt dann eher danach, dass Navit durch irgendetwas anderes aufgehalten wird. Ich hätte spontan gedacht, dass bei ZaNavi und Navit die Einstellungen für den Karten-Cache unterschiedlich sind (wenn der zu klein ist, dauern Kartenzugriffe deutlich länger) - aber der sollte auch bei Navit groß genug eingestellt sein, wenn ich mir die Android-Build-Einstellungen so ansehe…

Vielleicht könntest du mal probieren, die Debug-Level in der navit.xml raufzusetzen und einen Debug-Log erstellen / hochladen (z.b. unter http://navit.pastebin.com/))? Wie man die Debug-Level hochsetzt, steht z.B. hier:
http://wiki.navit-project.org/index.php/Navit_on_TomTom#Debugging_Navit
Die Ausgabe kann man mit einem Befehl wie z.B. “/path/to/navit /path/to/navit.xml 2>/home/myuser/navit.log” in eine Datei speichern - die Pfade müsstest du entsprechend anpassen, bei Android kenne ich leider die richtigen Verzeichnisse nicht…

Hallo MHohmann,

ah, klasse, ich hatte fragen wollen, ob man nicht irgendwie debuggen oder loggen kann. Danke für die Hinweise, werde ich am Wochenende ausprobieren, ob ich die Einstellungen finde.

Inzwischen, nach einer wieteren Testfahrt, bin ich recht sicher, dass die “verlorene Route” (also die Zeit, in der keine Route gezeichnet wird) daher rührt, dass Navit sich durch irgendetwas veranlasst sieht, die Route komplett neu zu berechnen. Normale Abweichungen von der Route sind nämlich überhaupt kein Problem, die neue Route ist “sofort” da. Auch grössere Positionsungenauigkeiten (heute bin ich z.B. mindestens fünf Minuten lang mindestens 30 Meter “neben der Autobahn” gefahren) scheinen unproblematisch zu sein.

Die Frage wäre also meiner Meinung nach: was triggert bei Navit die komplette Neuberechnung der Route? Könnte es sein, dass Abweichungen, selbst grössere, kein Problem sind, aber dass das GPS-Modul kurze Zeit (Grössenordnung 1/4 Sekunde?) gar keine Position liefert oder fehlerhafte Signale, was Navit als Ausfall des GPS-Moduls interpretiert und nach dem Wiederauftauchen des Signals mit einer neuen Positionsbestimmung und Berechung beginnt? Wie kriegt man sowas raus?

Schönen Gruss und nochmal Danke für die Mühe.

Ich werde mal schauen, ob ich am Quelltext irgendwie erkennen kann, welche Ereignisse zum Neuberechnen der Route führen. So halbwegs bin ich mit dem Quelltext vertraut, aber bei den Mengen (allein die route.c mit dem Code zur Routenberechnung hat über 3800 Zeilen) muss man erst mal schauen, wo man suchen muss :wink: Ansonsten werde ich da auch noch mal die Entwickler im IRC fragen - die wissen sicher schneller den richtigen Ansatzpunkt.

Neben schlechtem GPS-Signal gibt es noch andere Gründe, warum keine Neuberechnung bei Navit kommt.

-Wenn man sich z.B. in einem Bereich mit access=private aufhält, wird einfach keine Route berechnet.

-Wenn in der Navit.xml im Fahrzeugprofil bestimmte Strassentypen fehlen, kann auf diesen auch nicht geroutet werden. Beim Fahrradprofil werden z.B. nur Tracks mit tracktype=grade1-2 oder surface=gravel, paved standardmäßig verwendet. Und kurioserweise auch Pfade.

-Beim Neuberechnen der Route muss das GPS-Signal auf eine Strasse weisen. Das Abweichen von einer Strasse geht nur, wenn schon eine Route berechnet worden ist.

  • Nach Berechnung einer Route kann man sich den “RouteGraph” anzeigen lassen. Man muss dazu recht weit in die Karte zoomen, um die feinen, roten Striche sehen zu können. Da sieht man dann, dass etliche Varianten mit berechnet werden. Das hat natürlich seine Grenzen.