I'm new to kalman filters and filtering, and I'm working on a personal project where I have multiple readings all providing the same data (3d position in space, provided via computer vision algorithms). I'm using a kalman filter (implemented in python using openCV) to fuse these readings together to provide a single, improved position estimate, but the results are not as good as I'd like. In my scenario, I have noisy data that comes at ~30 fps and more accurate data that comes in ~7 fps. All of the data is being inputted to the same kalman filter. My main questions are:

  1. How can I weight the accurate data more in the kalman filter? I've tried simply scaling the measurement noise covariance depending on which sensor the data has come from, but the result is 'jumpy' (i.e. not smooth).
  2. My model accounts for the basic kinematic physics at play; I use a 9-dimensional state vector including position, velocity, and acceleration in each spatial dimension. This means I compute the time step delta t between the current and previous data received. However, the data can arrive very close together in time but in different positions, making it appear as though there was rapid movement. Do I need to account for this in some way? Or will the kalman filter sort this out on its own?
  3. Given what I've presented here, does a Kalman Filter seem like the best method for data fusion? Or are there alternatives that I should look into?

Thanks much in advance for any help or direction you can provide!


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.