Navit

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(add script to retrieve OSM maps)
Line 65: Line 65:
 
   
 
   
 
  or "spd-say -l fr '%s'" for using the French voice for example.
 
  or "spd-say -l fr '%s'" for using the French voice for example.
 +
 +
=== Script to download OSM maps ===
 +
[[User:Wurp][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 breaking it into recursing into the pieces.  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):
 +
  if False:
 +
    os.system(cmd)
 +
  else:
 +
    print(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://www.openstreetmap.org/api/0.5/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, currLat, currLon, nextLat, nextLon))
 +
 +
      currLon = nextLon
 +
      mapCount = mapCount + 1
 +
 +
    currLat = nextLat
 +
 +
(minLat, maxLat, minLon, maxLon) = map(float, sys.argv[1:])
 +
getOsms('map', minLat, maxLat, minLon, maxLon)

Revision as of 09:15, 27 January 2008

http://navit.sourceforge.net/

Navit-0.0.4+cvs


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

Contents

Setting up Navit

I got navit set up and configured to the point where it follows me on the map. It doesn't have street names or any other information, just the map and the cursor showing the location and direction. Here's what I did:

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
      • Made a navit binary map file using the osm2navit binary that comes with the navit package on my linux box
cat *.osm | bin/osm2navit --dedupe-ways > mymap.bin
      • Copied the map to the NEO
scp mymap.bin root@neo:/home/root/card/map
      • Changed the navit.xml file on the NEO to use the new map
vi /usr/share/navit/navit.xml
<map type="binfile" enabled="yes" data="/home/root/card/map/mymap.bin" />
  • Run navit
    • Start gllin
    • Start gpsd ( gpsd /tmp/nmeaNP )
    • Start navit

News

Street names

They are now displayed on OpenMoko using the CVS version of Navit (20071217).

Point selection by pen

Easier using the CVS version (20071217).

Route > Destination

The Route > Destination menu item crashes the software (20071217).

A current fix is to set the LANG variable before calling navit. For example: export LANG=fr_FR.UTF-8; navit

Note that a short syntax (e.g. LANG=fr) would not work.

http://trac.navit-project.org/ticket/51

Speech

Navit can speak if you install eSpeak + speech-dispatcher and updates your navit.xml file.

For adventurous people, one way to do this:

* mokoTTS aims to integrate these packages in OM:
http://projects.openmoko.org/projects/mokotts/

install espeak, dotconf, and then speech-dispatcher.

* change the speech tag in navit.xml:
<speech type="cmdline" data="spd-say '%s'" />

or "spd-say -l fr '%s'" for using the French voice for example.

Script to download OSM maps

[[User:Wurp][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 breaking it into recursing into the pieces. I'm not sure when/if I'll get around to that...

dlOSM.sh:

  1. !/usr/bin/python
import os
import sys
#import math

def doIt(cmd):
  if False:
    os.system(cmd)
  else:
    print(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://www.openstreetmap.org/api/0.5/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, currLat, currLon, nextLat, nextLon))

      currLon = nextLon
      mapCount = mapCount + 1

    currLat = nextLat

(minLat, maxLat, minLon, maxLon) = map(float, sys.argv[1:])
getOsms('map', minLat, maxLat, minLon, maxLon)
Personal tools

http://navit.sourceforge.net/

Navit-0.0.4+cvs


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

Setting up Navit

I got navit set up and configured to the point where it follows me on the map. It doesn't have street names or any other information, just the map and the cursor showing the location and direction. Here's what I did:

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
      • Made a navit binary map file using the osm2navit binary that comes with the navit package on my linux box
cat *.osm | bin/osm2navit --dedupe-ways > mymap.bin
      • Copied the map to the NEO
scp mymap.bin root@neo:/home/root/card/map
      • Changed the navit.xml file on the NEO to use the new map
vi /usr/share/navit/navit.xml
<map type="binfile" enabled="yes" data="/home/root/card/map/mymap.bin" />
  • Run navit
    • Start gllin
    • Start gpsd ( gpsd /tmp/nmeaNP )
    • Start navit

News

Street names

They are now displayed on OpenMoko using the CVS version of Navit (20071217).

Point selection by pen

Easier using the CVS version (20071217).

Route > Destination

The Route > Destination menu item crashes the software (20071217).

A current fix is to set the LANG variable before calling navit. For example: export LANG=fr_FR.UTF-8; navit

Note that a short syntax (e.g. LANG=fr) would not work.

http://trac.navit-project.org/ticket/51

Speech

Navit can speak if you install eSpeak + speech-dispatcher and updates your navit.xml file.

For adventurous people, one way to do this:

* mokoTTS aims to integrate these packages in OM:
http://projects.openmoko.org/projects/mokotts/

install espeak, dotconf, and then speech-dispatcher.

* change the speech tag in navit.xml:
<speech type="cmdline" data="spd-say '%s'" />

or "spd-say -l fr '%s'" for using the French voice for example.