Skip to content

t3rmian/ips.research

Repository files navigation

Indoor Positioning System research

This is a Indoor Positioning System research project that I have done to improve PBMap navigation. This project incorporates an Android app for data collection and partial testing, bash scripts for running Weka tests, and custom k-NN distance metric in form of Weka package. The aim was to test accelerometer based pedometer and WiFi fingerprinting.

There are complex frameworks that may provide very good accuracy, like FIND. However, they are often based on the client-server architecture. The users might not have access to the building WiFi network and to the cellular data (no signal or just preference). The point of this research was to test the accuracy and feasibility of an offline/standalone system. Another important and shared factors were (among other things) heterogeneity of devices and changes in the environment (like presence of people/APs). More information with results and user's guide will be published after few months due to legal requirements.

App main features

  1. Data collection (with device and sensor information)
    • inertial (acceleration samples, movement type, sampling frequency)
    • magnetic (magnetic field, gravity, route name)
    • WiFi (fingerprints: SSID, BSSID, RSSI, timestamp, place)
  2. Data storage
    • sdcard and remote (free CouchDB hosting can be used)
    • loading, saving and removal
  3. Algorithm offline testing (semi-automated)
    • pedometer - on device (all possible combinations):
      • movement type
      • frequency
      • device
      • filtering choice: none, Kalman filtering, moving average filter
      • algorithm parameters: sensitivity (custom or automatic)
    • RSSI fingerprinting :
      • on device - k-NN quick pre-testing
      • on PC - supported by bash scripts that run Weka tests and calculate accuracy with three-level precision (neighbours)
      • SSID filtering (regex)
      • datasets permutations (device groups and dates)
      • different value scales: logharitmic and linear
      • datasets division and grouping (average/median/none)
  4. Algorithm online testing (manual)
    • checking if performance is feasible on the device (standalone version)
    • checking if pedometer counts steps for random people

Technology stack

An Anvil library has been used together with Kotlin for very fast prototyping. Aside from that:

  • MPAndroidChart
  • Weka library and application
  • local Couchbase with remote CouchDB
  • JUnit
  • Bash

Gallery

menu inertial
inertial2 wifi
data_load2 arff_test
arff2 pedometer_test
pedometer_test_output info
online