FIND: High-precision indoor positioning framework for most wifi-enabled devices

Framework for Internal Navigation and Discovery

The Framework for Internal Navigation and Discovery (FIND) allows you to use your (Android) smartphone or WiFi-enabled computer (laptop or Raspberry Pi or etc.) to determine your position within your home or office. You can easily use this system in place of motion sensors as its resolution will allow your phone to distinguish whether you are in the living room, the kitchen or the bedroom, etc. The position information can then be used in a variety of ways including home automation, way-finding, or tracking!

Simply put, FIND will allow you to replace tons of motion sensors with a single smartphone!

The system is built on two main components – a server and a fingerprinting device. The fingerprinting device (computer program or Android app) sends the specified data to the machine learning server which stores the fingerprints and analyzes them. It then returns the result to the device and stores the result on the server for accessing via a web browser or triggering via hooks.

How does it work?

Each time a WiFi-enabled device conducts a scan of nearby access points, it will receive a unique identifier of the access point and a signal strength that correlates with the distance to the access point. A compilation of these different signals can be compiled into a fingerprint which can be used to uniquely classify the current location of that device.

The access points can be anything – routers, Rokus, Raspberry Pis. They also can be anywhere – since they only need to be seen and not connected to, it will successfully use routers that are in a different building.

The basis of this system is to catalog all the fingerprints about the Wifi routers in the area (MAC addresses and signal values) and then classify them according to their location. This is done using an Android App, or computer program, that collects the fingerprints, and then sends them on to the FIND server which can compute the location.

Locations are determined by the FIND server using classification. Currently, the server supports a Naive-Bayes implementation, Random Forests, and Support Vector Machines. Positioning by classification is accomplished by first learning the distributions of WiFi signals for a given location and then classifying it during tracking. Learning only takes ~10 minutes and will last almost indefinitely. The WiFi fingerprints are also the same across all devices so that learning using one device is guaranteed to work on all devices.

Download & Tutorial

FIND Copyright 2015-2016 Zack Scholl. This product includes software developed by Zack Scholl.