
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.:
-
2D- und 3D-Ansicht
-
automatischer Nachtmodus
-
Planungen mit mehreren Zielen
-
Fuügänger- und Fahrradnavigation (besonders interessant mit Open-Street-Map-Karten, da hier viele Wander- und Radwege vorhanden sind), eigene Anpassungen konfigurierbar, interessante Kartenpunkte (POIs)
-
Aufzeichnung eines gefahrenen bzw. gelaufenen Weges
- Armaturen (OSDs), um verschiedene Informationen anzuzeigen oder das Programm zu steuern
-
uvm.
zum Seitenanfang
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
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
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
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
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.
zum Seitenanfang
-
Wieder die Datei navit.xml in einem Editor öffnen.
-
Ziemlich weit oben den einleitenden <vehicle>-Tag suchen und die Zeile wie folgt ändern:
<!-- Vehicle with GPS enabled for gpsd on unix -->
<vehicle name="Local GPS" profilename="car" enabled="yes" active="1" follow="2" lag="10"
source="gpsd://localhost" gpsd_query="w+xj">
Somit wird festgelegt, dass Navit den Dienst gpsd benutzen und mit dem Profil car (Auto) verbinden soll. So ist jetzt standardmäßig eine PKW-Navigation aktiviert.
-
Rechner mit GPS-Empfänger verbinden und warten, bis dieser Positionsdaten sendet. Bei meinem Empfänger wird das duch eine blinkende grüne LED angezeigt. Es dauert bei mir etwa 40 Sekunden.
-
Navit starten
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
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.
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
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
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 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
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
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.
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:
-
itemgra - Alle Inhalte innerhalb dieses Tags bestimmen das Aussehen für den jeweileigen item_types
-
order="xx" - Hier wird angegeben, bei welcher Zoomstufe der jeweilige Typ angezeigt werden soll. Dabei ist 0 die maximale Zoomstufe und 18 der kleinste Kartenausschnitt. Schreibt man order="0-", gilt das fü alle Zoomstufen. Schreibt man order="10-12", gilt das für die Zoomstufen 10 bis 12.
-
color="#xxyyzz" - Farbe als Angabe in hexadezimalen Zahlen (0 bis 9 und dann a bis f) im RGB-Format. Also #000000 ist schwarz, #ffffff ist weiß, #ff0000 ist rot, #00ff00 ist grün und #0000ff ist blau. Es sind 16777216 Farben möglich. Im Internet gibt es einige Tools, um diese Werte zu ermitteln. Das gleiche gilt auch für den Parameter background_color (Hintergrundfarbe).
-
text_size="xx" - Textgröße in Pixel (Beschriftungstext).
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
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
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:
- Man braucht viel freien Speicherplatz (etwa das 5-fache der heruntergeladenen Daten).
- Man braucht mehrere Tage Zeit.
- In einigen Phasen kommt es vor, dass die gesamten CPU-Leistungen in Anspruch genommen werden.
- Für die Weltkarte benötigt man derzeit 12 GB freien RAM-Speicher!
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
Meckern oder Fragen stellen könnt Ihr hier. Nutzt einfach das Formular auf dieser Seite.
zum Seitenanfang