I'm searching filter to reduce noise and smooth the signal while dead reckoning with an IMU (6dof gyro+accelerometer). What are the differences/advantages/disadvantages of the following filters:

  • Kalman
  • Complementary
  • moving average
  • Mahony

I applied kalman and complementary filters to an IMU and both of them gives time lag to actions with respect to filter parameters. Also kalman filter works slower than moving average and complementary. How can I choose right filter and filter parameters?


Some type of Kalman filter is almost always the best solution to an estimation problem involving a dynamic system given your computer can handle the matrix inversion. Generally, Kalman filters optimally combine the previous estimate, the confidence of the previous estimate, sensor measurements, and sensor confidence together for the new state estimate.

The advantage of the complementary filter is its simplicity and ease of implementation. The complementary filter's disadvantage is its accuracy; it will never behave better than a well tuned Kalman filter.

I am unfamiliar with the other filters you've listed :/

For your system, I would recommend using an extended Kalman filter or an unscented Kalman filter, both are capable of handling the nonlinear equations that you'll need for dead reckoning.

Choosing filter parameters will vary depending on the filter you end up using. I would recommend looking at Optimal State Estimation by Dan Simon which goes over linear and nonlinear Kalman filters as well as choosing filter parameters.

side note: Dead reckoning is an unobservable system. Your state estimate will slowly drift from truth no matter how accurate your sensors are. This may not be a problem if you're just trying to track motion over a couple of seconds. However, if you're trying to navigate a map using only the two sensors you've listed, you're bound to run into trouble.

  • $\begingroup$ Can you suggest resources for extended kalman algorithm. I need a proven algorithm. $\endgroup$ – acs Jul 8 '15 at 18:06
  • $\begingroup$ I highly recommend going through Dan Simon's Optimal State Estimation book. If you're just looking for the equations of the ekf, they're on page 401 followed by an example. The example goes through the whole process designing a state estimator for a system of nonlinear equations. It should be just what you need. $\endgroup$ – holmeski Jul 8 '15 at 18:34

I have had much better success with Kalman filters than any other, that is where it can be run fast enough, as the matrix transformations are very resource intensive.

I use the MPU 6000 (it is integrated into the Pixhawk my favourite FC) in conjunction with the Extended Kalman Filter, due to the linear nature of the systems I work with (quadcopters/planes).

But as holmeski pointed out, just using dead reckoning will not work out so well for any length of time, you will need some more accurate positioning.

  • $\begingroup$ I'm using MPU6050 (6DOF IMU). sensitivity of accelerotmer: +/- 2g for and sensitivity of gyro: +/- 250 deg/sec. I will track hand tool movements like pen or brush $\endgroup$ – acs Jul 8 '15 at 13:47
  • $\begingroup$ did you use fast kalman filter? $\endgroup$ – acs Jul 8 '15 at 14:05

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.