Two options came up, GpsDrive and Navit - both of which recommend map data from Open StreetMap. Of these only Navit is available in the Debian/Raspian repository, so I tried that first.
$ sudo apt-get install gpsd gpsd-clients navit
Since Navit is a graphical tool, you'll either need to run with a screen attached, or ssh in with X forwarding and display Navit on your computer. I did the later, there is hardly any GPS signal where our TV is, and I don't yet have any other suitable screen.
Assuming gpsd is working and you're getting a good location from the GPS, when running Navit for the first time you get a black screen with a little green circle for your location - since it doesn't come with any useful maps pre-loaded.
Installing a Map
I followed the wiki links to the Navit Planet Extractor website, drilled down through the menu of pre-defined areas, picked Scotland, and waited for the map file to download. I then copied this to my RPi, and put it in a maps folder with a more meaningful name:
$ mkdir maps
$ mv osm_bbox_-8.1,54.5,-0.1,61.4.bin maps/osm_Scotland.bin
Referring to their Navit configuration instructions, I need to start by creating a configuration file based on the template provided, and then added the new map to it:
$ cp /etc/navit/navit.xml ~/.navit/navit.xml
$ sudo apt-get install emacs
$ emacs ~/.navit/navit.xml
Scanning the example configuration you come to a OpenStreetMap example entry:
<!-- Mapset template for openstreetmaps -->
<mapset enabled="no">
<map type="binfile" enabled="yes" data="/media/mmc2/MapsNavit/osm_europe.bin"/>
</mapset>
So I copied that, switched it to enabled="yes", and pointed it at my new Scotland map file:
<!-- Mapset template for openstreetmaps -->
<mapset enabled="yes">
<map type="binfile" enabled="yes" data="/home/pi/maps/osm_Scotland.bin"/>
</mapset>
I also disabled the sample map. Next time I ran Navit, I saw this at the terminal, and a map on screen:
navit:main_real:Using config file '/home/pi/.navit/navit.xml'
Navit on Raspberry Pi showing Dundee using OpenStreetMap |
Since this Scotland map was only 126MB, I decided to download the entire British Isles. Using the mouse on the Navit Planet Extractor website I picked bottom left (49.5, -11.2) and top right (61.1, 3.0), giving a 441MB file instead.
There is in fact a Navit world map available, at the time of writing 9.2GB in size (which would fit fine on a 16GB SDHC card if I really wanted to use it).
Building Navit from SVN
At this point I wondered if I could build Navit on the Raspberry Pi (see Navit on Linux instructions) from their SVN repository (recommended on their website), as the Raspbian package is already quite dated. Getting the build dependencies the easy way failed:
$ sudo apt-get build-dep navit
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: You must put some 'source' URIs in your sources.list
Seems a little configuration is needed perhaps? Having played with apt-rdepends, this seems to work instead - perhaps overkill:
$ 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
And now the build - the output from cmake looked good, make itself took half an hour on the RPi:
pi@raspberrypi ~ $ mkdir repositories
pi@raspberrypi ~ $ cd repositories
pi@raspberrypi ~/repositories $ sudo apt-get install cmake subversion build-essentials
pi@raspberrypi ~/repositories $ svn co https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit/ navit
pi@raspberrypi ~/repositories $ cd navit
pi@raspberrypi ~/repositories/navit $ mkdir build
pi@raspberrypi ~/repositories/navit $ cd build
pi@raspberrypi ~/repositories/navit/build $ cmake ..
pi@raspberrypi ~/repositories/navit/build $ time make
The docs tell you to run this in place. We also have to update this configuration file as discussed above to use the new map:
pi@raspberrypi ~/repositories/navit/build $ cd navit/
pi@raspberrypi ~/repositories/navit/build/navit $ emacs navit.xml
pi@raspberrypi ~/repositories/navit/build/navit $ ./navit
Running from source directory
vehicle_gpsd:vehicle_gpsd_try_open:Trying to connect to localhost:default
vehicle_gpsd:vehicle_gpsd_try_open:Connected to gpsd fd=5 evwatch=0x1c6f30
navit:vehicle_ref:refcount 2
navit:vehicle_unref:refcount 1
navit:main_real:Using config file '/home/pi/repositories/navit/build/navit/navit.xml'
...
Summary
Update
See my next post on using a TomTom Bluetooth Remote with a Raspberry Pi, including remapping the buttons.
Thanks for the useful information!
ReplyDeletePretty nifty stuff you have here, writing a program for your Navit and Raspberry Pi! I have to agree with you, though. The Raspberry Pi is definitely one of the best platforms to use if you want to build your own carputer. Aside from the size (it is pretty small, so it’s easy to fit anywhere inside the car), it can also be integrated into any auto electronic car part.
ReplyDeleteI've tried the Raspberry Pi in the car via a 12V to 5V DC:DC step-down unit, together with a little 12V LCD car reversing monitor. I need to sort out the boot up sequence so that it will launch directly into Navit full screen, and then road test it - my plan for a future blog post.
DeleteThanks for posting this. I'm getting started with Navit and Raspberry Pi and this has been very useful. I found that disabling the sample map is required because Navit only loads one mapset. I couldn't see my local map because the sample map was the only map loaded. Also "sudo apt-get install cmake subversion build-essentials" should be "sudo apt-get install cmake subversion build-essential" and it wasn't necessary since all of those were already installed by your apt-get install above that. Thanks!
ReplyDeleteThanks for posting this, I found it to be really helpful in getting to grips with the way the Pi works. However, can you confirm if this will work on Xbian? I have the LXDE desktop environment installed, so I can't really see a problem with it, but it would be helpful if anyone could confirm it works on Xbian.
ReplyDeleteNice info!
ReplyDeleteDid you try running Navit directly on the framebuffer of your car monitor or do you run it from within X ?
Im trying to get Navit running on a small tft (ITDB02-2.8) via framebuffer (https://github.com/notro/fbtft/) but no success yet.
Regards,
John
I only every tried via X (running full screen).
DeleteThis comment has been removed by a blog administrator.
ReplyDeleteI managed to break the 12V power supply in my car while trying to add a cable for the mini-screen and Raspberry Pi, so haven't taken this any further :(
DeleteHow to use other GPS navigation softwares like GosMore?
ReplyDeleteI am asking this because I heard Navit does not have bicycle routing.
I have no idea, sorry.
DeleteWhere do we put the code for the Mapset template for openstreetmaps? I am kinda confused in that bit.
ReplyDeleteI was editing the file ~/.navit/navit.xml (where ~ or tidle means your home directory, and .navit is a folder starting with a dot meaning it is hidden by default on Linux). This is a simple human readable XML file which you can edit using emacs or another text editor.
DeleteDoes GosMore include cycle routing?
ReplyDeleteSorry, I meant does Navit include cycle routing?
ReplyDelete.i installed navit on my raspberry pi 3b and configured the navit.xml file to point to my downloaded maps. but when i load navit it doesnt load my map. if i goto actions-town and then select my country and find for some town i can find it and also in settings i can see my map file name. also in actions, vehicle shows zero coordinates values, even the when i do cat /dev/ttyAMA0 i get gps values correctly
ReplyDelete