Kalman Filter, its a very versatile technique..ask about its usage..first used in navigation system of Apollo missions..used in Image processing and vision and stuff..and used in Robotics of course.
Here’s why we need a filter to compute Orientation and explains complementary filter, which works okay.
Complementary filters are good and easy to understand..but they are static..i.e. gains are constant and set when the filter is initialized..and we can’t put a model into the system and make it react differently in different situations.
Kalman filter is dynamic..it means the gains keep changing..gains mean the amount of trust, the filter puts in angle from Gyro or angle from accelerometer. Gains keeps changing according to the conditions..also there is serious Error Modelling required for Kalman to work great..and Kalman filter comes in different flavors..
Kalman Filter- which is explained in the links below
EKF- Extended Kalman Filter..which is extension of Kalman Filter for Non Linear systems.
and few others I haven’t read about.
I better not explain, whats already been explained. But here are two sources from where I understood it from..I could totally give some insights later on..
here’s a little snip
and here’s my implementation of the same on ARM Core m3 based STM32F103x..
and the statement highlighted below..helps reduce Yaw drift..quite a bit.
I think its time to get myself started on with Quaternions and stuff..grrrr.