Navigation mit dem Programm Navit (Debian/Ubuntu)

Inhalt

Weitere Infos über die Datei navit.xml könnt Ihr auf dieser Seite über navit.xml nachlesen.

Einleitung

Navit im 2D-Modus

Unerfahrenen Benutzern empfehle ich, diesen Artikel in Ruhe von Anfang an durchzulesen. Mit Fortschritt dieser Seite werden nicht immer alle notwendigen Schritte erklärt, diese stehen dann weiter vorn. Dieses Beispiel wurde auf Xubuntu 1404 Trusty Thar getestet, sollte generell aber auf Ubuntu oder Debian funktionieren. Andere Linux-Distributinen müssen die Packetverwaltung anpassen. Konfigurationsanleitungen sollten für alle Betriebssysteme gültig sein.

Ich fuhr mal nach Hamburg, um eine Verwandte zu besuchen. Zu dieser Zeit hatte ich kein Navigationsgerät zur Verfügung. Also ab an den Rechner, Routenplaner genutzt und 5 Seiten ausgedruckt, um die letzten Kilometer in der Stadt Hamburg dabei zu haben. Bis nach Hamburg bin ich prima gekommen, aber dann ging es in die Stadt. Nach gefühlten 1000 Wendungen und planlosen Hin- und Herfahren hatte ich die Orientierung ganz verloren. Inzwischen war es auch dunkel geworden. An der nächsten Tankstelle habe ich mir einen Stadtplan gekauft. In diesem habe ich die Straße nicht gefunden, aber ich wusste wieder, wo ich war. Mit telefonieren und Leute nach Weg fragen kam ich dann 2h später an. Dann fand ich auch die Straße im Stadtplan.

Meine Verwandte schenkte mir armen Kerl dann ein Navi, welches sie nicht mehr brauchte. So konnte ich mal wegfahren und ihre Wohnung wiederfinden.

Auf der Fahrt nach Hause habe ich das Gerät mitlaufen lassen und festgestellt, dass doch viele Kartenfehler auf dem Gerät sind (6 Jahre alt). Aktuelle Kartensoftware habe ich dann zu Hause gesucht. Fehlanzeige. Geld: Ja, aktuelle Karte: Nein.

Ich bin nun mal ein Linux-Fan und liebe offene Software. So stöberte ich das Internet durch und bin auf das Navit-Projekt gestoßen. Software: 0 € Kartenmaterial: 0 €. Es geht doch. Nichts ist umsonst, die Leute vom Navit-Projekt suchen C-Programmierer, um das Programm weiter zu verbessern. Und das Kartenmaterial kann auch Leute gebrauchen, die Einträge ergänzen, berichtigen bzw. hinzufügen. Das ist offene Software. Mehr dazu später

Navit ist ein offenes Projekt, welches von jedem genutzt werden kann. Ursprünglich wurde die Software von Martin Schaller für eigene Zwecke programmiert. Auf Anraten hin machte er diese später öffentlich, damit auch andere Programmierer diese mit verbeseern können. Auf der Projektseite von Navit findet Ihr alle Informationen dazu. Da es ein weltweites Projekt ist, sind Englisch-Kenntnisse notwendig. Navit kann mit verschiedenen Kartenmaterialen umgehen. Mein Beispiel bezieht sich auf die offene Karte von OpenStreetMap.

Navit läuft inzwischen unter vielen Betriebssystemen, z.Bsp. Windows, Linux, Android usw. Es gibt sogar eine Version, um Navit auf einem TomTom-Gerät zu installieren. Navit bietet viele Funktionen, z.Bsp.:

zum Seitenanfang

Grundsätzliches zu Navigationssoftware

Navigationsgeräte bzw. -software sollen dem Nutzer nur eine Hilfeststellung sein. Man sollte sich nicht 100%ig auf diese verlassen. Gerade im Straßenverkehr ist das wichtig. Es gelten hier die Bestimmungen der StVO und nicht das, was das Gerät erzählt. Man sollte eine unbekannte Wegstrecke vorher planen, das kann man auch mit Navit machen. Das Gerät weiß auch nicht, welche Straße schöner zu fahren ist, wo gerade eine Baustelle ist oder welche Straße momentan gesperrt ist.

Ein Nachteil von Navit ist die Konfiguration mittels der Datei navit.xml, hier scheuen viele zurück. Dieser Nachteil ist gleichzeitig ein Vorteil, man kann die Software in Aussehen und Berechnungsoptionen seinen Bedürfnissen anpassen.

Navigationssoftware benötigt einen GPS-Empfänger, der Verbindungen zu den Sateliten herstellt und die Positionsdaten dem Rechner übermittelt. Das geschieht ca. 1 bis 2 mal pro Sekunde. Solche Empfänger gibt es für weit unter 100 € im Handel zu kaufen, eine Installation von weiterer Software ist unter Linux meist nicht notwendig, auch wenn da noch eine CD dabei ist.
In meinem Beispiel wird der Dienst gpsd genutzt, damit die Software die Daten des Empfänger erhält.

Genug gelabert. Jetzt geht es endlich los.

zum Seitenanfang

Installation Navit auf Ubuntu

Wie man Navit auf einem Android-Gerät installiert, wird auf dieser extra Seite für Android beschrieben.

Installation aus den Packetquellen

sudo apt install navit

mkdir ~/.navit

cp /etc/navit/navit.xml ~/.navit/

Mittels sudo apt-get install navit kann man die Software aus den Packetquellen installieren. Man erhält derzeit die Version 0.5.0.

Möchte man die Konfiguration anpassen, empfehle ich die Datei navit.xml in den Ordner ~./navit zu kopieren:

mkdir ~/.navit
cp /etc/navit/navit.xml ~/.navit/

Navit sollte nun diese Datei beim Start einlesen. Bei einem Update der Software kann es vorkommen, dass die originale Datei /etc/navit/navit.xml überschrieben wird. Eigene Änderungen bleiben so erhalten.

Navit aus aktuellem Quellcode installieren

Fremdsoftware kann das System beschädigen!

Wer die aktuellste Version von Navit nutzen möchte, kann sich den Quellcode von GitHub herunterladen. Da das der aktuellste Stand der Software ist, kann es vorkommen, dass sich mal ein kleiner Fehlerteufel eingeschlichen hat. Diese Fehler sind meist ein paar Tage später berichtigt.

In dem folgenden Abschnitt beschreibe ich einen Weg, navit so zu installieren, dass mehrere Benutzer es später nutzen können mit den jeweiligen eigenen Einstellungen. Da navit für verschiedene Betriebssysteme programmiert wurde, muss man ein wenig Hand anlegen, damit alles reibungslos klappt. Ich möchte Euch trotzdem die einzelnen Schritte erklären:

Als erstes müssen alle notwendigen Packete installiert werden, um Navit kompilieren zu können. (Quelle ubuntuusers.de)

sudo apt-get install build-essential cmake gettext gpsd gpsd-clients libpng-dev libgtk2.0-dev librsvg2-bin libgps-dev libdbus-glib-1-dev freeglut3-dev libxft-dev libglib2.0-dev libfreeimage-dev zlib1g-dev protobuf-c-compiler libprotobuf-c-dev

Danke an Jürgen für den Hinweis fehlender Packete und meinen Schreibfehlern.

sudo apt install build-essential cmake gettext gpsd gpsd-clients libpng-dev

sudo apt install libgtk2.0-dev librsvg2-bin libgps-dev libdbus-glib-1-dev

sudo apt install freeglut3-dev libxft-dev libglib2.0-dev libfreeimage-dev zlib1g-dev

sudo apt install protobuf-c-compiler libprotobuf-c-dev

sudo apt install git

cd ~/Downloads/

git clone https://github.com/navit-gps/navit.git

sudo mkdir /opt /opt/navigation/

cd /opt/navigation/

sudo cmake ~/Downloads/navit

sudo make

sudo addgroup navit

sudo adduser $(whoami) navit

sudo chown -Rv root:navit /opt/navigation/

sudo chmod -Rv g+rw /opt/navigation/

Weiterhin wird das Packet git benötigt, um das Programm git zum Download nutzen zu können.

sudo apt-get install git

Nun lädt man Navit mittels git aus dem Internet herunter.

cd ~/Downloads
git clone https://github.com/navit-gps/navit.git

Die Dateien befinden sich danach im Ordner ~/Downloads/navit.

Soll der Quellcode nur aktualisiert werden, nutzt man folgenden Weg:

cd ~/Downloads/navit/
git pull

Nun erstellt man die Ordner, wo navit installiert werden soll:

sudo mkdir /opt/ #falls noch nicht vorhanden
sudo mkdir /opt/navigation/

Als nächstes wechselt man in den Ordner und bereitet die Kompilierung vor:

cd /opt/navigation/
sudo cmake ~/Downloads/navit

Hier erscheinen einige Ausgaben auf der Konsole, welche man überfliegen sollte, ob nicht doch durch einen Fehler abgebrochen wurde.

Und nun wird navit kompiliert.

sudo make

Das dauert eine Weile je nach Hardware. Wenn einige Warnungen erscheinen, sollte man nicht gleich in Panik verfallen. Das Navit-Team arbeitet ständig an Verbesserungen.
Im Ordner ~/Downloads befindet sich der Quelltext, im Verzeichnis /opt/navigation/ befinden sich der optimierte Quelltext und die Programmdateien befinden sich in /opt/navigation/navit/.

Jetzt probiert man aus, ob man Navit als root starten kann:

cd navit
sudo ./navit

Da man Navit nicht nur als root ausführen will, legt man nun eine Benutzergruppe namens navit an:

sudo addgroup navit

Man muss die Nutzer für Navit der Gruppe navit hinzufügen:

sudo adduser BENUTZERNAME navit

Das muss für jeden Benutzer gemacht werden, der Navit nutzen darf.

Jetzt sagt man, dass die Dateien der Gruppe navit zugehöhren:

cd /opt/
sudo chown -Rv root:navit navigation/

Das ist notwendig, da Navit ein paar Daten in diesem Verzeichnis speichert, z.Bsp. Lesezeichen, letzte aktuelle Position, Daten von Odometern usw.

Damit Navit funktioniert, müssen nun Schreibrechte für die Gruppe navit gesetzt werden, sonst können manche Einstellungen nicht geändert werden:

sudo chmod -Rv g+rw navigation/

zum Seitenanfang

Navit das erste Mal nach manueller Installation starten

cd /opt/navigation/navit/

./navit

# Navit beenden

cd ~

mkdir ~/.navit/

cp /opt/navigation/navit/navit.xml ~/.navit/

mkdir ~/bin/

echo "#!/bin/bash
cd /opt/navigation/navit/
./navit ~/.navit/navit.xml" | tee ~/bin/navit_start

chmod u+x ~/bin/navit_start/

# Falls der Ordner ~/bin/ neu angelegt wurde, Konsole schliessen und eine neue Konsole oeffnen

navit_start

Bitte noch keinen GPS-Empfänger anschließen, da momentan nur eine kleine Karte vom München existiert. Und wenn man das in Hamburg tut ...

cd /opt/navigation/navit/
./navit

Hier ist es wichtig, erst in den Ordner /opt/navigation/navit zu wechseln und dann mit ./navit das Programm zu starten, da man noch keine User-eigene Konfigurationsdatei vorhanden ist.

Um in Navit persöhnliche Anpassungen vornehmen zu können, empfehle ich den Ordener ~/.navit anzulegen und die Datei navit.xml dort hinein zu kopieren.

mkdir ~/.navit/
cp /opt/navigation/navit/navit.xml ~/.navit

So kann jeder Benutzer seine eigenen Einstellungen in der Datei navit.xml vornehmen, bei einem Update wird diese auch nicht überschrieben.

Allerdings wird das Starten von navit jetzt noch etwas komplizierter:

cd /opt/navigation/navit/
./navit ~/.navit/navit.xml

Um das Aufrufen von navit zu vereinfachen, kann man sich einen Starter erstellen, wo man das Arbeitsverzeichnis und den Startparameter anpasst, oder man erstellt sich ein Startscript namens navit_start im Verzeichnis ~/bin/ mit dem folgenden Inhalt:

#!/bin/bash
cd /opt/navigation/navit/
./navit ~/.navit/navit.xml

Nun muss man das Startscript als ausführbar markieren:

chmod u+r ~/bin/navit_start

Sollte das Verzeichnis ~/bin/ neu erstellt wurden sein, muss man sich einmal ab- und wieder anmelden, damit dieser Ordner in die Systemvariable PATH aufgenommen wird. Nun sollte sich Navit mit der Eingabe navit_start starten lassen.

Hinweis: Bei einigen Systemen wird das Verzeichnis ~/bin/ nicht automatisch in die Umgebungsvariable PATH aufgenommen. Kontrollieren kann man das mit echo $PATH. Hier hilft folgender Eintrag in der Datei ~/.bashrc:

PATH=$PATH:~/bin

zum Seitenanfang

Eine Karte besorgen

Navit kann mit verschiedenen Kartenmaterialien umgehen. Mein Beispiel bezieht sich auf OSM-Karten. Der Vorteil dieser Karten ist die Aktualität und der Preis (0 €), der Nachteil ist, das gerade im ländlichen Raum noch viele Daten nicht erfasst sind, hauptsächlich Hausnummern. Da werden also noch Mitmacher gesucht.

Auf der Seite von Navit :: Planet Extractor kann man sich eine Karte herunterladen. Unter Predifined Area kann man ein Land, Kontinent usw. auswählen. Im grafischen Bereich kann man aber die Region selbst bestimmen. Es muss ja nicht gleich die ganze Welt sein (derzeit >30 GB, Europa >11GB) (Stand Mai 2022: Welt etwa 50GB, Europa > 20GB).

Hinweis: Man kann in Navit auch mehrere kleinere Karten verwenden. Allerdings kann es in den Gegenden, wo sich die Karten überschneiden, zu ungewöhnlichen Anweisungen kommen. Da kann es schon mal sein, dass man auf der Autobahn rechts abbiegen soll.

Speicherort für die Karten wählen

Man sollte sich im Vorfeld Gedanken machen, wo man die Kartendaten speichert. Damit andere Nutzer die Karten nutzen können, wäre der Ordner /usr/share/navit/maps richtig, aber oft hat man seiner Systempartition nicht viel Speicherplatz zugeordnet, da das System nur ein paar Gigabyte benötigt. Speichert man die Kartendaten in seinem persöhnlichen Ordner, haben andere keinen Zugriff darauf. Man kann das ändern, aber das ist keine saubere Lösung.

Ich habe mir folgendes einfallen lassen: Man erstellt ein Verzeichnis /home/navit/maps/, wo man die Kartendaten hinterlegt.

sudo mkdir /home/navit/ /home/navit/maps/
sudo chown -R root:navit /home/navit/
sudo chmod -R g+rw /home/navit/

So haben alle Nutzer der Gruppe navit Lese- und Schreibrechte auf /home/navit/.

Sinnvoll ist es auch, den Namen der Kartendatei umzubenennen (z.Bsp. deutschland.bin), damit man später noch weiss, um welche Karte es sich handelt. Die Dateiendung .bin sollte beibehalten werden.

zum Seitenanfang

Karte in Navit einbinden

Nun muss man Navit sagen, dass es die neue Karte benutzen muss. Das geschieht in der Datei ~/.navit/navit.xml. Diese Datei ist ein XML-Script, aber keine Angst. Aller Anfang ist schwer, aber es lohnt sich.

  • Orginaldatei kopieren, falls was schief geht:

    cp ~/.navit/navit.xml ~/.navit/navit.xml.bak

  • Datei ~/.navit/navit.xml mit einem Editor öffnen.

  • Jetzt sucht man folgenden Bereich (ca. Zeile 800) und ändert diesen so, wie es im Folgenden dargestellt ist.

    <!-- OpenStreetmap-Karten, Hier muesst Ihr den Pfad zu Eurer Karte eintragen. -->
    <!-- Mit enabled="yes" schaltet Ihr die Karten aktiv. -->
    <!-- Mapset template for openstreetmaps -->
    <mapset enabled="yes">
      <map type="binfile" enabled="yes" active="1" data="/home/navit/maps/deutschland.bin"/>
      <map type="binfile" enabled="no" active="0" data="/home/navit/maps/asia-latest.osm.bin"/>
      <map type="binfile" enabled="no" active="0" data="/home/navit/maps/australia-oceania-latest.osm.bin"/>
    </mapset>

    Wie Ihr seht, kann Navit mit mehreren Karten umgehen. Für eine vernünftige Navigation empfehle ich, nur eine Karte aktiv zu schalten. Das Einrücken von Text dient nur der Übersicht und hat keine Auswirkung auf die Funktion.

    active="1" bedeutet, das diese Karte beim Start von Navit angezeigt wird.

  • Alle anderen Karten sollten nun deaktiviert werden. Alle anderen <mapset enabled="yes"> müssen in no geändert werden, damit nur die neue Karte genutzt wird. Beispiel:

    <!-- Beispielkarte von Navit von der Stadt Muenchen -->
    <!-- If you dont want to use the sample map, either set enabled="no" in the next line or remove the xml file from the maps directory -->
    <mapset enabled="no">
      <xi:include href="$NAVIT_SHAREDIR/maps/*.xml"/>
    </mapset>

  • jetzt kann man die Datei speichern und Navit starten (ohne GPS-Empfänger). Die neue Karte sollte jetzt vorhanden sein.

zum Seitenanfang

GPS und Profil aktivieren

Jetzt sollte Navit automatisch auf die aktuelle Position in der Karte springen und einen Cursor (Kreis) anzeigen.

Wenn das alles funktioniert, kann man jetzt auch eine Routenberechnung eingeben und sich navigieren lassen.

Wichtig: Navit darf erst gestartet werden, wenn der GPS-Empfänger Positionsdaten liefert. Ansonsten kann man sich nur die Karte ansehen. Navit verbindet sich nur beim Programmstart mit dem GPS-Empfänger.

zum Seitenanfang

Tipps und Tricks

Navit kommt mit gewissen Standardeinstellungen, die den meisten nicht so gefallen. Oft fehlt das eine oder andere oder die Navigation ist fehlerhaft. Deshalb kann man sich die Software mit der Datei ~/.navit/navit.xml anpassen.

Hinweis: Erst Navit beenden, dann die Datei navit.xml ändern und dann Navit starten.

Für die Nicht-Programmierer; Die Anweisungen zwischen den Tags <!-- und --> sind auskommentiert und werden nicht brücksichtigt.

Es ist kein Fehler, vor der Änderung der Datei eine Sicherheitskopie zu machen, falls was schief geht.

Navit soll der aktuellen Bewegung folgen

Im Standard zeichnet Navit erst die Karte neu, wenn der Cursor die Karte verlässt. Das ist für die vorrausschauende Navigation unpraktisch. Um das zu ändern, sucht man den einleitenden <navit>-Tag und ändert diesen:

<navit center="5104 N 1032 E" zoom="256" tracking="1" orientation="0" recent_dest="256"
  waypoints_flag="1" autozoom="60" autozoom_active="1" radius="33" timeout="60">

Die Parameter im Einzelnen:

  • center="5104 N 1032 E" - Hier schreibt man die Koordinaten ein, wo Navit die Karte starten soll. Im aktuellen Beispiel sind das 51 Grad 4 Minuten Nord und 10 Grad 32 Minuten Ost

  • zoom="256" - der Vergrösserungsfaktor der Karte bei Programmstart

  • tracking="1" - Um vernünftig navigieren zu können sollte dieser Parameter auf 1 gesetzt werden, Damit wird man auf die Straße zurückgeschoben. Straßen und Wege werden mit Punkten erfasst, welche dann miteinander verbunden werden. Deshalb ist nicht jeder Zentimeter, gerade bei Kurven, erfasst. Setzt man diesen Parameter auf 0, berechnet Navit ständig die Route neu.

  • orientation="0" - 0: Karte wird eingenordet, -1: Karte zeigt in Fahrtrichtung, bitte das Minus-Zeichen beachten

  • recent_dest="256* - Anzahl der maximalen Einträge in der Wegbeschreibung.

  • waypoints_flag="1" - 0: Es wird nur zu einem Ziel navigiert, 1: eingegebenes Ziel wird angehängt.

  • autozoom="60" - Anzahl der Sekunden. bis man die Karte verlässt. Hierbei muss autozoom_active auf 1 gesetzt sein. Der Zoom-Faktor passt sich der aktuellen Geschwindigkeit an. Bewegt man sich schneller, sieht man einen größeren Kartenausschnitt.

    Hinweis: Laut Beschreibung soll der Parameter autozoom_seconds lauten, es kann sein, dass bei neueren Versionen dieser Fehler berichtigt wurde.

  • autozoom_active="1" - 0: Maßstab der Karte bleibt konstant, 1: Maßstab der Karte passt sich der Geschwindigkeit an.

  • radius="33" - Angabe in Prozent, dieser Parameter ermöglicht mehr Anzeige des zukünftigen Wegs. Bei 0 ist die aktuelle Position in der Kartenmitte.

  • timeout="60" - Anzahl der GPS-Impulse, bis die aktuelle Position nach Scrollen der Karte wieder angezeigt wird. Ein GPS-Impuls liegt derzeit zwichen 0.5 und 1 Sekunden.

Damit Navit ständig der aktuellen Position folgt, muss im <vehicle>-Tag der Parameter follow="2" gesetzt sein, hier soll Navit alle 2 GPS-Impulse die Karte neu zeichnen. Diesen Wert kann man sich persöhnlich anpassen. Im folgenden Absatz beschreibe ich den vehicle-Tag nochmal genauer.

Datenquellen anpassen

<vehicle name="Local GPS" profilename="car" enabled="yes" active="1" follow="2"
  lag="10" source="gpsd://localhost" gpsd_query="w+xj">

  • name="..." - Definition eines Namens, mit dem man in Navit die Datenquelle auswählen kann.

  • profilename="..." - Angabe des Fahrzeugprofils, das Navit beim Programmstart zu dieser Datenquelle zuordnet. Fahrzeugprofile werden weiter unten mit dem Tag <vehicleprofile name="..." ...> definiert.

  • enabled="..." - yes Navit nutzt diese Datenquelle. - no Navit nutzt diese Datenquelle nicht.

  • active="..." - 1 aktive Datenquelle, mit der navigiert wird - 0 passive Datenquelle - Navit kommt prima mit mehreren Datenquellen zurecht, aber nur ein vehicle-Tag darf auf aktiv gesetzt sein.

  • follow="..." - Anzahl der GPS-Signale, wann Navit die Karte neu zeichnen soll. Ein GPS-Signal kommt ca. alle 0.5 bis 1 Sekunden.

  • lag="..." - Da jede Navigationssoftware auf die GPS-Signale angewiesen ist, ist es eine logische Konsequenz, dass die Software immer ein GPS-Signal hinterher hängt. Mit dem lag-Wert kann das kompensiert werden. Er gibt an, wieviele Zehntelsekunden vorraus gerechnet werden soll. Das Navit-Projekt empfiehlt einen Wert zwischen 10 und 20.

  • source="..." - Angabe der Quelle, wo die GPS-Signale abgerufen werden. Wer den Linux-Dienst gpsd nutzten möchte, gibt source="gpsd://localhost" ein. Man kann auch das Gerät direkt ansprechen, wenn man Leserechte besitzt, als Beispiel: source="file://dev/ttyACM0". Es ist auch möglich, eine aufgezeichnete NMEA-Datei als Datenquelle zu nutzen, so kann man sich die Strecke nochmal ansehen, Beispiel_ source="file://home/BENUTZER/test.nmea"

  • gpsd-query="w+xj" - Dieser Eintrag wird nur bei Nutzung des GPSD-Dienstes gebraucht.

Anmerkung: Es ist möglich mehrere vehicle-Tags anzulegen und diese nmea-Dateien zuzuordnen. Dann hat man mehrere Cursors auf der Karte, die sich da umher bewegen. Es kann aber nur einer als aktiv gesetzt sein.

zum Seitenanfang

Navigation ist fehlerhaft

Oft kommt es vor, dass Navit einem mal einen Umweg über 100 km schicken will. Wenn man von Deutschland nach Schweden will, empfiehlt Navit noch eine schöne Deutschland-Rundreise, bevor es zur dänischen Grenze geht. Das Problem liegt darin, dass es Gebiete gibt, die sehr gut ausgebaut sind, und andere, wo es keine Autobahn gibt. Um das alles relativ vernünftig zu kombinieren habe ich folgendes getan:

Man sucht das aktuelle <vehicleprofile..., in der Regel name="car". und ändert den Parameter route_depth wie folgt:

route_depth="4:25%,6:1%,8:120000,18:4000"

Was heißt das? Navit legt ein Rechteck zwischen Start und Ziel. Hier darf Navit das Rechteck um 25% verlassen, um nach Autobahnen zu suchen. 1% für Bundesstraßen. Die Route darf Teilstücke haben auf Landstraße mit maximal 120 km und Kreisstraßen mit maximal 40 km. Mehr dazu auf der englischen Konfigurationsseite vom Navit_Project.

Es kann vorkommen, dass die navigierte Zeit von der Reisezeit abweicht. Bei mir war das gerade auf Landstraßen so, da habe ich die angezeigte Zeit nie geschafft.

Anpassen kann man die Berechnung innerhalb des aktuellen Profiles <vehicleprofile>. Dort sollte man den Parameter maxspeed_handling auf 1 setzen, damit Navit nicht immer mit der maximalen Geschwindigkeit rechnet, die man auf der Straße fahren darf, sondern nur, wenn diese kleiner ist als die, die sonst für die Berechnung genutzt wird.

Innerhab von <vehicleprofile> gibt es dann einige male den Tag <roadprofile>, und zwar für jeden Straßentyp, angefangen von Servicewegen bis hin zur Autobahn. In dem Parameter speed kann man die wirklich gefahrene Geschwindigkeit anpassen. Auf Landstraßen ist das bei mir maximal 60 km/h. Der Parameter route-weight gibt an, wie stark Navit solche Straßen berücksichtigen soll. So kann man einstellen, ob man mehr Autobahn oder Landstraße fahren möchte.

zum Seitenanfang

Sprachausgabe von Navit mit Linux

Eine Sprachausgabe von Navit zu initialisieren, ist kein Hexenwerk. Hierzu nutzt man das Programm spd-say aus dem Packet speech-dispatcher. In der Regel ist dieses Packet schon installiert. Man kann dies Testen, indem man in der Konsole folgenden Befehl eingibt: spd-say -l d "Guten Tag.". Spricht der Rechner mit Euch, kann man das für Navit nutzen.

In der Datei navit.xml sucht man den Bereich, der für die Sprachausgabe zuständig ist. Dieser befindet sich kurz vor der Einbindung der Karten.
Hier schreibt man folgendes hinein: <speech type="cmdline" data="spd-say -l de '%s'" />

Interessant für die Sprachausgabe ist der Bereich zwischen den Tags <navigation> und </ navigation>. Hier kann man sich die Parameter level0, level1 und level2 anpassen. Was bedeuten diese:

  • level0: Betrag in Meter vor der nächsten Richtungsänderung, wo Navit die Meldung Jetzt abbiegen ausgeben soll

  • level1: Betrag in Meter vor der nächsten Richtungsänderung, wo Navit die Meldung Gleich abbiegen ausgeben soll

  • level2: Betrag in Meter vor der nächsten Richtungsänderung, wo Navit die Meldung Demnächst abbiegen ausgeben soll

zum Seitenanfang

OSD verwenden

Navit mit ODSs

OSD ist die Abkürzung für On Screen Display. Mit Hilfe von OSD kann man Objekte auf der Karte einrichten, wie z.Bsp. Kompass, Anzeige von Restweg, Restzeit, Restweg bis zur nächsten Richtungsänderung, derzeitige Geschwindigkeit, Buttons (z.Bsp. Ein- und Auszoomen), aktueller Straßenname uvm. Hier beschreibe ich nur ein paar einzelne Beispiel, es geht aber noch viel mehr.

Allgemeines zu OSD

Für alle OSDs gilt:

  • OSDs werden grundsästzlich zwischen den Tags <navit> und </navit> konfiguriert.

  • Aktiviert werden die Objekte mit <osd enabled="yes" ...... / >. Deaktivierung mit <osd enabled="no" ...... / >.

  • Die Position des Objekts wird mit den Attributen x="..." und y="..." festgelegt, Beispiel: <osd enabled="yes" x="100" y="50" / >.
    Hier werden die Anzahl der Pixel von der linken oberen Ecke des Bildschirms eingegeben. Man kann auch negative Werte verwenden, diese gelten dann von rechts unten aus.

  • Die Größe des Objekts wird mit den Parametern w="..." h="..." festgelegt (Breite und Höhe in Pixel). Beispiel <osd enabled="yes" x="100" y="50" w="32" h="32"/ >

  • Die Textgröße wird mit dem Parameter font_size="..." festgelegt.

Das soll erstmal reichen Weitere Informationen findet Ihr auf der englischen OSD-Seite vom Navit-Projekt. So jetzt folgen ein paar Beispiele.

Einen Kompass anzeigen

<osd enabled="yes" type="compass" x="0" y="120"/>

Nächste Richtungsänderung anzeigen

<osd enabled="yes" type="navigation_next_turn" x="0" y="-120"/>

Aktuelle Geschwindigkeit anzeigen

<osd enabled="yes" type="text" label="${vehicle.position_speed}" x="0" y="0" w="150" h="48" font_size="360" />

Höhe über NN anzeigen

<osd enabled="yes" type="text" label="${vehicle.position_height}m" x="150" y="0" w="150" h="48" font_size="360"/>

Aktuellen Straßennamen anzeigen

<osd enabled="yes" type="text" label="${navigation.item.street_name_systematic} ${navigation.item.street_name}" x="300" y="0" w="450" h="48" font_size="360" />

Anmerkung: Befehle können mit Enter (Zeilenumbruch) eingegeben werden. Entscheidend sind der einleitende und beendete Tag. Es geht also auch folgende Schreibweise:

<osd enabled="yes" type="text"
   label="${navigation.item.street_name_systematic} ${navigation.item.street_name}"
   x="300" y="0"
   w="450" h="48"
   font_size="360"
/>

Aktuelle Koordinaten anzeigen

<osd enabled="yes" type="text" label="${vehicle.position_coord_geo}" x="-450" y="0" w="450" h="48" font_size="360" />

Den nächsten Straßennamen anzeigen, in welche man abbiegen muss

<osd enabled="yes" type="text" label="${navigation.item[1].street_name_systematic} ${navigation.item[1].street_name}" x="120" y="-48" w="520" h="48" font_size="420"/>

Ankunftsuhrzeit anzeigen

<osd enabled="yes" type="text" label="ETA ${navigation.item.destination_time[arrival]}" x="-200" y="-48" w="200" h="48" font_size="420"/>

Restreisezeit anzeigen

<osd enabled="yes" type="text" label="TR ${navigation.item.destination_time[remaining]}" x="-400" y="-48" w="200" h="48" font_size="420" />

Reiserestweg anzeigen

<osd enabled="yes" type="text" label="DR ${navigation.item.destination_length[named]}" x="-600" y="-48" w="200" h="48" font_size="420"/>

Odometer verwenden

Odometer kann man für Sachen verwenden, die nicht zur Navigation gehören. Hier folgen 3 Beispiele, die mit einem Doppelklick zurückgesetzt werden:

Durchschnittsgeschwindigkeit: <osd enabled="yes" type="odometer" x="-160" y="80" w="160" h="40" font_size="360" label="${avg_spd} km/h" name="persistent_odometer_1" disable_reset="0" autostart="1" />

Maximale Geschwindigkeit: <osd enabled="yes" type="odometer" x="-160" y="80" w="160" h="40" font_size="360" label="${max_spd} km/h" name="persistent_odometer_2" disable_reset="0" autostart="1" />

Zurück gelegte Wegstrecke: <osd enabled="yes" type="odometer" x="-160" y="160" w="160" h="40" font_size="360" label="${distance}" name="persistent_odometer_3" disable_reset="0" autostart="1" />

zum Seitenanfang

OSM-Karte auf einer Webseite

Größere Karte anzeigen

Mitmacher gesucht

Navit ist ein offenes Projekt genauso wie Open-Street-Map. Jeder darf diese Software kostenlos nutzen.

Damit das so bleibt, müssen andere mitmachen. Wenn die Arbeit an einzelnen Menschen hängen bleibt, sind solche Projekte bald verschwunden.

Wie kann man mitmachen

Das Navit-Projekt sucht Menschen, die mit der Programmiersprache C vertraut sind. Auf den Projekt-Seiten gibt es eine ToDo-Liste, eigene Ideen sind auch willkommen. Ich gehe auf diese Thema nicht näher ein, da machen mir die anderen was vor.

Wer nicht so der Programmierer ist, kann mithelfen, das Kartenmaterial zu verbessern. Das Open-Street-Map-Projekt ist eine für jedermann offene Karte. Jeder kann etwas einzeichnen, jeder kann etwas berichtigen oder sogar löschen. Auf der Seite von OpenStreetMap (kurz OSM) kann man sich einen Account erstellen, und schon ist man dabei.

Allerdings rate ich von den Online-Editor ab, da ist mir schon mal was passiert, was andere wieder in Ordnung bringen mussten. Ich habe gleich Feedback erhalten und Tipps, wie ich sowas vermeiden kann.

Seitdem arbeite ich mit dem Programm josm (Java-Open-Street-Map), also ein Programm, welches in der Programmiersprache Java entwickelt wurde. Man lädt sich einen kleinen Bereich der Karte herunter, bearbeitet diesen, und nach erfolgreicher Prüfung werden nur die Änderungen hochgeladen. Nach ca. 5 Minuten ist die Änderung online. JOSM bietet viele Vorlagen, um Eigenschaften der Kartenobjekte anzugeben.

Vielleicht nochmal ein paar Zahlen: Der Freistaat Bayern hatte mal Kartendaten offen zur Verfügung gestellt. Ein zu bezahlender Kartograph hätte 2 Jahre gebraucht, um diese Daten in der OSM-Karte zu integrieren, die Gemeinschaft schaffte es in einem Monat.

Wenn jeder nur vor seiner Haustür aufrämt, hätten wir eine eine top-aktuelle Weltkarte.

zum Seitenanfang

Spezieller Tipp - Variable autozoom_seconds

Für diesen Tipp sind C-Programmierkenntnisse von Vorteil. Änderungen am Quellcode kann die Software unbrauchbar machen und das System beschädigen.

Beim Testen von Navit im PKW hatte ich festgestellt, dass, wenn ich Landstraße oder Autobahn fahre, doch gerne einen größeren Kartenausschnitt sehen will. Aber im Stadtverkehr ist alles prima. Also den Parameter autozoom_second zu ändern, wäre der falsche Weg. Man könnte sich mittels OSD zwei Buttons bauen, mit denen man den Parameter vergrößern bzw. verkleinern kann. Aber nach und vor jeder Ortschaft auf dem Display umherklicken gefällt mir nicht. Außerdem will ich mein Auto sicher und unabgelenkt auf den Straßen bewegen.

Also bitte eine andere Lösung. Da Navit quelloffen ist und jeder das Programm nach seinen Willen anpassen kann, bin ich zu folgender Lösung gekommen: Lass Navit den Parameter autozoom_second nach der Geschwindigkeit anpassen. Wie kann man das machen.

Als erstes sucht man im Quelltextordner die Datei navit.c, welche man mit einem Editor öffnet. Im Beispiel liegt diese in ~/Downloads/navit/navit/navit.c

Hier sucht man die Funktion static void navit_autozoom(.....), bei mir in Zeile 628.

Nun ändert man dort ein paar Einträge, wie im folgenden Feld dargestellt ist:

/**
* @brief Automatically adjusts zoom level
*
* This function automatically adjusts the current
* zoom level according to the current speed.
*
* @param this_ The navit struct
* @param center The "immovable" point - i.e. the vehicles position if we're centering on the vehicle
* @param speed The vehicles speed in meters per second
* @param dir The direction into which the vehicle moves
*/
static void
navit_autozoom(struct navit *this_, struct coord *center, int speed, int draw)
{
  struct point pc;
  int distance,w,h;
  double new_scale;
  long scale;

  /* Anfang Aenderung variables Autozoom */
  /* Folgende 3 Variablen anlegen */
   double faktor = 1.6;
   int zoom_seconds = 0;
  short speed_min = 38;

  /* Originale Pruefung auf aktives Autozoom beibehalten */
  if (! this_->autozoom_active) {
     return;
  }

  /* Distance neu berechnen */
  zoom_seconds = (double)(speed - speed_min) * faktor;
   if (zoom_seconds < 5)
     {
     zoom_seconds = 5;
     }
  if (zoom_seconds > 3600)
     {
     zoom_seconds = 3600;
     }
  distance = speed * zoom_seconds;
  /* Ende der Aenderungen fuer variables Autozoom */

  transform_get_size(this_->trans, &w, &h);
  transform(this_-gt;trans, transform_get_projection(this_->trans), center, &pc, 1, 0, 0, NULL);
  scale = transform_get_scale(this_-gt;trans);

Jetzt muss navit neu kompiliert werden. Manuell geht das wie folgt:

cd /opt/navigation/
sudo cmake ~/Downloads/navit
sudo make

Beschreibung der Änderungen

Es wurden 3 neue Variablen definiert und zwar faktor, zoom_seconds und speed_min.

Die Variable zoom_seconds ersetzt autozoom_seconds. Der Eintrag in der Datei navit.xml wird nicht mehr berücksichtigt, da dieses ständig neu berechnet wird.

Die Variable speed_min definiert einen Wert in km/h, ab wann Navit nicht weiter aufzoomen soll, sonst wäre es im Stillstand bei unendlich größ. Außerdem ist ein gleicher Zoom bei 5 oder 30 km/h sinnvoll.

Die Variable faktor gibt an, wieviel der Wert autozoom_seconds je schnellere 1 km/h erhöht werden soll. Das Ergebnis distance wird immer auf eine Ganzzahl abgerundet.

Nachteile dieser Aktion

An Autobahnkreuzen fährt man doch noch mit schnellerer Geschwindigkeit, deshalb wird hier nicht so aufgezoomt. Navit bringt aber noch die Anweisungen, ich selbst kann auch nach Schildern fahren.

Will man mit den Parametern spielen, um seine optimale Konfiguration zu erreichen, muss man das Programm jedesmal neu kompilieren. Vielleicht kann man diese Variablen irgendwann in der Datei navit.xml beim Programmstart mit übergeben.

Das Aussehen verändern (Layouts)

Am Anfang nochmal der Hinweis: Bitte sichert die Datei navit.xml, bevor Ihr große Veränderungen vornehmt.

Das Aussehen ist auf der einen Seite Geschmacksache, auf der anderen Seite muss sie zum Nutzer passen. Ein Wanderer oder Radfahrer kann nichts mit der Ansicht eines Autofahrers anfangen und umgekehrt genauso. Deshalb kann man sich verschiedene Layouts erstellen. Hat man das hinbekommen, kann man Navit sowohl als Wanderer, Fahrradfahrer und als Autofahrer nutzen. Allerdings ist das sehr zeitintensiv.

Layouts kann mit den Tags <layout> und </layout> erstellen. Dieses Feld ist sehr umfangreich und kann sich mit Aktualisierung der Software ändern.

Wenigstens ein paar Parameter:

Möchte man das alles als Neuling ausprobieren und verfeinern, sind die nächsten Tage gelaufen. Auf den Projekt-Seiten von Navit sind viele brauchbare Layouts zum Download bereitgestellt. Habt Ihr selbst ein gutes Layout kreiert, könnt Ihr dieses anderen zur Verfügung stellen. Weitere Infos findet Ihr auf der navit.xml-Seite.

zum Seitenanfang

Fehler beseitigen

Und wieder der Hinweis: Bitte sichert die Datei navit.xml, bevor Ihr große Veränderungen vornehmt.

Leider kann es vorkommen, dass sogar bei der originalen navit.xml Einträge vorhanden sind, mit dem das Programm nichts anfangen kann. Das hat was mit Aktualisierung zu tun, bei denen Optionen hinzugefügt oder entfernt werden. Und wenn man selbst Einträge hinzufügt oder ändert, ist der Fehlerteufel auch nicht ganz ausgeschlossen.

Wenn Ihr Navit startet und Navit dann die Karte nicht vollständig zeichnet (darstellt), dann liegt meist so ein kleiner Fehler vor. Bewegt man die Karte ein kleines Stück, ist sie vollständig gezeichnet.

Um solche kleinen Fehler zu finden, startet man Navit direkt aus der Konsole, beendet es wieder und schaut sich die Log-Ausgabe in der Konsole an.

Jetzt kann man die Meldungen analysieren und in mühevoller Arbeit die entsprechenden Einträge in den xml-Datei(en) korrigiren, ausblenden (mit <!-- ..... -->) oder löschen. Hinweis: Manchmal stört schon ein Leerzeichen.

Hat man die xml-Datei(en) endlich aufgeräumt, dankt es Euch Navit und zeichnet sofort die komplette Karte nach Programmstart.

zum Seitenanfang

Karten selber bauen

Nur die verrückten Harten
bauen große Navit-Karten.

Was sich wie ein lustiger Spruch anhört, ist durchaus ernst gemeint. Gerade, wenn es um größere Karten geht sollte folgendes klar sein:

Zum Navit-Projekt gehört das Programm maptool. Dieses Programm ist in der Lage aus bestimmtet.txt-Dateien, Garmin-Daten und (für uns hier relevant) OSM-Daten eine Navit-Karte zu erstellen. Unter Debian-Systemen kann es wie folgt installiert werden:

sudo apt install maptool

maptool liest entsprechende Daten ein, sortiert sie und erstellt die fertigen Daten. Das passiert in einigen Stufen (Phasen). Deshalb werden jede Menge Daten zwischengespeichert.

Auch wenn maptool diese temporären Daten in komprimierter Form (ZIP) speichert, sollte das nicht auf einer SSD-Festplatte geschehen, da diese nur begrenzte Schreibzyklen in ihrer Lebensdauer hat. HDD-Platten sind da um ein Vielfaches höher. Es geht hier um viele Gigabytes bei größeren Karten.

Hinweis: maptool funktioniert bei großen Datenmengen nicht auf einem 32-Bit-System. Ein 64-Bit-System wird also zur Vorraussetzung.

Angemerkt sei auch, dass die Verarbeitungszeit von maptool um ein Expotenzielles zur der Größe der Karte steigt. Deshalb empfehle ich Neulingen, erst mal die Sache mit kleineren Karten zu probieren.

Download von OSM-Daten

Aus dem OSM-Projekt selbst kann man sich nur Daten in einem Quadranten von etwa 0.1 Grad x 0.1 Grad herunterladen. Das ist natürlich zu wenig für eine Navigationskarte.

Deshalb gibt es externe Serverdienste, die es uns ermöglichen, größere Datenmengen zu bekommen:

Wir nutzen hier in diesem Beispiel die Daten im .osm.bz2-Format, also komprimiert.

Die Karte bauen

Der normale Vorgang wäre:

  • Daten entpacken (Upps, Speicher voll, weil ungefähr 10 mal größer)
  • Daten an maptool übergeben (Upps: Speicher ist schon voll und maptool will temporäre Daten auch speichern)

Mist.

Deshalb werden wir eine Pipe (eine Röhre) benutzen, um die entpackten Daten maptool zukommen zu lassen. Die Daten müssen also nicht zwischengespeichert werden.

Der Befehl dazu lautet:

bzcat meineDaten.osm.bz2 | ./maptool -6 meineKarte.osm.bin

Es sollte klar sein, dass nun 2 Programme Vollgas geben, bzcat und maptool. 2 mal CPU. Und eine Unmenge an Daten werden übertragen. Da kann es vorkommen, dass schwächere Systeme zu knappern haben.

Nur die Harten
bauen Karten.

Übrigens: Die Option -6 gibt an, dass die Navit-Karte im 64-Bit-Format komprimiert wird. Auch 32-Bit-Systeme können diese lesen. Nach letzten Informationen soll diese Option zum Standard werden. Größere Karten brauchen dieses Format aufgrund der Datenmenge (2 hoch 32 reicht nicht aus).

zum Seitenanfang

Feedback

Meckern oder Fragen stellen könnt Ihr hier. Nutzt einfach das Formular auf dieser Seite.

zum Seitenanfang

Weiteres

Weitere Infos über die Datei navit.xml könnt Ihr auf dieser Seite über navit.xml nachlesen.

zum Seitenanfang

zur Startseite