Accurate floor level detection in smartphone apps is essential for truly context-aware localisation. In many ways it is the killer app. However, floor-level detection is also one of the most challenging goals in indoor positioning. The highest concentration of smartphone users reside in urban areas where multi-storey buildings are the norm, so accurate 3D detection is an ever-growing requirement.
At sensewhere, we all too familiar with the issues surrounding 3D positioning. In seeking to perfect a crowdsourced approach to indoor positioning, we are always aware of the 3D elephant in the room and dealing with it has occupied our R&D team for quite some time.
While we all see 2D positions every day – the X/Y on our mobile maps – we have no real reference point for the vertical axis in our everyday navigation applications. Wi-Fi fingerprinting can be deployed and may be effective in distinguishing floor levels with a relatively high degree of accuracy. But it requires extensive on-site manual surveying. Similarly, BLE hardware installations can provide some impressive results that can be tagged to specific floors, but who is going to build, install and maintain hardware infrastructure for every floor in every single building in Shanghai or Paris? These are not scalable solutions in anyone’s book.
Here at sensewhere we realised early on that vertical mapping and automated detection were going to be the next big step-change in global location. In attempting to address the challenge, we early on concluded that to create a commercially viable level detection feature that would work in any building, anywhere, automatic crowdsourcing was the only viable option.
The data science and research teams here at sensewhere have spent more than two years working through the problems, and after much deliberation and experimentation we finally settled on an approach that we refer to as the 3D-Grid. The key principle behind the 3D-Grid is a location system that intelligently builds and learns to recognise different levels in a building, using existing signal sources, device sensor readings and machine-learning.
In building a workable solution, we came up against a lot of brick walls – in some cases quite literally. While studying device barometer data recorded simultaneously from multiple static devices at the same location, we found that pressure readings can differ by more than 1hPa and substantially from sensor to sensor. We concluded that unfiltered barometric readings were not the answer in themselves, so we looked deeper into the raw data to seek a more intelligent approach.
How it works
The first building block is in detecting boundary events: knowing with a degree of certainty that a device has crossed the threshold of a building and in which direction. We worked on several techniques on both the client and server side to improve our understanding of the characteristics of boundary and threshold events.
Once inside, the next step is to establish a ‘ground zero’ using the most recent GNSS data, as well as the likelihood that a device is at ground or street level when entering the building (which is not always the case) and the possibility that we have entered at sub-level or an upper floor via a raised access.
Once the ground level is established, the system will automatically combine multiple data inputs into dynamic profiles that will be continually updated by subsequent devices, but which will ultimately provide an anchor for the higher and lower levels.
The next challenge was detecting floor changes. We take it for granted that there will be a lift, escalators, stairs or all three in a multi-floor building. However, learning to detect and predict the characteristics of each is a complex issue in its own right. Lifts do not stop at every floor, escalators can skip a mezzanine floor and connect ground to second floor – the permutations are daunting.
We studied each transitional type and with the aid of a temporal cache began to retrospectively build profiles at the start and end of each transition. The server system can adapt its understanding of each floor change and over a short period of time, starts to associate these points with unique levels.
By continually comparing crowdsourced data that is inbound to the server with the known references that make up an existing grid, we can adaptively detect with a very high level of accuracy which level of a building a device is located in regardless of atmospheric conditions or other input noise.
The value of z
We see a lot of use-cases for the inclusion of an automatically detected Z axis in location. Consider an emergency call from a mobile device, where the caller is unable to provide a verbal location to the operator – how much more effective would the first responders be if they were able to request location and receive a position in all three axes? Not everyone lives on the ground floor of a building.
Proliferation of 3D contextual mapping may be thing of the future, but the technology is here and now.
Jason Dean is CTO at sensewhere