Indoor Analytics

Indoor Analytics is a project uniting the Spirals research team1 and Mapwize thanks to a European funding (CPER Data 2019-2022) where actors cooperate to develop an indoor location framework and to develop new indoor analytics algorithms.

In this context, I develop a tool to analyze the accuracy of indoor positioning systems deployments.

Thanks to a web interface, one can draw “reference paths” over a place; people can then follow them on-site with a mobile application, creating “runs”; we can then analyze difference between nominal path and trajectories reported by the indoor location system.

Learn more about the Indoor Location framework here: https://www.indoorlocation.io

Toolkit components

Web interface

The web interface allows stakeholders to create, view and edit studied places and reference trajectories.

It also allows them to access gathered traces, and run analysis on them to check on average error and places where error is particularly bad.

Mobile application

The mobile application is the component that provides data to the analysis toolkit. It allows people to follow previously-defined reference traces on-site, and gathers positions from tested location systems (Wi-Fi, GPS…) in the meanwhile.

This application is developed with Flutter, and is available on both Android and iOS. It includes a location provider SDK that any IPS provider can extend to make their solution testable by our toolkit.

If you want to create test traces, you can download the application here.


Backend is responsible for receiving and storing data (places, [reference + test] traces, associated positions) and analyzing them.


To compare a gathered trace to a reference trace, we create a projection of each gathered location on the reference trajectory, and compute the distance between received and projected positions.

This projection is done by computing the distance ratio of the current position, aka ratio of distance from reference trace origin to projected position by total reference path length.

Distance between two paths

To get an accurate error, we don’t apply this algorithm to the whole traces; instead, since we collect timestamps at moments when users reached reference trace positions, we compare each one of the reference trace segments to locations that were gathered while users were walking said segment.

We can also get an error corresponding to an ensemble of traces: for each meter along the observed reference trajectory, we retrieve the most adapted location of each acquired trajectory, and run an algorithm on the obtained locations set. Locations selection choices include:

  • Previous: selects latest acquired locations reported before reaching given distance,
  • Next: selects first acquired locations reported after reaching given distance,
  • Closest: selects acquired locations that are closest to given distance,
  • Linear: linearly projects locations for given distance.

Gathered trace screenshot

Clustering animation

  1. Spirals is a joint project-team between Inria and University of Lille (within CRIStAL lab) which focuses on software engineering issues, self-adaptive systems, privacy protection and energy consumption optimization.