Mr.Floppy
Mr.Floppy

Reputation: 348

Using a particle filter with multiple sensors with different sampling rates

Current situation:

I have implemented a particle filter for an indoor localisation system. It uses fingerprints of the magnetic field. The implementation of the particle filter is pretty straight forward:

  1. I create all particles uniformly distributed over the entire area
  2. Each particle gets a velocity (gaussian distributed with the mean of a 'normal' walk speed) and a direction (uniformly distributed in all directions)
  3. Change velocity and direction (both gaussian distributed)
  4. Move all particles in the given direction by velocity multiplied by the time difference of the last and the current measurement
  5. Find the closest fingerprint of each particle
  6. Calculate the new weight of each particle by comparing the closest fingerprint and the given measurement
  7. Normalize
  8. Resample
  9. Repeat #3 to #9 for every measurement

The problem:

Now I would like to do basically the same but add another sensor to the system (namely WiFi measurements). If the measurements would appear at the same time there wouldn't be a problem. Then I would just calculate the probability for the first sensor and multiply this by the probability of the second sensor to get my weight for the particle at #6.

But the magnetic field sensor has a very high sample rate (about 100 Hz) and the WiFi measurement appears roughly every second.

I don't know what would be the best way to handle the problem.

Possible solutions:

  1. I could throw away (or average) all the magnetic field measurements till a WiFi measurement appears and use the last magnetic field measurement (or the average) and the WiFi signal together. So basically I reduce the sample rate of the magentic field sensor to the rate of the WiFi sensor
  2. For every magnetic field measurement I use the last seen WiFi measurement
  3. I use the sensors separated. That means if I get a measurement of one sensor I do all the steps #3 to #9 without using any measurement data of the other sensor
  4. Any other solution I haven't thought about ;)

I'm not sure which would be the best solution. All the solutions dont seem to be good.

With #1 I would say I'm loosing information. Although I'm not sure if it makes sense to use a sample rate of about 100 Hz for a particle filter.

At #2 I have to assume that the WiFi signal doesn't chance quickly which I can't prove.

If I use the sensors separately the magnetic field measurements become more important than the WiFi measurements since all the steps will have happened 100 times with the magnetic data till one WiFi measurement appears.

Do you know a good paper which is dealing with this problem?

Is there already a standard solution how to handle multiple sensors with different sample sizes in a particle filter?

Does a sample size of 100 Hz make sense? Or what would be a proper time difference for one step of the particle filter?

Thank you very much for any kind of hint or solution :)

Upvotes: 3

Views: 2078

Answers (1)

krilid
krilid

Reputation: 186

In #2 instead of using sample-and-hold you could delay the filter by 1s and interpolate between WiFi-measurements in order to up-sample so you have both signals at 100Hz.

If you know more about the WiFi behavior you could use something more advanced than linear interpolation to model the Wifi behavior between updates. These folks use a more advanced asynchronous hold to up-sample the slower sensor signal but something like a Kalman filter might also work.

With regards to update speed I think 100Hz sounds high for your application (assuming you are doing positioning of a human walking indoors) since you are likely to take a lot of noise into account, lowering the sampling frequency is a cheap way to filter out high-frequency noise.

Upvotes: 1

Related Questions