The Smart Services Group has developed a demo application showing how to use the indoormark tag specification at Open Street Map. The source code is written in QT 5.5 and runs on Android devices. To build the application, use QT Creator and configure the project for the Android platform.
The requirements are the following:
- QT 5.5
- QZxing library
It has been tested on the following devices
- Sony Xperia Z1 Compact
- Asus Memo Pad 7 (k013)
See the readme file at Github for further information:
You can download an build the code or install the arm apk available at Github (https://github.com/GlassOceanos/osm-ind … p/releases)
The application uses the camera to scan QR codes. Neither iBeacons nor NFC are detected. You need to print at least one QR already tagged in OSM as explained later. To use the app, press the camera button and point to a QR code tagged in OSM as explained in the mentioned page. The QR should have been generated using a unique identifier to produce only one result in the query. If the QR is found, the map will show you the position where the QR beacon is located. For testing purposes you can print and use this one:
Using indoormark tag it is possible to label several types of indoor beacons such us:
- ibeacons: they provide proximity location enabling triangulation positioning
- NFC tags: they can provide the coordinate of the current position
- QR codes: as the NFC tags, they can provide a known coordinate.
By using this, navigation systems could retrieve all the data they need to position the user. For instance, an ibeacon based application should know the major and minor numbers to distinguish any ibeacon. A NFC tag would give its unique address when detected and this value could be use to match an indoormark in Open Street Maps and obtain its coordinates. See the examples below to know how this can be achieved.
QR codes can be used to give a unique identifier when scanned. An approach to transform that to a position within a building is to match the unique identifier given by the QR with the item tagged in our OSM map. Doing this, we can get the coordinates and also the level where the QR is placed.
indoormark=beacon level=0 beacon:type=QR beacon:uuid=123456
NFC can be used in a similar way to QR codes. In this case, the address of the NFC is unique and the procedure to obtain the location could use its value to get the coordinates and level from the map.
indoormark=beacon level=0 beacon:type=nfc beacon:address=11:11:11:11:13
In the case of an ibeacon, we will need more data in order to make work our triangulation algorithm. Useful information to store is the uuid of the beacon, its major and minor numbers and the signal calibration value (measured)
indoormark=beacon level=0 beacon:type=bluetooth beacon:uuid=123456789 beacon:major=1 beacon:minor=2 beacon:measured=-56