'Kalman filtering algorithm for indoor positioning system [closed]

I am using a BLE (Bluetooth Low Energy) for indoor positioning system by its RSSI and trilateration algorithm.

The problem is how to find an accurate distance using RSSI.

Every time, the beacon is giving different RSSI values, because of some interference.

I read that Kalman filter can solve this problem to some extent, but how do I use a Kalman filter?

So far as my knowledge goes, there are two functions. One is prediction and the other one is correction. But where should I start?



Solution 1:[1]

The Kalman Filter is not suitable for your problem.

Issues

  1. You describe the noise as "some interference". You will need to know the noise distribution in advance.
  2. The error caused by occlusion (the human is situated between the mobile device and a BLE beacon) will make the filtering error very large. In fact, you will need to investigate many work-around methods to circumvent the non-linearity here.
  3. The RSS indicator of BLE is not a linear function to the actual position of the mobile device (again, non-linearity)

Answer

  1. You will either need to get an overview about Bayssian Modelling, in your case, you want investigate "Unscented Kalman Filter", "Extended Kalman Filter" (extensions for non-linearity) or "Particle Filter" (e.g. non-linear filter, noise distribution independent). A short overview for localization (in the context of robotics) can be found here: http://robots.stanford.edu/papers/thrun.probrob.pdf and in more detail here: http://www.probabilistic-robotics.org/
  2. Since I assume you have pre-knowledge about the room and beacon positions, a more straight forward approach might be an investigation of BLE fingerprinting techniques. the link also contains further literature to other indoor localization techniques.

Solution 2:[2]

Using BLE it is really difficult to estimate accurate distance. If you are using many beacons (every 1 m) you can estimate it but if the distance between beacons are large, it is difficult because of reflection and absorption of signal. You can try using fingerprinting for better accuracy. Kalman filter is not right choice for this application since you don't have additional control vector to predict. If you are stationary then KF can help but for dynamic cases you need to have control vector to predict and your BLE RSSI level can be used as measurement.

Solution 3:[3]

Kalman filter is relevant only for "presence" detection rather than "position" i.e. it can be useful if the position is static.

The prediction function will be a simple constant function: RSSI(t) = RSSI(t-1). For correction you will need to set an arbitrary value representing how much you "trust" your measures.

This blog post can be a good place to start if you want to investigate this solution: it provides explanations, a simplified model and also an implementation of such a Kalman Filter.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Mahaveer Jain
Solution 3 n0p