0
$\begingroup$

In pythons module for kalman-filtering, filterpy, there is a function batch_filter() to batch filter a list of measurements that then can be used for RTS-smoothing. See the documentation here.

I want to smooth my measurements with a RTS-smoother like:

(mu, cov, _, _) = kf.batch_filter(list(np.array(centroids)))
(x, P, K, Pp) = kf.rts_smoother(mu, cov)

The problem is now that I have two measurements from two different sources with different measurement noises. The function batch_filter() can only process one source of measurements. When I calculate and save x and P for every time step with the sequence "predict, update with R1, update with R2", is this the same thing batch_filter() would do?

$\endgroup$
1
$\begingroup$

I am not use how you can success multiple sensors using batch filter, but, in sequential filtering you need to perform time update before each measurement. You can do it using the timetag information of each sensor measurement. You can modify the batch filter code however, I strongly recommend to write your own function depending on what you need.

$\endgroup$
0
$\begingroup$

Processing two different sources with a single filter is not possible. As I understand you want to get single clean signal by using n noisy observations but Kalman filter it is not a dimension reduction method so you will get vector/scalar state from vector/scalar observations in same dimensions. After filtering noisy observations individually you should find another way to combine them. I also agree with the previous answer, you may want to implement Kalman filter by yourself. It is relatively simple. I can recommend this paper: "Understanding the Basis of the Kalman Filter Via a Simple and Intuitive Derivation" from Ramsey Faragher.

$\endgroup$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.