Difference between revisions of "FAQ"
(→Where to search: typo)
m (→espeak on Linux)
|Line 92:||Line 92:|
data="espeak --stdout -ven+f4
data="espeak --stdout -ven+f4 %s| aplay -"
|Line 107:||Line 107:|
data="espeak --stdout -v'''nl'''+f4
data="espeak --stdout -v'''nl'''+f4 %s| aplay -"
Revision as of 18:59, 19 May 2011
There are the most common troubles and solutions for those. Please add your soluted problem here.
- 1 Where to search
- 2 Compilation
- 2.1 Build Logs
- 2.2 My compilation fails, complaining about GL/glc.h
- 2.3 Can't exec "autopoint": No such file or directory
- 2.4 configure.in:21: error: possibly undefined macro: AC_DISABLE_STATIC
- 2.5 configure.in:25: error: possibly undefined macro: AC_DEFINE
- 2.6 gui_sdl_window.cpp:23:19: error: CEGUI.h: No such file or directory
- 2.7 Navit can't find libgarmin, but i installed it!
- 3 Run time
- 4 Configuration
Where to search
Build logs of released and committed revisions are available.
My compilation fails, complaining about GL/glc.h
You are missing the quesoglc package. We may switch to another more common library at some point. It isn't widely used, so maybe it isn't available via your distro's repository. If you can't find it, try to compile it from sources, available on the quesoGLC website
If your running Gentoo, you can grab an ebuild for it here : http://www.kazer.org/navit/quesoglc-0.6.0.ebuild.
Can't exec "autopoint": No such file or directory
You're missing gettext-devel.
configure.in:21: error: possibly undefined macro: AC_DISABLE_STATIC
You're missing libtool.
configure.in:25: error: possibly undefined macro: AC_DEFINE
If autogen.sh complains about missing macro AC_DEFINE or AC_MSG_WARN: You're missing pkg-config
gui_sdl_window.cpp:23:19: error: CEGUI.h: No such file or directory
You need Crazy Eddie's GUI development files. Ususally called cegui-devel or libcegui-mk2-dev.
Then re-run navit's configure
o (process:12367): WARNING **: failed to create gui 'sdl' Using '/home/kazer/.navit/navit.xml'
Most likely, your navit.xml file is incomplete / erroneous. The best thing to try, is to start navit with the default configuration file :
if you're running it from the source directory.
If it loads, then your configuration file is broken. First, check if you have the <plugins> section at the beginning of the file.
The easiest thing to do to fix this is probably to overwrite your own config file with the one shipped with Navit. Don't forget to read Configuring navit for some tips about the config file, especially if you run the SDL gui (GTK gui should work fine out of the box).
o Error parsing 'navit.xml': Element 'plugins' within unexpected context '(null)'. Expected 'config' at line 4, char 1
In the example the <config> opening and closing tags were missing from the navit.xml file.
My position is reported incorrectly
Most of the time, this is caused by the decimal separator being incorrectly set. Navit tries to override the decimal separator at startup, but the LC_ALL environment variable can block this. You can check this easily : echo $LC_ALL
If it returns something, you can't override your locale settings. You should "unset LC_ALL" and try again. If it works, you got it :)
In gentoo, this is set in the /etc/env.d/<something>locales. You may want to remove or comment the LC_ALL line in that file.
Same thing as previously. The LC_ALL blocks you from changing the charset.
If OSM has an highway=motorway_link with same speed limit as the highway then navit uses the ramp if it is technically a few meters shorter route. You can avoid this by searching for "<vehicleprofile name="car"" in navit.xml and setting "maxspeed_handling="1"" to make navit ignore the speed limit given in OSM and to default to 40 km/h (or whatever your navit.xml says) for highway=motorway_link.
This has been discussed at least at https://sourceforge.net/projects/navit/forums/forum/512960/topic/3702652
How do you configure Navit to speak one of the other 22 languages? How do you do that on Windows? How on Linux?
espeak on Linux
To get Navit to speak with espeak you can add the following XML to your navit.xml file:
<speech type="cmdline" data="espeak --stdout -ven+f4 '%s'| aplay -" cps="15" />
This tells espeak to output in the English language (-ven) using female voice #4 (+f4).
To change the spoken language - say to Dutch - there are two things that need to change: the words that are to be spoken need to be translated to Dutch, and the speech pronunciation has to change to Dutch too.
The first is done by changing the LANG environment variable. Instead of running "navit", use "env LANG=nl_NL navit" to get the Dutch translations. Change "nl_NL" to your preferred locale if you want something other than Dutch. As described above, the LC_ALL variable can be set and cause other translation issues, so I (Sybren) launch using:
env -uLC_ALL -uLANGUAGE -uLC_MESSAGES LANG=nl_NL navit -c /home/root/.navit/navit-nl.xml
To change the pronunciation -- I'll use Dutch again as an example -- use this in your navit.xml instead:
<speech type="cmdline" data="espeak --stdout -vnl+f4 '%s' | aplay -" cps="15" />
For different eSpeak language codes see the eSpeak language documentation.
Weird coordinates in bookmarks.txt and centre.txt
Internally, Navit uses hexadecimal values to represent latitude and longitude values. These values spill over to the outside world in bookmarks.txt and centre.txt, where points are saved as hexadecimal values by default.
Convert hex coordinates to decimal degrees
The following example entry from centre.txt will be used as our example:
mg: 0x7c877 0x6496e5
The first set of numbers/letters is the longitude, the second the latitude.
Step 1: Convert hex to integer
The first step is to convert the strings to integer values. This can be done in a variety of ways:
A variety of converters can be found by Googling "hex to decimal converter". One such is Wolfram Alpha, which provides the following results (http://www.wolframalpha.com/input/?i=0x7c877+to+decimal):
0x7c877 -> 510071 0x6496e5 -> 6592229
2) Command line
Using the printf command, hex can be converted to decimal using the following command:
printf "%d" 0x7c877 510071 printf "%d" 0x6496e5 6592229
Step 2: Convert integer to decimal degrees
The integers are then converted to decimal degrees using the following formulae (from navit/transform.c):
Longitude: INT/6371000.0/PI*180 Latitude: atan(exp(INT/6371000.0))/PI*360-90
You can drop the calculation straight into Wolfram Alpha, as below:
Longitude: 510071/6371000.0/PI*180 = 4.5871787 Latitude: atan(exp(6592229/6371000.0))/PI*360-90 = 50.877276
So there we go:
Longitude: 4.5871787 Latitude: 50.877276
Converting in one commmand
Latitude: http://www.wolframalpha.com/input/?i=0x7c877/6371000.0/PI*180 Longitude: http://www.wolframalpha.com/input/?i=atan(exp(0x6496e5/6371000.0))/PI*360-90
Convert decimal degrees to hex coordinates
Using the same location as the previous example:
Longitude: 4.5871787 Latitude: 50.877276
Step 1: Convert decimal degrees to integer
Dropping into Wolfram Alpha:
Step 2: Convert integer to hex coordinate
Don't forget the leading 0x to finish it off:
Longitude: 0x7c877 Longitude: 0x6496e5
Converting in one command
Latitude: http://www.wolframalpha.com/input/?i=round(4.5871787*6371000.0*PI/180)+to+hex Longitude: http://www.wolframalpha.com/input/?i=round(ln(tan(((50.877276%2B90)*PI)/360))*6371000.0)+to+hex
Sometimes the decimal or hex coordinate values have a negative sign in front of it. This will denote either a southern latitude or a western longitude. If you perform the transformation in one step using Wolfram Alpha, you can keep the negative sign in the formula without problems. If you're transforming by hand, it's probably easiest to forget about the sign whilst transforming, and just add it back in at the end.
An example in hex is:
mg: -0x1c766 0x6812ff
Which can be put straight into Wolfram Alpha as follows: