In our last post, we talked about how iBeacons work and what we are currently doing with them.
One of the major problems of iBeacons is how you measure the reported distance between a mobile device and a single iBeacon. Due to the physics behind radio signals, the reported value is an estimation only and we can observe a lot of deviation.
Estimote, on their community forum, estimated the following deviations:
- Distance of 20 cm: deviation is 5 – 6 cm
- Distance of 1 m: deviation is 15 cm
- Distance greater than 10 m: deviation is 2 – 3 m
We have made our own measurements in various environments such as a house, busy office, open air… and we have found that the deviation can be quite different. Sometimes, the distance estimation can switch from 1 to more than 5m!
So we’ve started looking at how we could improve distance estimation accuracy…
1. First of all, we’ve created a testing environment
We’ve conducted a few measurements in order to reproduce the great work done by ShineTech a few months ago. Our measurements have been made using Estimote beacons and our own GeoMoby iBeacons.
- Playing with TxPower will make the distance estimation a bit more accurate within the first meters but won’t help above 5m.
- The location of your iBeacon is important: try to put your beacon high in order to avoid any direct obstacles but also avoid windows as they cause a lot of reflections.
- We could observe jumps and dips in signal readings without moving the iBeacon from its current position so estimation algorithms must “average” the readings as much as possible… keeping in mind that the scanning process is power hungry!
2. We’ve read a lot !
Are triangulation (estimation using angles) or trilateration (estimation using distances) good approaches to better measure the distance from a beacon? The very first question you need to ask is : “what are you trying to achieve?” – Is it a new fancy indoor navigation system or a proximity-based messaging platform?
We are specialised in proximity detection and our goal is to provide a easy-to-use platform for developers and marketers. As a result, we have decided to focus on how to improve signal readings in a complex indoor environment and NOT looking at indoor navigation.
The majority of indoor systems operate in a non-line-of sight (NLOS) environment. Based on empirical data, a fairly general model has been developed for NLOS propagation. It is called the Power Law Model:
RSSI = 10n x log10( d) + A
RSSI = Measured signal by your mobile device - in dBM
d = Distance estimation – in meter
n = Path loss exponent
A = Calibrated RSSI at 1m – in dBm
The key variable that we need to estimate here is the path loss exponent (n).
- n inherently depends on the environment
- n is an estimation based on empirical data
- n has to be measured with appropriate tools
3. We are now using our own calibration tool
We’ve decided to build an iBeacon Calibration app using basic math concepts such as Least squares method and polynomial curve fitting. The idea is to manually measure the signal strength (RSSI) at different distances from the iBeacon and solve a quadratic problem that will give us the path loss constants of the current indoor environment!
Our app lets you move around your iBeacon at the distance showed on the left sidebar (in meters), click on “Get RSSI” and report the result. Click on “Store & New” in order to take another measure and when you are ready, hit the “Calculate” button! The app will display 3 constants that you can enter in your dashboard.
The very next version of our app will allow you to authenticate with our server and will “automagically” update your account for the desired beacon and environment. So stay tuned!
- Try to keep your mobile device in a “shopping” position when you take the measures in order to get real-life results
- Repeat measurements 2 or 3 times. The app will “smooth” the readings and calculate an average
- The first version of our Android Calibration App is available to our current customers only. Email email@example.com to know more
4. Algorithms in the cloud
The path loss constants being stored in our database from measurements done by our team or our clients using our iBeacon Calibration app, our platform will then estimate the distance via a polynomial curve fitting method.
The below graphic is the result of 3 series of measurements using an Estimote iBeacon, the formula provided by a Radius Network’s engineer and our own calibration tool up to 15m:
I must say that we have been quite surprised with the results… Standard estimation shows good accuracy up to 2m. Further away, the accuracy becomes quite poor…
A GeoMoby iBeacon has been used for this second graphic:
We have read numerous bloggers saying that “the nearer you are to a beacon the more accurate the reported distance, likewise the further away the beacon to a mobile device, the less accurate”. It is true using the current tools on iOS and Android, but our results demonstrate that you can still get a fair accuracy in a complex indoor environment using our calibration process.
Here now how you can configure your iBeacon proximity in our system:
Having completed these experiments, we can conclude that achieving accurate distance measurements with a single iBeacon is possible with some limitations, especially because the measurements depends on the quality of the calibration process and the complexity of the indoor environment.
More measurements and software updates will be coming soon so stay tuned and contact us if you need to know more: firstname.lastname@example.org.