Hikar (see gitlab repository) is an augmented reality app for Android (4.2+) which overlays OpenStreetMap ways on the device's camera feed. Its aim is to help navigation for walkers/hikers (hence the name) and other outdoor users. For example, imagine you are entering a large field and it's not clear where the exit is. Hikar will overlay the course of the footpath on your phone's camera feed allowing you to navigate across the field. Or, you're at a junction of paths and it's not clear which is the correct way. Again, Hikar will indicate which path is correct by overlaying the course of the path on the camera feed. Or, you're having to make your way across a pathless moor. Again, Hikar will show you the way.
The colour scheme used is (referring to the highway tag):
- green = footway
- brown = bridleway or anything with designation=public_bridleway
- red = byway
- orange = track
- light blue = cycleway
- white = road, or anything else
Version 0.2 is now available on Google Play. Data will then be downloaded from the server (or from the device storage; once downloaded, data is cached on the device). If the download fails (e.g. no network connection), it will try again shortly. You can also pre-download data for a certain area before you go out (to avoid relying on poor network connectivity in the countryside); to do this select the "Download data at a given location" menu option and enter the latitude and longitude of where you are going. An area a little over 5kmx5km containing this latitude and longitude will be downloaded.
Version 0.2 now features virtual signposts (see the screenshots below).
Hikar will automatically work out the horizontal field of view of your camera on Android 5.0+ devices. However if this is inaccurate, or you wish to zoom in to view the signposts, you may change it by pinching the screen in and out. The new field of view will appear on the display.
Screenshots (from Oct 2018)
These were taken in October 2018 using an early snapshot of Hikar 0.2.
These were taken early September 2013 just before SOTM; further work has been done since so it may not look exactly like this.
There are a few issues at the moment, and do please note that Hikar is primarily a research project rather than a polished end-product. It works, but doesn't have a really nice UI. The main issues at the moment are:
- Uses a lot of battery power - perhaps inevitable for this kind of app. Therefore, only use it when you need to and ensure your battery is fully charged before setting out.
- GPS inaccuracy leading to the OSM way being slightly offset from its true position
- Difficulty in aligning OSM data with the camera feed when climbing hills due to the difficulty of holding the device steady
- Possible out-of-memory issues when parsing the GeoJSON on low memory devices or when data is dense. In particular it is not intended for use in large urban areas (e.g. large cities).
The new version (0.2) can be downloaded from the Play Store here.
Source code is available here.
Version 0.2 covers the whole of Europe, plus Turkey.
How it works (briefly)
Hikar uses the Android location and sensor APIs to obtain the location and orientation of the device, then loads OSM data (as GeoJSON, produced from a PostGIS database) and height data (the Mapzen Terrarium elevation data set, now available via Amazon S3). The data is then cached on the device to avoid network access next time you're in that area. The height data is used to position the OSM data in 3D, e.g. overlay a footpath on the slope of a hill so that it appears correctly. The sensor API is used to obtain an orientation matrix which is then used with OpenGL to display the OSM data overlaid on the device's camera feed.
Any questions, please email me (Nick Whitelegg)
Note: Much of this text was taken from the Hikar OpenStreetMap wiki page but has been updated.
Hikar uses the camera to show the real world on the phone screen. It does NOT use the camera for any privacy-violating actions such as taking unwanted pictures of yourself or your surroundings. No camera images are stored on the device or uploaded to a remote server.
Hikar also tracks the device's location as this is necessary for the correct footpaths to be overlaid on your current camera feed. Again, personally-identifiable location data is not sent to the server or stored anywhere else. The current latitude and longitude is sent to the Freemap server for the purposes of finding the correct OpenStreetMap data for your current location only.