summaryrefslogtreecommitdiff
path: root/README
blob: 73a8624669fea357ea5a0e8deac328592dce49be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
NavIT
=====

Navit is a open source (GPL) car navigation software for Linux systems
based on the GTK+ toolkit.  Navit will display your position on a
2D map, or as a 3D visualisation (planned) from GPS sensor data. Navit
is also capable of providing precise route calculation, touch screen
functionality and supports Points of Interest (POI).

Unlike other navigation systems, Navit maps are dynamically generated
in real time from vector data.



Maps:
=====

The best navigation system is useless without maps. Those three maps
are known to work:

	http://www.amazon.de/exec/obidos/ASIN/3829731280
		(Grosser Reiseplaner, detailed map of europe)
	http://www.amazon.de/exec/obidos/ASIN/3934073697
		(Telefonbuch Deutschland Map+Route,
		  detailed map of germany, coarse map of europe)
	http://www.amazon.de/exec/obidos/ASIN/3934073719
		(Gelbe Seiten Map+Route, detailed map of germany,
		  coarse map of europe)

Installing the Maps:
- Gelbe Seiten and Telefonbuch Deutschland
unzip karten.zip from the map cd where the map should go (about 1.2 GB)
export MAP_DATA=<path to where the map has been unzipped>/d7.map

- Grosser Reiseplaner
Compile unshield from http://synce.sourceforge.net/synce/unshield.php
run "unshield x <path to your dvd>/travel/data2.cab" where the map
should go (about 4.3 GB)
export MAP_DATA=<path to where the map has been unshielded>/DIRMAP_MAP/DIE.map


GPS Support:
============

Navit read the current vehicle possition either directly from a file with
	export GPSDATA=file:filename
or from gpsd with
	export GPSDATA=gpsd://host[:port]
[now in navit.xml]


Subdirectories:
===============

fib-1.0
	The library for Fibonacci heaps from 
		http://resnet.uoregon.edu/~gurney_j/jmpc/fib.html
	The Fibonacci heaps are used in the routing algorithm.

graphics
	The map layout functions.
	As of now only the gtk_drawing_area is working.
	We'll eventually move to cairo.	

gui
	The user interface. So far there are a lot of files still in
	the main directory.

plugins
	Plugable modules. So far there is only one but we hope to
	have more in the future.
	- poi_geodownloads
		Display POIs from www.geodownload.com
		(depends on mdbtools.sf.net)


Files in src:
=============

block.c:
	Manages the blocks of the map. Each block of the map is
	seperated into two sub blocks of half the size.

command.c
	Command line interface.

compass.c
	Displays the compass on the map.

coord.c
	Reads coordinates from the map.

country.c
	Lists all available countries and provides funtions to access
	the corresponding data.

cursor.c
	Draws the vehicle possiton on the map.

data_window.c
	Displays informations about visible objects.

destination.c
	The destination selection dialog.

display.c
	Manages the display-list. The graphics driver is called from
	here to display the map.

file.c
	Management of map data files.

graphics.c
	Generates the display-list.

log.c
	Logs local changes to the map datas. its possible to modify
	the map without changing the original map data. The modified
	data are stored in log.txt and reread at program start.

main.c
	Guess what?

map_data.c
	Manages the differnt map sources. There's an overview map of
	europe and a detailed map of each country.

menu.c
	Callback functions for the gui menu.

navigation.c
	Generates directions to a destination ( not jet completed )

param.c
	Utility functions for data_window and and popup menu

phrase.c
	Assembles directions for the speech guide.

plugin.c
	Loads available pugins.

poly.c
	Generate display-list for polygons. ( cities, lakes, ... )

popup.c
	Popup-menu dialog

profile.c
	A simple timer for performance analysis.

route.c
	The routing algorithm. ( see below for a more detailed
	description )

search.c
	Functions to search a place ( city, street, ... ) by name

speech.c
	Interface to speechd

street.c
	Generates a display-list for streets

street_name.c
	Reads street names from map datas.

town.c
	Generates a display-list for city names.

transform.c

	Coordinate transformation. The map uses a Mercator projection.

tree.c
	Manages search trees.

util.c
	Some utility functions for strings

vehicle.c
	Calculates the current vehicle possistion and direction.
	Issues a cursor update if needed.


Routing algorithm
=================

NavIt uses a dykstra algorithm for routing. The routing starts at the
destination by assigning a value to each point directly connected to
destination point. The value represents the estimated time needed to
pass this distance.

Now the point with the lowest value is choosen using the Fibonacci
heap and a value is assigned to connected points whos are
unevaluated or whos current value ist greater than the new one.

The search is repeated until the origin is found.

Once the origin is reached, all that needs to be done is to follow the
points with the lowest values to the destination.



Plans:
======

- use ciaro to draw the map

- get GPS data from gpsd

- complete speech output (speech.c, phrase.c)

- complete directions (navigation.c)

- investigate problem with fib-1.1