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 two maps are known to work: http://www.amazon.de/exec/obidos/ASIN/3829731280 (grosser Reiseplaner) http://www.amazon.de/exec/obidos/ASIN/3934073697 (Telefonbuch Deutschland Map+Route) Once you got one of those you need to let NavIt know about it by setting the MAP_DATA environment variable to the directory of the map files: export MAP_DATA=/home/navit/reiseplaner/travel/DE.map 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