MC Navi Free GPS navigation for car and outdoor with OpenStreetMap maps
MC Navi is GPS navigation system aimed at portable devices like Neo Freerunner using OpenStreetMap as map source. It uses Enlightenment Foundation Libraries (EFL) for graphic GUI, so it is fast and light. In future it may be ported to other devices.
Description
The software uses OpenStreetMap (OSM) as source for maps licensed under Creative Commons Attribution-ShareAlike 2.0 license. From OSM wiki: OpenStreetMap creates and provides free geographic data such as street maps to anyone who wants them. The project was started because most maps you think of as free actually have legal or technical restrictions on their use, holding back people from using them in creative, productive, or unexpected ways. In other words: everyone can make the map better and everyone can use it. Any changes in infrastructure can be carried to map very quickly, the new map can be used immediately. So you do not need to wait months for map update from commercial subjects. Also you alone can make the changes, so if you find any bugs in map nearby, you can fix it. And it is very desirable! Extend the map in your neighborhood and help others traveling to you. And they will help you. That's the philosophy of OSM.
MC Navi is also free, released under GPL v3 license. But if you find it useful and want to support the author, please donate some money. It is up to you the amount you choose, solely the price of beer in your country will be nice. Negligible amount for you, very helpful for author. Also if you want support and some improvements, it will be very motivated. It is easy, just click on the donate button.
About
MC Navi is (will be) GPS navigation software for usage in trucks, cars and outdoors with bicycles and foot. It uses different parameters for different vehicles, so it gives different optimized results for all of them.
Currently not all planned features are implemented, but it quite usable.
Installation
You can download source code and compile by yourself or download binary packages from here. For Debian GNU/Linux users there is apt repository. Add this line to your /etc/apt/sources.list :
deb http://www.gps-routes.info/debian sid main
And download and add public sign key.
apt-key add PublicKey
Then install package mcnavi-osm2mcmap on your main computer (AMD64 or i386) and mcnavi on Neo Freerunner.
apt-get install mcnavi-osm2mcm
apt-get install mcnavi
Create maps
There are two programs. First is osm2mcm for creating the map for MC Navi. It converts OSM XML data to internal binary format for better speed and less space. Use it as follows:
Usage:
osm2mcmap
Arguments:
-mo file.mcm output map to file
-bt <0|1> boundary type to save to boundary file
0=country
1=city
-bo file.mcb output boundary data to file
-bi file.mcb input boundary data from file
-l file.log ouput log file
-p file.poly load polygon of area to convert from file,
it is not used for cropping, but will be used
for sea generation from coastlines
-v N verbose log level
0 - none
1 - error
2 - warning
3 - info
4 - debug
-rcl use residential zone for city limit
-c N run only convert step N, if not given, all steps are processed
can be given more at once, for example -c 1 -c 2
must be run in this order!
possible values are:
0 - skip all convert steps
1 - process boundaries
2 - process city limit (can be skipped if not needed)
3 - process cities
4 - process relations
5 - process ways
6 - process nodes
7 - process coastlines
8 - process duplicate text
-h display this help
Just to explain: Extract one country or download it from here (Geofabrik or Cloudmade recommended). Then extract the map and pass the .osm file to osm2mcm. Because in country extracts are missing some border areas, which are needed to successfully determine addresses, download first the boundary extract for one continent from Cloudmade (sorry - Cloudmade has removed it from download server, we need to find another way) and save the country boundary data:
osm2mcm -bt 0 -bo boundary.mcb map.osm
Then import the boundary data and create the map:
osm2mcm -bi boundary.mcb -mo map.mcm map.osm
For Europe the easiest way is to use pregenerated boundary data from here.
If you want to generate sea using coastlines, you need also clipbounds polygon for your downloaded OSM extract, for maps downloaded from Geofabrik it can be downloaded here. Then add parameter -p to command line like that:
osm2mcm -bi boundary.mcb -p map.poly -mo map.mcm map.osm
In new version the converter uses MySQL database to store the data. Previously it loaded all data to memory, so no large maps could be created. The connection to MySQL is done on local host, user and password is "osm", database is osm, so create corresponding schema and user account in MySQL. In future releases it could be possible to change it via command line parameters.
The simplest method is to download map from here or from here (currenly only old version maps, thx to Davide Scaini).
Usage
After that you can run MC Navi with the converted map:
mcnavi -m map.mcm
Or just run mcnavi if you copy the map to /usr/share/mcnavi/maps/map.mcm directory (must be named map.mcm). In future it will load all maps in that directory and route between them, but currently it is not implemented.
The usage should be as simple as possible. Some config will be made with text file (see bellow), in GUI only the controls needed for usage, so don't expect complexity of menus like in other navigations. On the other site, MC Navi will be useful for many activities - car navigation, also cycle and outdoor navigation and sport activities.
MC Navi is multithread application, where each task has own thread - GPS runs one, also map render, navigation and GUI.
After successful run the main screen should appear. There is map with two zoom buttons and at bottom information panel. Left is information from GPS, in the middle navigation arrow and distance to next turn and right information about route. It is possible to display 3 menus (in future, actually only 2), clicking at 3 areas on information panel, see the picture:
1 - GPS menu
 |
Meaning of menu items (from top left):
- show satellites
- move map to bookmark/address
- save current position as bookmark
- start/stop the chronometer - will measure time and distance, useful for sports activity like running or
- exit application
|
2 - Routing menu
 |
Meaning of menu items (from top left):
- switch the vehicle - it is used for routing and for snapping to roads
- switch between fastest route with toll roads, fastest or shortest route
- switch adding destination or waypoint (waypoints not implemented yet)
- show itinerary, clear the route r load and save the route from file
- add new destination/waypoint/direction as bookmark or address
- add new destination/waypoint/direction from the map
|
3 - Tracks menu
 |
Meaning of menu items (from top left):
- clear the track
- load the track and display it on map
- start logging of track to GPX format, can decimate points to decrease file size
|
Some notes to routing. Routing menu has two rows of icons,. First row sets parameters, second makes actions. Routing is done between current position on map and destination. It is possible to set more destinations, second destination routes from previous destination.
After routing to destination, we can adjust the route with waypoints. This is point on map, we want to pass through. This is not the next destination, instead waypoint will be added between start/destination/waypoint and destination/waypoint for nearest route segment. The route will be recomputed to pass the waypoint. This is useful especially for outdoor navigation, if we want to set route on specific roads and positions. After that, the route can be saved for later usage. So you can plan the route at home and use it next day in practice.
Another route point is direction. This is point mark, that we can ride nearby, but is not placed directly on road, so we cannot reach it. Direction mark just gives instruction, that we want go another way.
Routing point is set to bookmark/address or set by hand on map - click-routing. This is useful especially for outdoor - to plan exactly the route with waypoints.
It is possible to configure some parameters in config file located at /usr/share/mcnavi/mcnavi.conf . The description is inside the file. All settings can be overridden with user specific config file located at ~/.mcnavi/mcnavi.conf .
Also it is possible to use bookmarks - this is location where to route. You can add bookmark from within MC Navi, but not to delete bookmarks or reorder them. Also not more than 10 bookmarks is currently accessible. The bookmark file is located at ~/.mcnavi/bookmarks . Every bookmark is on one line in this format:
Name=lat,lon
Latitude and longitude are in millions - that is 50.000 should be written as 50000000
Warning
MC Navi is work in progress and is at the beginning of development. It may be unstable and all functionality may not be present although it seems to.
What is wrong (don't report, I know about it):
- re-routing is not optimal, should be improved
- inner polygons are redrawn with background color
- routing could be faster, needs to improve
- better handling of route directions
Here is todo list in order of importance:
- contours
- load more maps at once
- optimizations
Any questions? Ask in the forum.
That's all for now. More in future.
Changelog in Debian format:
mcnavi (0.3.4) unstable; urgency=low
* mcnavi: optimized way drawing, cca 50% speed improvement
* mcnavi: fixed crash with older libgps
-- Mike Crash Sun, 27 Feb 2012 23:26:00 +0100
mcnavi (0.3.3) unstable; urgency=low
* osm2mcm: fixed bad longitude plane sector assignment (copy and paste bug)
* osm2mcm: improved sea generation
* osm2mcm: fixed infinite loop in sea generation in some cases
-- Mike Crash Tue, 21 Feb 2012 22:01:00 +0100
mcnavi (0.3.2) unstable; urgency=low
* common: changed map format
* common: added support for turn restrictions
* common: changed plane sectors access
* common: limited maximum distance between nodes to 1 km
* mcnavi: fixed hard turns on ramps
* mcnavi: better handling of routing last step to goal node
* mcnavi: fixed and improved nodes caching
* osm2mcm: added support for coastlines
* osm2mcm: fixed duplicated cities
* osm2mcm: fixed many minor bugs
-- Mike Crash Mon, 9 Jan 2012 21:00:00 +0100
mcnavi (0.3.1) unstable; urgency=low
* common: new map format, using OSM node ID (support more maps in future),
removed ways section, separated town names from POIs,
separate text section, all text in town names, POIs and addresses
links to it, can show addresses on map, currently removed
cycle and tourism routes
* common: new map types can be displayed - address, boundary, icecream,
powerline, powertower, powerstation, waterpark, stadium,
swimmingpool, sea, ...
* osm2mcm: changes in DB schema and conversion to new map format
* mcnavi: new map format with faster map file reading
* mcnavi: added loading and saving of routes as modified GPX file
* mcnavi: added loading of GPX track logs
* mcnavi: faster routing
* mcnavi: routing on roundabout junctions
-- Mike Crash Fri, 2 Sep 2011 21:00:00 +0100
mcnavi (0.3.0) unstable; urgency=low
* common: new map format, removed segments section, new nodes section,
different plane sectors with zoom aka plane size parameter
* osm2mcm: completely rewritten to use MySQL database instead of memory
* mcnavi: rewriten reading of maps and all related code
-- Mike Crash Wed, 8 Dec 2010 21:00:00 +0100
mcnavi (0.2.14) unstable; urgency=low
* mcnavi: can delete single items from itinerary
* mcnavi: can move itinerary list up and down
* mcnavi: improved turn marking
* mcnavi: added exit button
* osm2mcm:
-- Mike Crash Wed, 13 Oct 2010 21:00:00 +0100
mcnavi (0.2.13) unstable; urgency=low
* mcnavi: better rounding in distance (fix for chronometer distance?)
* mcnavi: new itinerary window
-- Mike Crash Mon, 20 Sep 2010 20:40:00 +0100
mcnavi (0.2.12) unstable; urgency=low
* mcnavi: fixed bad snapping to segments
* mcnavi: added separate itinerary, faster route lookup
* mcnavi: experimental "directions" itinerary
* mcnavi: added "click routing"
* mcnavi: limited planes for larger zooms (was slowing down rendering)
* mcnavi: fix for source and destination on the same oneway road
* mcnavi: fix for wrong routing backwards on first way node
* mcnavi: draw logged track, no track load yet
* mcnavi: added track delete button
-- Mike Crash Sun, 8 Aug 2010 20:30:00 +0100
mcnavi (0.2.11) unstable; urgency=low
* added support for toll roads
* mcnavi: removed toll switch from route menu
* mcnavi: added toll to route mode
* mcnavi: added new switch waypoint/destination to route menu
* mcnavi: replaced route menu items "route from to" and "route to"
with "stop route" and "route to address"
* mcnavi: itinerary routing - can set more destinations
* mcnavi: waypoints not used yet
-- Mike Crash Sat, 3 Jul 2010 21:45:00 +0100
mcnavi (0.2.10) unstable; urgency=low
* added support for orchards (new map needed)
* mcnavi: fixed crash on invalid speed value (routing on cycle route)
* mcnavi: fixed routing of car on cycle routes
-- Mike Crash Tue, 8 Jun 2010 21:00:00 +0100
mcnavi (0.2.9) unstable; urgency=low
* osm2mcmap: added link from way to street name
* mcnavi: draw cycle and tourist ways
* mcnavi: optimized routing for cycle and MTB
* mcnavi: show route distance and time after routing
* mcnavi: fixed computing of route time (only speed of first way used)
* mcnavi: fixed crash when reached destination
* mcnavi: draw the street names (new map needed)
-- Mike Crash Mon, 7 Jun 2010 20:00:00 +0100
mcnavi (0.2.8) unstable; urgency=low
* mcnavi: added GPS menu with satellites, move and bookmark icons
* mcnavi: added move map to position
* mcnavi: added satellites
* mcnavi: added finish flag
* mcnavi: fixed resize of controls
* mcnavi: disabled rerouting if cannot snap on road
-- Mike Crash Sun, 9 May 2010 19:00:00 +0100
mcnavi (0.2.7) unstable; urgency=low
* osm2mcmap: fixed crash in boundaries if country boundary not found
* osm2mcmap: fixed crash in pois if name lenght > 127
* osm2mcmap: extended char conversion to ascii with Polish characters
* osm2mcmap: use roundabout flag in ways instead of oneway only
(will be used for navigation on roundabouts in future)
* osm2mcmap: roundabout defaults to oneway road
* mcnavi: added bookmarks, read only file ~/.mcnavi/bookmarks
* mcnavi: moved user config file to ~/.mcnavi/mcnavi.conf
-- Mike Crash Sun, 4 Apr 2010 20:52:00 +0100
mcnavi (0.2.6) unstable; urgency=low
* osm2mcmap: new map format version 2
* osm2mcmap: added pitch and playground to map features
* osm2mcmap: import cities first
* osm2mcmap: allow cities in the same country with the same name and
rename it by boundary data or nearest larger city
* mcnavi: check that home position is on the map
* mcnavi: added chrono and distance meter (good for sports)
* mcnavi: improved gpx logging
* mcnavi: using gpsd hook function
* mcnavi: rerouting will ignore pass if length too short
* mcnavi: created global config file, and will read ~/.mcnavi.conf also
-- Mike Crash Thu, 1 Apr 2010 20:00:00 +0100
mcnavi (0.2.5) unstable; urgency=low
* mcnavi: added track logging with points decimation
* mcnavi: added re-routing based on drive direction for cars and trucks
* mcnavi: use access tags on routing
* mcnavi: changed visited nodes to turn ways, so routing allowed
in different directions, prepared for turn restrictions
* mcnavi: better snapping to route, better consecutiveness (still not perfect)
* mcnavi: added train vehicle for snapping to rail
* mcnavi: fixed crash in gui_address if address not found
* mcnavi: fixed drawing of ways from adjuscent sector
-- Mike Crash Sun, 21 Feb 2010 19:42:00 +0100
mcnavi (0.2.4) unstable; urgency=low
* osm2mcmap: recognize addresses based on boundary data
* osm2mcmap: added support for boundary relations
* osm2mcmap: tags are stored dynamicly - less memory usage
* osm2mcmap: boundaries uses multipolygons
* osm2mcmap: can save and load boundaries data
* osm2mcmap: process multipolygon planes
* mcnavi: added separate thread for gps
* mcnavi: support new gps version 3 api
* mcnavi: multipolygon planes are rendered, redraw inner polygon with background color
-- Mike Crash Wed, 10 Feb 2010 10:00:00 +0100
mcnavi (0.2.3) unstable; urgency=low
* navigation to addresses
* fixed memory cleanup
* improved navigation marks
* added bike and walking navigation
* sorted segments by way type to speed up reading of large zooms
* changes in map container
* first public preview
-- Mike Crash Sun, 3 Jan 2010 10:00:00 +0100
mcnavi (0.2.2) unstable; urgency=low
* first version with GPS support
* car navigation
* separate thread for navigation
* navigation marks
* can navigate to cities
* changes in map container
-- Mike Crash Thu, 30 Nov 2009 10:00:00 +0100
mcnavi (0.2.1) unstable; urgency=low
* separate thread for map render
* many optimisations in map convertor osm2mcmap
* changes in map container
-- Mike Crash Tue, 17 Nov 2009 8:00:00 +0100
mcnavi (0.2) unstable; urgency=low
* new map container, addresses not tested
-- Mike Crash Thu, 3 Nov 2009 19:00:00 +0100
mcnavi (0.1) unstable; urgency=low
* test version with sqlite database
-- Mike Crash Sat, 30 May 2009 10:26:35 +0100
|