Navit is one of the applications that runs on the Openmoko Phones. For a list of all applications, visit Applications
As described on the Navit home page,
"Navit is a car navigation system with routing engine.
Its modular design is capable of using vector maps of various formats for routing and rendering of the displayed map. It's even possible to use multiple maps at a time.
The GTK+ or SDL user interfaces are designed to work well with touch screen displays. Points of Interest of various formats are displayed on the map.
The current vehicle position is either read from gpsd or directly from NMEA GPS sensors."
Some people say Navit is also a good choice for pedestrian and bicycle navigation.
Thanks to Alessandro, stefan_schmidt, cp15 and all Navit developers I have done a small ("not really working") preview of Navit on Neo1973 at Telemobility Forum 2007. Thanks to GFoss guys to invite me. Tyrael
You can now simply add a feed from there : http://download.navit-project.org/navit/openmoko/svn/
Essentially, to enable this directory as feed and install or update navit do:
echo src navit http://download.navit-project.org/navit/openmoko/svn > /etc/opkg/navit-feed.conf opkg update
opkg install navit
Navit will be auto-updated when you run opkg upgrade later
Navit might not be able to use gpsd at startup:
navit:plugin_load:can't load '/usr/lib/navit/vehicle/ libvehicle_gpsd.so', Error 'libgps.so.16: cannot open shared object file: No such file or directory' navit:vehicle_new:invalid type 'gpsd'
to solve this issue (necessary for SHR):
opkg install libgps17 ln -s /usr/lib/libgps.so.17 /usr/lib/libgps.so.16
Navit is now in Debian testing and unstable.
Add the following line to /etc/apt/sources.list with e.g. editor vi or nano:
deb http://ftp.de.debian.org/debian unstable main
Then update with apt-get:
apt-get update
The up-to-date source package is available through git at git://git.debian.org/git/collab-maint/navit.git (browse).
If you just want the entire planet (as of this writing, ~1.8 GB), it's here.
CloudMade also has up-to-date maps from OpenStreetMap by country (by state in the US).
OpenStreetMap - follow directions at http://wiki.navit-project.org/index.php/OpenStreetMaps
wget -O germany.bin http://maps.navit-project.org/api/map/?bbox=5.185546875,46.845703125,15.46875,55.634765625
You can put a shell script into /usr/local/bin/update-maps
#!/bin/sh echo "Update OpenstreetMaps" echo "---------------------" echo " download and store OSM maps on /media/card/maps" wget -O /media/card/maps/germany.bin http://maps.navit-project.org/api/map/?bbox=5.185546875,46.845703125,15.46875,55.634765625 echo "update germany.bin finished"
You have to make the script executable with:
chmod u+x /usr/local/bin/update-maps
Then you can update with this script all your maps on the SD-card if you have internet connection:
update-maps
wget -O map1.osm http://www.openstreetmap.org/api/0.5/map?bbox=-122.2,47.5,-122,47.7 wget -O map2.osm http://www.openstreetmap.org/api/0.5/map?bbox=-122.4,47.5,-122.2,47.7 wget -O map3.osm http://www.openstreetmap.org/api/0.5/map?bbox=-122.4,47.3,-122.2,47.5 wget -O map4.osm http://www.openstreetmap.org/api/0.5/map?bbox=-122.2,47.3,-122,47.5
cat *.osm | osm2navit --dedupe-ways mymap.bin
To copy the map using scp (replace /directory as is appropriate in the following):
scp mymap.bin root@neo:/directory
If you copy the map germany.bin to the SD card on the Neo use e.g.
scp germany.bin root@neo:/media/card
Once it's somewhere on the NEO, Navit needs to know that it's there.
mkdir ~/.navit cp /usr/share/navit/navit.xml ~/.navit/navit.xml vi ~/.navit/navit.xml
Now you must let Navit know the maps you want to use. Several disabled mapset-tags are predefined. In the navit.xml file, put the following into a new <mapset> section (and disable the default <mapset> just above - or else it will not work):
<map type="binfile" enabled="yes" data="/directory" />
For example with a germany.bin on the SD-card you use:
<mapset enabled="yes"> <map type="binfile" enabled="yes" data="/media/card/germany.bin" /> </mapset>
or if you store all downloaded maps in the directory /media/card/maps then add the following lines to navit.xml.
<mapset enabled="yes"> <map type="binfile" enabled="yes" data="/media/card/maps/*.bin"/> </mapset>
Note that the bin-file and the map set both have to be enabled.
Disable unused mapset sections by setting enabled to no, e.g. the pre-installed sample maps at line 370 in navit.xml.
<mapset enabled="no"> <xi:include href="$NAVIT_SHAREDIR/maps/*.xml"/> </mapset>
Navit supports a "always center on vehicle" option.
To activate this add
follow="3"
to the vehicle tag in navit.xml.
<vehicle name="Local GPS" profilename="car" enabled="yes" active="1" follow="3" source="gpsd://localhost" gpsd_query="w+xj" color="#0000ff">
The "3" causes to give the gui time to do something between the repaints (drag the map or browse the menu). When its set to "1" navit does nothing more than repainting the map continuously.
The main menu has 4 submenus
Normally you would assume the entering a town can be found under the submenu Route, but Town is hidden under submenu Action. Route will provide the description of the route as text and a height profile of your trip. Tools was not working on 08/2009 Version of navit on SHR (see SHR User Manual).
Normally you have to select the the country first before choosing the town and street name. It might be more convenient for you if you preselect the country already with your settings. The article Configure SHR for German-speaking use had a preselection of the country "Austria" in Navit. Adapt the localization for your country and maps in Navit, so that do not need to select the country anymore.
When you click in the main menu on Action the Action menu appears with 4 subitems.
Select the icon Town.
Before you can search for City you have to select a Country. To do that, click on the icon in the left upper corner of the search field (could look like a white square with blue top-left quadrant).
Just type in the first letter of the country (e.g. "G") and Navit makes suggestions (e.g. Gabon, Germany).
When you have selected the country (e.g. Germany) the flag appears and you can select the town. Then you can save the town as bookmark and enter more details like streets to the selected town.
The search is still a little buggy.
You can enter the street and streetnumber and save it as bookmark when you use the destination often.
Navigation and planning of routes with Navit can be organized with bookmarks.
Then you can see the suggested route in blue on the map.
Bookmarks are stored in:
/home/root/.navit/bookmark.txt
The GPS-location (if GPS-signal is available) will be highlighted with a small blue circle. The color of the circle can be defined via editing the navit.xml (see select cursor color).
Then routing can start and in the map the route is highlighted.
The screenshots are made with gpe-scap, that can be installed by:
opkg install gpe-scap
if not installed already. Navigation through your installed application navit and login via ssh on your Freerunner
ssh -l root 192.168.0.202
assuming that your Freerunner has the IP 192.168.0.202. Any time you want to make a screenshot just start via your desktop computer
gpe-scap
and save the screenshot to you freerunner. Download the screenshot to your desktop computer with
desktop# sftp://root@192.168.0.202
A deeper look into configuring Navit can be found in the Navit-Wiki.
If using SHR the keyboard in country/town/street search mode does not fit on the street, make sure your gui configuration is set to the following line:
<gui type="internal" font_size="350"/>
The example line provided for freerunners hides some important icons. Namely, instead of typing your city name first, you will first have to click the button on the top left, to go into country search mode. Enter your country name, then the city name, in order to enable the search function. This requires your map data to be searchable.
You can start in fullscreen mode with fullscreen="1"
<gui type="internal" font_size="350" fullscreen="1"/>
If you want to enable "+" and "-" as Zoom-In and Zoom-Out buttons on the bottom of the map enable the button with the following xml-tags:
<osd enabled="yes" type="button" x="-96" y="-96" command="zoom_in()" src="zoom_in.xpm"/> <osd enabled="yes" type="button" x="0" y="-96" command="zoom_out()" src="zoom_out.xpm"/>
If you navigate, the route is marked in blue color on the map. The current position of the vehicle is displayed by a blue circle. The circle is sometimes difficult to see on the blue track. If you want to change the color, size of the vehicle cursor edit the vehicle XML-environment in navit.xml (e.g. replace blue color #0000FF with red color #FF0000 -- for details of Color Codes select color, copy and paste code in navit.xml)
<vehicle name="Local GPS" profilename="car" enabled="yes" active="1" source="gpsd://localhost" gpsd_query="w+xj" color="#0000ff"> <cursor w="56" h="56"> <itemgra> <circle color="#ff0000" radius="42" width="6"> <coord x="0" y="0"/> </circle> </itemgra> <itemgra speed_range="-2">Configure_SHR_for_German-speaking_use <polyline color="#ff0000" width="6"> <coord x="0" y="0"/> <coord x="0" y="0"/> </polyline> </itemgra> <itemgra speed_range="3-"> <polyline color="#ff0000" width="6"> <coord x="-7" y="-10"/> <coord x="0" y="12"/> <coord x="7" y="-10"/> </polyline> </itemgra> </cursor> </vehicle>
The following screenshot show Navit with a red cursor on a blue track:
Navit can speak if you install eSpeak + speech-dispatcher and updates your navit.xml file. For adventurous people, one way to do this (for SHR and navit speaking german see Configure SHR for German-speaking use):
http://projects.openmoko.org/projects/mokotts/
install espeak, dotconf, and then speech-dispatcher. note: running 2008.8 updating from zecke's "testing" repo does not require "dotconf"
<speech type="cmdline" data="spd-say '%s'" />
or "spd-say -l fr '%s'" for using the French voice for example.
Note: Package speech-dispatcher broke my audio after suspend with current SHR (2009-04-13, though the problem's not shr, but speech-dispatcher itself). See this bug report. A solution is to disable starting of speech-dispatcher with:
update-rc.d -f speech-dispatcher remove
And then edit /usr/bin/navit, so that it starts speech-dispatcher before navit, and stops it afterwards. See http://lists.openmoko.org/nabble.html#nabble-td1088795
Alternatively, you can make speech-dispatcher restart on resume, see http://trac.shr-project.org/trac/ticket/494
Wurp wrote a little python script to download all OSM maps within a lat/long rectangle. Just copy the script to a file called dlOSM.sh, chmod +x it, and run it like dlOSM.sh <minimum latitude> <maximum latitude> <minimum longitude> <maximum longitude>
It takes a long time for large maps. I could optimize it some by having it try to get a big section at once, then if it fails, break it into smaller pieces and recurse. I'm not sure when/if I'll get around to that...
dlOSM.sh:
#!/usr/bin/python import os import sys #import math def doIt(cmd): os.system(cmd) def getOsms(basename, minLat, maxLat, minLon, maxLon): '''basename - base name of map, maps are named {basename}{count}.osm minLat - latitude of the west side of the map maxLat - latitude of the east side of the map minLon - longitude of the north side of the map maxLon - longitude of the south side of the map''' wgetCmdTemplate = 'wget -O %s%s.osm http://api.openstreetmap.org/api/0.6/map?bbox=%s,%s,%s,%s' currLat = minLat mapCount = 0 while currLat < maxLat: nextLat = min(currLat + 0.1, maxLat) currLon = minLon while currLon < maxLon: nextLon = min(currLon + 0.1, maxLon) doIt(wgetCmdTemplate % (basename, mapCount, currLon, currLat, nextLon, nextLat)) currLon = nextLon mapCount = mapCount + 1 currLat = nextLat (minLat, maxLat, minLon, maxLon) = map(float, sys.argv[1:]) getOsms('map', minLat, maxLat, minLon, maxLon)
Navit
Navit is a car navigation system with routing engine.
|