LIPS (Learning-based Indoor Positioning System)
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gradle/2.10/taskArtifacts
.idea
.metadata
app
build/generated
gradle/wrapper
.gitignore
LIPS.iml
README.md
build.gradle
gradle.properties
gradlew
gradlew.bat
local.properties
settings.gradle

README.md

LIPS

LIPS (Learning-based Indoor Positioning System)

Paper: (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=7444919)

LIPS is a hybrid fingerprinting-based approach to indoor localization using the sensors available in smartphones. For information about the research done involving this application, see http://arxiv.org/abs/1505.06125 (pdf at http://arxiv.org/pdf/1505.06125v1.pdf).

Machine Learning

The models in /assets were built using WEKA (Waikato Environment for Knowledge Analysis http://www.cs.waikato.ac.nz/ml/weka/). WEKA is also used in the code for predicting the user position in the TrackerActivity class. The WEKA website is a great resource for any issues there, as well as the WEKA mailing list. Documentation for the Java resources in WEKA is available at http://weka.sourceforge.net/doc.dev/ while instructions for using WEKA in Java code can be found at http://weka.wikispaces.com/Use+WEKA+in+your+Java+code and http://weka.wikispaces.com/Programmatic+Use. If there are problems, feel free to open an issue or send me an email.

Building

Building the application and modifying it for usefulness in other buildings or areas of interest should be straightforward. Depending on the intended use of the application, much less code than this may be necessary. For help setting up an Android development environment, the documentation at http://developer.android.com/ is excellent. Regarding the code itself, comments are fairly liberal and variable names tend to be descriptive. Again, if you have any trouble, please open an issue here on Github or send me an email.

The main classes to change are MainActivity.java and TrackerActivity.java.

The MainActivity file contains the code for data collection. The only necessary changes should be adding a new list of WiFi BSSIDs to listen for.

TrackerActivity will need the model built on your new dataset to predict a position.

Adding additional machine learning classifiers

Notice the RBFRegressor jar in libs. This is because RBFRegressor isn't by default installed with WEKA. To add RBFRegressor for use in code:

Open WEKA

Click the Tools tab, then Package Manager

Find and install the RBFNetwork package

The jar will be in wekafiles/packages/RBFNetwork/RBFNetwork.jar

GPLv3