Alex
Teammitglied
- Registriert
- 10. Januar 2012
- Beiträge
- 21.394
- Lösungen
- 9
- Reaktionspunkte
- 30.293
- Punkte
- 1.113
- Ort
- Paradise City
Als Basis für dieses HowTo, geh' ich von einem Raspberry Pi mit Raspbian als OS aus.
Als Bildschirm hab ich diesen hier verwendet:
und diesen GPS-Stick: Link ist nicht mehr aktiv.
1. Grundlagen:
2. Austauschen des Kernels gegen Kernel mit Touch-Modul:
3. Kalibrieren des Touchscreens:
4. Kompilieren von Navit:
5. Anpassen der navit.xml:
Falls jemand die ganze Navit.xml will bitte ne PN schreiben, sie ist zu groß für dieses HowTo
6. Navit in LXDE integrieren:
Quellen:
Dieses HowTo ist mit Sicherheit noch nicht vollständig. Es fehlt zum Beispiel noch die Sprachausgabe, diese werde ich bei Gelegenheit nachreichen.
Es soll später auch noch ein HowTo für XBMC werden. Hier gibt's aber noch Probleme mit dem Touchscreen.
Als Bildschirm hab ich diesen hier verwendet:
Sie müssen registriert sein, um Links zu sehen.
und diesen GPS-Stick: Link ist nicht mehr aktiv.
1. Grundlagen:
Zunächst bringen wir ein mal das OS auf den aktuellen Stand:
Danach installieren wir die benötigten Pakete um Navit zu kompilieren:
Für die Unterstützung des GPS-Sticks, brauchen wir noch folgende Pakete:
Damit der Bildschirm komplett ausgefüllt wird, muss noch /boot/config.txt angepasst werden:
Hier die vorhandenen Werte mit denen überschreiben:
Nun muss ermittelt werden, ob der GPS-Stick korrekt erkannt wurde und über welche Schnittstelle er erreichbar ist:
Der Stick sitzt also an ttyUSB0, also starten wir den GPS-Deamon testweise wie folgt:
Mit cgps-s kann man testen, ob das Ganze arbeitet:
GPSD startet bei jedem Systemstart, funktioniert aber nicht. Selbst nach dem Befehl sudo update-rc.d gpsd remove wird es noch von irgendwo her gestartet.
Hierfür habe ich nur eine dreckige Lösung, die aber wenigstens funktioniert:
Es besteht auch noch die Möglichkeit, via GPS die Systemzeit zu aktualisieren:
Code:
sudo apt-get update && sudo apt-get upgrade
Danach installieren wir die benötigten Pakete um Navit zu kompilieren:
Code:
sudo apt-get install subversion espeak cmake freeglut3-dev imagemagick libdbus-1-dev libdbus-glib-1-dev libdevil-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgarmin-dev libglc-dev libgps-dev libgtk2.0-dev libimlib2-dev libpq-dev libqt4-dev libqtwebkit-dev librsvg2-bin libsdl-image1.2-dev libspeechd-dev libxml2-dev ttf-liberation
Für die Unterstützung des GPS-Sticks, brauchen wir noch folgende Pakete:
Code:
sudo apt-get install gpsd gpsd-clients python-gps
Damit der Bildschirm komplett ausgefüllt wird, muss noch /boot/config.txt angepasst werden:
Code:
sudo nano /boot/config.txt
Hier die vorhandenen Werte mit denen überschreiben:
Code:
overscan_left=-4
overscan_right=-2
overscan_top=-14
overscan_bottom=-18
Nun muss ermittelt werden, ob der GPS-Stick korrekt erkannt wurde und über welche Schnittstelle er erreichbar ist:
Code:
dmesg | grep ttyUSB
[ 7.930852] usb 1-1.2: pl2303 converter now attached to ttyUSB0
Der Stick sitzt also an ttyUSB0, also starten wir den GPS-Deamon testweise wie folgt:
Code:
gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
Mit cgps-s kann man testen, ob das Ganze arbeitet:
Code:
┌───────────────────────────────────────────┐┌─────────────────────────────────┐
│ Time: 2013-08-18T15:05:10.0Z ││PRN: Elev: Azim: SNR: Used: │
│ Latitude: 51.231848 N ││ 14 43 249 40 Y │
│ Longitude: 0.514014 E ││ 25 75 283 37 Y │
│ Altitude: 132.3 m ││ 2 26 085 31 Y │
│ Speed: 0.0 kph ││ 12 56 070 18 Y │
│ Heading: 0.0 deg (true) ││ 9 19 133 22 Y │
│ Climb: 0.0 m/min ││ 27 09 133 17 Y │
│ Status: 3D FIX (1 secs) ││ 4 17 045 31 Y │
│ GPS Type: ││ 32 05 321 20 Y │
│ Longitude Err: +/- 8 m ││ 29 41 192 18 Y │
│ Latitude Err: +/- 9 m ││ 31 28 304 42 Y │
│ Altitude Err: +/- 27 m ││ │
│ Course Err: n/a ││ │
│ Speed Err: +/- 68 kph ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
│ ││ │
└───────────────────────────────────────────┘└─────────────────────────────────┘
GPSD startet bei jedem Systemstart, funktioniert aber nicht. Selbst nach dem Befehl sudo update-rc.d gpsd remove wird es noch von irgendwo her gestartet.
Hierfür habe ich nur eine dreckige Lösung, die aber wenigstens funktioniert:
Zuerst hab ich den Daemon für GPSD entfernt:
Dann neuen Daemon mit dem Namen gpsdrestart angelegt:
Dort kam dann folendes rein:
Die Rechte anpassen:
Nun noch den Autostart aktivieren:
Code:
sudo rm /etc/init.d/gpsd
Code:
sudo nano /etc/init.d/gpsdrestart
Code:
#! /bin/sh
# /etc/init.d/gpsdrestart
touch /var/lock/gpsdrestart
case "$1" in
start)
echo "Töte gpsd... "
killall gpsd
echo "Starte gpsd neu... "
gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
;;
*)
echo "Usage: /etc/init.d/navit {start}"
exit 1
;;
esac
exit 0
Die Rechte anpassen:
Code:
sudo chmod 755 /etc/init.d/gpsdrestart
Nun noch den Autostart aktivieren:
Code:
sudo update-rc.d gpsdrestart defaults
Es besteht auch noch die Möglichkeit, via GPS die Systemzeit zu aktualisieren:
Hierzu muss NTP installiert werden:
Jetzt muss noch folgendes in die /etc/ntp.conf unter die existierenden Server hinzugefügt werden:
Zum Schluss noch NTP neustarten:
Mit ntpq -p kann nun geprüft werden, ob es funktioniert:
Code:
sudo apt-get install ntp
Jetzt muss noch folgendes in die /etc/ntp.conf unter die existierenden Server hinzugefügt werden:
Code:
# gps ntp
server 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge 127.127.28.1 refid PPS
Zum Schluss noch NTP neustarten:
Code:
sudo service ntp restart
Mit ntpq -p kann nun geprüft werden, ob es funktioniert:
Code:
pi@raspberrypi:~$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ns1.luns.net.uk 33.117.170.50 2 u 54 64 7 65.454 2.666 5.800
+resntp-b-vip.lo 127.151.91.34 3 u 45 64 17 55.704 -5.169 8.482
+bart.nexellent. 194.242.34.149 2 u 17 64 17 76.585 -4.271 57.595
+v01.s01.be.it2g 193.190.230.65 2 u 20 64 37 86.464 -2.374 228.460
xSHM(0) .NMEA. 0 l 11 16 377 0.000 144.714 3.026
SHM(1) .PPS. 0 l - 16 0 0.000 0.000 0.000
2. Austauschen des Kernels gegen Kernel mit Touch-Modul:
Den passenden Kernel gibt's hier zum Download:
Danach entpacken:
Die kernel.img Datei ersetzen:
/lib ersetzen:
Im Anschluss neustarten
Code:
wget http://andrei-development.googlecode.com/files/kernel_3_6_11_eGalax_feb_2013.tar.gz
Danach entpacken:
Code:
cd ~
tar -xzf kernel_3_6_11_eGalax_feb_2013.tar.gz
Die kernel.img Datei ersetzen:
Code:
sudo cp ~/kernel_3_6_11_eGalax_feb_2013/kernel.img /boot/kernel.img
/lib ersetzen:
Code:
sudo cp -r kernel_3_6_11_eGalax_feb_2013/modules/lib /lib
Im Anschluss neustarten
3. Kalibrieren des Touchscreens:
Herunterladen des Kalibrators:
Entpacken:
Kompilieren:
Über folgenden Befehl kann der Kalibrator aus der Konsole gestartet werden:
Der Kalibrator gibt am Ende dann die Werte aus. Da die Einstellungen einen Neustart nicht überleben, müssen sie noch gesichert werden:
Der Inhalt sieht bei mir so aus:
Code:
cd ~
wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz
Entpacken:
Code:
tar -xf xinput_calibrator-0.7.5.tar.gz
Kompilieren:
Code:
cd xinput_calibrator-0.7.5
./configure
sudo make
sudo make install
Über folgenden Befehl kann der Kalibrator aus der Konsole gestartet werden:
Code:
xinput_calibrator
Der Kalibrator gibt am Ende dann die Werte aus. Da die Einstellungen einen Neustart nicht überleben, müssen sie noch gesichert werden:
Code:
sudo nano /usr/share/X11/xorg.conf.d/01-input.conf
Der Inhalt sieht bei mir so aus:
Code:
Section "InputClass"
Identifier "calibration"
MatchProduct "eGalax Inc. USB TouchController"
Option "Calibration" "56 1980 1876 111"
EndSection
4. Kompilieren von Navit:
Jetzt wird die aktuelle Version von Navit mit folgenden Befehlen ausgecheckt:
Nun erstellen wir ein Verzeichnis und kompilieren Navit:
Dies dauert auf dem Raspberry leider etwas.
Um zukünftig navit mal up zu daten, muss geht man wie folgt vor:
Danach, wie oben beschrieben, neu kompilieren.
Als nächstes brauchen wir noch eine Karte.
Diese kann hier heruntergeladen werden:
Code:
cd ~
svn co svn://svn.code.sf.net/p/navit/code/trunk/navit/ navit
Nun erstellen wir ein Verzeichnis und kompilieren Navit:
Code:
mkdir navit-build
cd navit-build
cmake ~/navit
make
Dies dauert auf dem Raspberry leider etwas.
Um zukünftig navit mal up zu daten, muss geht man wie folgt vor:
Code:
cd /home/pi/navit
svn update
Danach, wie oben beschrieben, neu kompilieren.
Als nächstes brauchen wir noch eine Karte.
Diese kann hier heruntergeladen werden:
Sie müssen registriert sein, um Links zu sehen.
5. Anpassen der navit.xml:
Nun muss noch der Speicherort der Karte, sowie ihr Namen in der navit.xml angepasst werden.
Diese findet sich hier und wird wie folgt angepasst:
Ich habe die Karte dann europa.bin genannt und auf einen USB-Stick kopiert, der Pi-Car heißt und die navit.xml wie folgt bearbeitet:
Einmal die die Beispielkarte deaktiviert:
dann noch die eigene OpenStreetMap aktiviert:
Damit sich die Karte mit der Fahrtrichtung dreht, muss noch folgendes geändert werden:
<navit center="4808 N 1134 E" zoom="256" tracking="1" orientation="-1" recent_dest="10" autozoom_active="1">
Mein Navit sieht so aus:
Um dies zu erreichen, hab ich am Ende der Datei noch folgendes eingefügt:
Diese findet sich hier und wird wie folgt angepasst:
Code:
cd ~/navit-build/navit
nano navit.xml
Ich habe die Karte dann europa.bin genannt und auf einen USB-Stick kopiert, der Pi-Car heißt und die navit.xml wie folgt bearbeitet:
Einmal die die Beispielkarte deaktiviert:
Code:
<mapset enabled="no">
<xi:include href="$NAVIT_SHAREDIR/maps/*.xml"/>
</mapset>
dann noch die eigene OpenStreetMap aktiviert:
Code:
<!-- Mapset template for openstreetmaps -->
<mapset enabled="yes">
<map type="binfile" enabled="yes" data="/media/Pi-Car/map/europa.bin"/>
</mapset>
Damit sich die Karte mit der Fahrtrichtung dreht, muss noch folgendes geändert werden:
<navit center="4808 N 1134 E" zoom="256" tracking="1" orientation="-1" recent_dest="10" autozoom_active="1">
Mein Navit sieht so aus:
Du musst angemeldet sein, um Bilder zu sehen.
Um dies zu erreichen, hab ich am Ende der Datei noch folgendes eingefügt:
Code:
<!-- Anzeige-Einstellungen -->
<!-- Zoom-Buttons -->
<osd enabled="yes" type="button" x="10" y="-116" command="zoom_in()" src="zoom_in.png"/>
<osd enabled="yes" type="button" x="10" y="-55" command="zoom_out()" src="zoom_out.png"/>
<!-- aktuelle Geschwindigkeit -->
<osd enabled="yes" type="text" label="${vehicle.position_speed}" x="10" y="60" font_size="800" w="205" h="55" align="4" background_color="#c63030cc"/>
<!-- Anzeige der Fahrtrichtungsänderung -->
<osd enabled="yes" type="navigation_next_turn" font_size="350" x="10" y="130" w="100" h="100" background_color="#c63030cc" icon_src="$NAVIT_SHAREDIR/xpm/%s_wh_48_48.png" />
<!-- Entfernung zur nächsten Fahrtrichtungsänderung -->
<osd enabled="yes" type="text" label="${navigation.item[1].length[named]}" font_size="350" x="10" y="240" w="100" background_color="#c63030cc" />
<!-- Name der Straße, auf der man sich gerade befindet -->
<osd enabled="yes" type="text"label="Aktuelle Straße: ${navigation.item.street_name_systematic}" x="-805" y="10" align="0" background_color="#c63030cc" font_size="550" w="795" h="40"/>
<!-- per GPS errechnete Höhe über Meer (dies ist zwar recht ungenau, aber dennoch oftmals von Interesse) -->
<osd enabled="yes" type="text" label="${vehicle.position_height} m" x="-80" y="55" w="70" h="40" background_color="#c63030cc"/>
<!-- GPS-Status -->
<osd enabled="yes" type="gps_status" x="-60" y="100" w="50" h="40" background_color="#c63030cc"/>
<osd enabled="yes" type="text" label="${vehicle.position_sats_used}/${vehicle.position_qual}" x="-60" y="140" w="50" h="25" background_color="#c63030cc"/>
<!-- voraussichtliche Ankunftszeit -->
<osd enabled="yes" type="text" label="Ankunftszeit ${navigation.item.destination_time[arrival]}" x="70" y="-30" w="200" h="30" background_color="#c63030cc"/>
<!-- Restdistanz -->
<osd enabled="yes" type="text" label="Restdistanz ${navigation.item.destination_length[named]}" x="270" y="-30" w="200" h="30" background_color="#c63030cc"/>
<!-- Restzeit - Wie lange die Fahrt noch dauert -->
<osd enabled="yes" type="text" label="Restzeit ${navigation.item.destination_time[remaining]}" x="470" y="-30" w="200" h="30" background_color="#c63030cc"/>
Falls jemand die ganze Navit.xml will bitte ne PN schreiben, sie ist zu groß für dieses HowTo
6. Navit in LXDE integrieren:
Wenn man sich Navit selbst kompiliert, fehlt leider noch die Integration als Symbol im Menü.
Und Autostart wäre ja auch nicht schlecht. Hierzu sind wieder einige Schritte notwendig:
Ein Bash-Datei zum Starten anlegen:
Diese soll folgenden Inhalt haben:
Dannn noch die passende Rechte:
Jetzt wird die Datei für den Startmenü-Eintrag angelegt und befüllt:
Inhalt:
Um Navit direkt beim Hochfahren starten zu lassen, die Datei noch nach /$HOME/.config/autostart kopieren:
Falls die Verzeichnisse nicht vorhanden sind, ggf. mit mkdir /$HOME/.config/autostart anlegen
Damit das Ganze auch noch schön ausschaut, das Bild unten noch nach /usr/share/icons/hicolor/128x128/apps/navit.png kopieren:
Damit nicht der Bildschirmschoner nach kurzer Zeit einsetzt, muss noch folgendes gemacht werden:
dort die Zeile mit xscreensaver löschen
Und Autostart wäre ja auch nicht schlecht. Hierzu sind wieder einige Schritte notwendig:
Ein Bash-Datei zum Starten anlegen:
Code:
sudo nano /usr/bin/navit.sh
Diese soll folgenden Inhalt haben:
Code:
#!/bin/bash
cd /home/pi/navit-build/navit
./navit
Dannn noch die passende Rechte:
Code:
sudo chmod 755 /usr/bin/navit.sh
Jetzt wird die Datei für den Startmenü-Eintrag angelegt und befüllt:
Code:
sudo nano /usr/share/applications/Navit.desktop
Code:
[Desktop Entry]
Version=1.0
Name=Navit
Name[de]=Navit
Name[fr]=Navit
Comment=The open source vector based navigation program with routing engine
Comment[de]=Ein vektorbasiertes Navigationsprogramm
Comment[fr]=Le logiciel opensource de navigation vectorielle
Exec=/usr/bin/navit.sh
Icon=/usr/share/icons/hicolor/128x128/apps/navit.png
StartupNotify=true
Terminal=false
Type=Application
Categories=GTK;Utility;Geography;
GenericName=Navit
GenericName[de]=Navit
Um Navit direkt beim Hochfahren starten zu lassen, die Datei noch nach /$HOME/.config/autostart kopieren:
Code:
cp /usr/share/applications/Navit.desktop /$HOME/.config/autostart/
Damit das Ganze auch noch schön ausschaut, das Bild unten noch nach /usr/share/icons/hicolor/128x128/apps/navit.png kopieren:
Du musst angemeldet sein, um Bilder zu sehen.
Damit nicht der Bildschirmschoner nach kurzer Zeit einsetzt, muss noch folgendes gemacht werden:
Code:
sudo nano /etc/xdg/lxsession/LXDE/autostart
Quellen:
Sie müssen registriert sein, um Links zu sehen.
Sie müssen registriert sein, um Links zu sehen.
Sie müssen registriert sein, um Links zu sehen.
Dieses HowTo ist mit Sicherheit noch nicht vollständig. Es fehlt zum Beispiel noch die Sprachausgabe, diese werde ich bei Gelegenheit nachreichen.
Es soll später auch noch ein HowTo für XBMC werden. Hier gibt's aber noch Probleme mit dem Touchscreen.
Zuletzt bearbeitet: