Giter Club home page Giter Club logo

patrickfav / indoor-positioning Goto Github PK

View Code? Open in Web Editor NEW
50.0 5.0 24.0 24.5 MB

A full-featured indoor positioning system that was developed during my master thesis. It has a javascript based rich UI and has a server-client architecture.

Home Page: https://repositum.tuwien.at/handle/20.500.12708/2080

Shell 0.44% Lua 0.65% Java 64.72% CSS 2.34% HTML 12.67% JavaScript 19.18%
angular couchdb highcharts iot javaee nearest-neighbors open-wrt received-signal-strength wifi

indoor-positioning's Introduction

Introduction

This is a full-featured indoor positioning system that was developed during my master thesis. Its server component uses servlets and an Angular JS front end, whereas the Router/AP service is written in Lua.

GitHub release Github Actions Coverage Technical Debt

UI Overview

Requirements

Software

  • Java 11
  • Tomcat 7
  • CouchDB 1.5
  • Maven 3

Hardware

  • At least 4 OpenWRT compatible AP/Routers in a network with provided custom web services
  • At least 1 OpenWrt compatible AP/Router as client with provided custom web services

Architecture/Procedure

The underlying architecture can be observed in the diagram below.

Map Generation Procedure Diagram

Overall procedure to map the target area:

  1. Node Setup & RSS Measurement Active Nodes, which can be regular access points, are distributed among the target area. Next a measurement phase is initialized which takes about one to three hours.

  2. Site Evaluation From the resulting data, the underlying radio propagation model can be adjusted to meet the actual properties of the current site.

  3. Map Generation & Positioning With the adapted model, radio wave propagation can be simulated over a representation of the target area. Positioning works similar to the scene analysis approach using a modified nearest neighbor algorithm.

Phases Diagram

Setup

Server

Start Tomcat & CouchDB with standard ports. Compile project with

mvn clean package

and deploy the *.war on your Tomcat. The DB will be set up automatically, the name of the db will be derived from the maven -> , so if you have a backup change the finalName accordingly.

AP/Routers

System Configuration

As prerequisites, you must have at least 4 APs ready (with installed webservers) in your network (knowing the IPs of each).

Open the browser and enter the url you deployed the war (usually something like http://localhost:8080/MyProject). Create a new network by pressing the box with the "+". Enter the details and set "Surveys Per Node to 100" and "Survey Schedule" to "Every Minute" to accelerate measurement. Then next to "Active Nodes", add new nodes with "Add Node". Enter name and IP address, then press "discover" to see if the node is reachable. After adding all nodes wait a couple of hours to let it measure.

Next press "Schedule Job" -> "Start Single Run Analysis" and wait a couple of seconds. The analysis should appear under "Analysis", reload page if not. The click "Radio Path Loss Config" and click "Normalize Node Multipliers". In the bottom table click on drop-down under "SSID" and choose "Targetdistance". Add the physical distances between nodes in meters in the distance matrix or skip the entire step. After entering the distances you can press "Calculate Path Loss Model" to optimize the used model -> "Update config".

Next, again, press "Schedule Job" -> "Start Single Run Analysis" and wait a couple of seconds. Select the current analysis (with the adapted model). Choose "Signal Strength Map" and correct the positions of the active nodes. You may want to upload a floor plan blueprint first in the network details (the pen icon next to the main header). After that, go to map full screen mode (four arrows icon). Scale the floor plan with the slider until the meter sizes are correct (you may have to correct the positions of the Active Nodes again). Then press "Calculate" next to the "Extended Nodes" headers. This will calculate the positions of all APs/Routers in the vicinity. You may want to correct the positions you know of. Press "save". You now are ready to position.

Node Editor

Positioning

You need an AP with the custom webservices installed, same as Active Nodes. This AP must be in your network.

Positioning

Go to "Positioning". Input the IP of the client (AP) and press "Find". If multiple networks match for this position you have to select one, otherwise you will be shown a UI with the estimated position. You may press on a square in the grid to select the actual position to let the system calculate the offset.

Performance

Properties of the Proposed System

  • Adapts well to the specific environment
  • Good scalability and low maintenance with easy setup
  • Accuracy between 2 and 4 meters on average (see diagram)
  • Initial positioning with trilateration works well
  • Quality degrades with non-correlating RSS

Accuracy

The results indicate that the position accuracy offers a performance comparable to a state-of-the-art solution. The following diagram shows the accumulated offsets in all test locations.

Accuracy Diagram

Scalability

Based on extrapolated data, the proposed system delivers superior performance in terms of maintainability and scalability. In the diagram below the required effort for various target areas is depicted.

Scalability Diagram

License

Currently proprietary

indoor-positioning's People

Contributors

dependabot[bot] avatar patrickfav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

indoor-positioning's Issues

iPhone/iOS compatibility

I was just wondering whether this can work on/for iphones or any other portable Apple products?

Thanks

Passive tracking of devices which are NOT connected to APs

As far as I understood, this software can track only devices which are connected to APs?

I've tried to install it to different hardware using generic image from openwrt.org and installed cgi-bin scripts and it doesn't look like it works at all.
iwinfo is able to show RSSI for device which is associated with AP, how is the software supposed to find user location?

Or it can find AP-client location and that's all?

Thank you for answering my questions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.