Estimating Beacons Distance Error


I am developing an android app with the help of the estimote beacons, and I am trying to get the absolute position of the smartphone but to do so I need to know the distance between me and the beacons so afterwards I can use trilateration but I am having some big error rates and I am not sure if it is normal or if it is a problem with the beacons.

I tried different measurments, one indoors and another outdoors the result was not as I expected. I even tried using filters, I already tried Kalman filters and I will try the particle filter but I don’t think it is possible. I am just wondering if the error could be in the beacon themselves.

I tested on a room like this:

For you to understand my real distance to the beacons are:

  • B1: 1.20 meters
  • B2: 3.85 meters
  • B3: 3.70 meters
  • B4: 5.25 meters

After multiple times of collecting distances with the estimote API, i get in average this distances:

  • B1: 1.33 meters(not bad)
  • B2: 4.2 meters(0.35 meters error)
  • B3: 5.33 meters(1,48 meters error)
  • B4: 5.73 meters (0.50 meters error)

Although the reading are not that bad(except for B3), in a 6*6 room that can lead to some errors, the problem is that sometimes all those beacons readings are wrong and suddenly instead of being near the B1 beacon I am all the way across the room near B4.I then made a graphic and histogram with all the beacon readings and I can’t do anything with them. As you can see in this histogram:

  • B1 Histogram:

  • B2 Histogram:


  • B3 Histogram:


  • B4 Histogram:


As you can see the first beacon sometimes reads very differente distances, and that error is killing the app, instead of being near him I am all the way across the room, or even further away… Combining the error of the 4 beacons and most of the time the app says I am at a random position…

I tried with kalman filters but it was even worse, I got in average these distances:

  • B1: 2 meters(0.7 meters error)
  • B2: 5.15 meters(1.3 meters)
  • B3: 3.65 meters(0.05 meters error, not bad at all)
  • B4: 3.50 meters(1.75 meters error)

It helped eliminating some irrational errors, but at the same time it did not eliminate big errors estimates…

Is there any specific filter I can apply to eliminate errors? or at least diminishes the error?

Thank you very much