How to Improve Data Stability and Accuracy with Indoor Positioning Gimbal Beacon?

In android, how to improve the stability of beacon multitude detection ?. I use wireframe beacons for indoor positioning. Is BLE suitable for accessing room data?

+3


source to share


2 answers


I've worked a lot on this as I've placed beacons in a hallway full of conference rooms, all in close proximity.

First, I recommend placing beacons on the ceiling. The signal must be broadcast at an angle downward. This reduces interference slightly. Keep in mind that this may not be a solution for every room, but in my situation with rooms close to each other, it helped a lot.

Then remember to use a good smoothing option . The Gimbal SDK is working on the concept of arrivals and departures. These events will only be triggered if the signal is within a certain threshold. Smoothing the signal will prevent situations where one beacon has a signal of -56 and then goes down to -75 for the next second. It uses an averaging algorithm that flattens the signals to prevent such a huge reporting gap. This prevents false arrivals and departures from huge message spikes.



Finally, tweak your arrivals and departures, signal anti-aliasing options, and beacon placement to find what works. There, unfortunately, it doesn't fit all the same size options, and you'll need to do continuous site polls to get your tweaks to work as planned.

If you would like to know more about the Gimbal SDK with Proximity for Android, I wrote a deep dive on the subject. You can view this article here . However, if you are using the latest SDK from Gimbal, they have updated their API and reset VisitManager. So my article only applies to their pre-1.3 SDK. In the future, I will be writing a new article about the updated SDK, which I am actively working with now.

+1


source


In my opinion, the answer is: Yes, BLE is suitable for internal localization.

I would recommend using a low pass filter to smooth out the distance / signal level readings. I can think of two ways to do this:

  • Simple: Works on average . Just compare the last 3/10/30 readings. See what works best.

Or:

  1. More complex, but more customizable: RC filter . The hoes algorithm is as follows:

    // FOR EACH new reading from the BLE do this:
    
    // fc = cutoff frequency [Hz]; i.e.:
    // how frequent do you want to detect the BLE coming and parting from the receptor
    // this depends on the range and speed of people (see table below)
    var real fc := 0.21  // <-- configure this!
    // a constant [-], also pi = 3.1415
    var real RC := 1 / (2*pi + fc) // <-- OR configure this from the table below!
    // dt = time between two consecutive readings [s]
    var real dt := 1 // <-- might need updating at each reading !
    // a constant
    var real α  := dt / (RC + dt)
    //the current estimate of the distance that is based on:
    // the current reading x[i] and the previous estimate y[i-1]
    y[i] := α * x[i] + (1-α) * y[i-1] // <-- result !!!!
    
          



I have computed a table for RC

(constant); in my opinion it depends on the BLE range, because if a person walks in this range inside and out, the frequency of entry and exit is higher if the distance is less. Try these 5 values ​​and see what / if it works for you:

The maximum distance we look at [m] RC (constant)

: RC

1:, 0.212212849

3:, 0.636638548

10:, 2.122128495

30:, 6.366385485

60:12.73277097

Good luck.

0


source







All Articles