How would I fuse two different sources of linear acceleration with a Kalman filter (perhaps linear acceleration readings from an IMU and from a dedicated accelerometer)?

My state is defined by distance and velocity; it is very similar to the following post, except for my availability of two sources of linear acceleration:

Using the Kalman filter given acceleration to estimate position and velocity

I'm not sure which acceleration reading I would use for my control vector ($u_{k}$) in the predict function.


1 Answer 1


That depends on how many of the accelerometer parameters (mostly drift and misalignment) you're trying to estimate.

If the IMU and the 'extra' accelerometer were in perfect alignment (and if their statistics are Gaussian), then the optimal combination of their outputs would be a simple weighted sum: $\vec {\hat a} = k_1 \vec a_1 + k_2 \vec a_2$ where (assuming equal scaling), $k_1 = \frac{\sigma_2^2}{\sigma_1^2 + \sigma_2^2}$, $k_2 = 1 - k_1$, and $\sigma_1$ and $\sigma_2$ are the noise variance of each accelerometer.

If you look at that first equation, you'll see that if one accelerometer is markedly quieter than the other, then unless it has other problems (misalignment, scaling, initial offset, etc.) your best bet is to just ignore the noisy accelerometer altogether. Even at the point where one accelerometer has three times less variance than the other, the ultimate contribution of the "noisy" accelerometer ends up being $1/9^{th}$ of the total -- which is definitely tending into "why bother?" territory.

If you've got some oddball combination, i.e. you've got a really quiet accelerometer with terrible initial offset or misalignment vs. a really noisy one with low offset and misalignment, then life gets more complicated -- in fact, I'd have to ponder on exactly how you'd express that in a way that would make a sensible Kalman filter.

  • $\begingroup$ Thanks for your response. Assuming I were to in fact go with the weighted sum route, I would then perform the update function twice -- once for each sensor -- in the Kalman filter. Is that correct? $\endgroup$
    – HackNode
    Commented Nov 11, 2019 at 20:45
  • $\begingroup$ If I were not trying to correct for sensor misalignment in the filter, I would precombine them, and present the filter itself with an acceleration vector. Come to think of it, I might do that anyway. $\endgroup$
    – TimWescott
    Commented Nov 11, 2019 at 20:52
  • $\begingroup$ Great, thanks again for your insights. $\endgroup$
    – HackNode
    Commented Nov 11, 2019 at 20:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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