tagin! is an open source, location tagging engine that may be used to create indoor, location-based services and applications. Developers can use the tagin! engine to manage points of interest (POI) and digital signs making them available to their applications on WiFi-capable devices.
Our initial goal is to create a mobile engine that characterizes the distinct patterns of radio-frequency activity (i.e., the fingerprint) in a particular place and assigns a unique identifier or URN to each one.
Availability and Status
tagin! is currently in active development but is not yet ready for deployment.
Tune in for the latest status from any of:
- IRC: Join irc.oftc.net:#idrc-mobile to participate in daily discussions or get help with running, developing, or designing for tagin!
- Launchpad: Monitor tagin! in Launchpad and use it to submit questions or feature requests.
The tagin! engine characterizes the distinct patterns of radio-frequency activity (i.e., the fingerprint) in a particular place and assigns a unique identifier or URN to each one. Thus, the tagin! URN may be used as an identifier of a specific physical location. Developers may therefore use tagin! URNs to create location-based content making it available through their own services, devices and applications.
When a URN request is received by a client device or application, the tagin! engine should perform the following steps:
- The radio chip in the client device is instructed to perform one or more scans in order to obtain a new fingerprint
- The new fingerprint is compared to nearby, previously recorded fingerprints that have already been assigned a URN
- If the fingerprint is sufficiently similar to one that already has a URN, the two fingerprints are merged under the existing URN
- If the fingerprint is NOT sufficiently close to one that already has a URN, the fingerprint will be saved with a new URN
- The URN (either already existing or newly created) will be returned by the engine
Speed / Accuracy Trade-Off
There is a trade-off between how fast the tagin! engine can respond and how accurate it can be. Longer fingerprinting, characterized by multiple averaged scans has a better chance of getting accurate results but may take too long to resolve for a particular application. The tagin! engine should allow developers to control for this trade-off.
Local vs. Global URNs
The tagin! engine should be entirely contained within a handset and also run offline. Thus, individual handsets will be initially responsible for generating the URNs. This will cause different handsets to create different URNs for the same location, thus, URNs generated by the handset will only be valid in the context of the handset itself. We call these local URNs because they can only be used to provide services relevant to the specific user and handset (e.g., location-based preferences).
In order to provide consistent identifiers across handsets, the engine will be able to synchronize data with a server which will turn the local fingerprint data submitted into global URNs. Global URNs will enable more powerful services across handsets and applications (e.g., indoor mapping and/or wayfinding). In its simplest form, the server will act as an additional device running the tagin! engine, except it will receive/provide data from/to all tagin!-enabled devices instead of just one.
Some of the most significant features of the proposed tagin! engine are detailed below.
Adaptability / Self-Learning
The tagin! engine will use each and every request to update its fingerprint-URN relationship. While URNs will be unique, and will not change after being created, the underlying pattern represented by the associated fingerprint will be updated to reflect the latest measurements. This will allow the tagin! engine to quickly respond to changes in the radio-frequency patterns of specific locations while still providing a unique resource identifier that developers can reliably use to refer to a particular location.
Physical Identifiers (RFID, 2D Barcodes)
In addition to automatic identification of a location through the tagin! engine, it is also possible to store the URNs generated into physical identifyers than can be attached to the location itself. These physical identifiers may consist of RFID tags, 2D barcodes and/or any other form of physical identification device that provides an interface to mobile devices. The tagin! development team will work towards the integration of physical identifiers into the tagin! engine.
Work in Progress
- URN Generation (GSoC 2011)
- Database Schema (GSoC 2011)
- Tagin Demo App (GSoC 2011)
- 3D Tag Cloud for Android (GSoC 2011)
- RESTful API
- Fingerprint: The list of wireless beacons and their associated RSSI as seen from a particular location. Fingerprints can be measured directly or calculated as an average of a collection of measurements.
- Rank Distance: