Nice summary. I think of the concept at a slightly higher level of abstraction:
It's just Bayesian inference to update the posterior. A theoretical model gives an estimate of what the state of the system should be (call that the "prior"). A sensor measurement gives an independent estimate of the state (call that the "likelihood"). Composing (multiplying) the two gives the posterior. Further, in this formulation it doesn't really matter what you call the prior or the posterior. You can easily combine estimates from many different sources/sensors.
Kalman filters are just the special case where the likelihood and prior are both Gaussian -- the distributions can be specified with a couple of numbers, and there is a simple closed-form expression for composing them. More generally, one can use all the tools available for Bayesian inference.
I remember struggling with understanding Kalman filters (and Particle filters). I found  to be an amazingly clear explanation:
This is the most intuitive introduction to Kalman filtering that I've ever seen. Even just reading that part was the most enlightening 2-minutes of my entire month. Kudos to the author!
This is a very nice breakdown of Kalman Filtering. One slight correction - Kalman Filtering is one approach to solving the SLAM problem, but SLAM doesn’t require a KF. A particle filter, for example, can be used to solve the SLAM problem.
For anyone interested in further resources to better understand the intuition behind KFs, I’ve found this resource incredibly valuable (although a little pricey): https://www.amazon.com/Kalman-Filter-Beginners-MATLAB-Exampl...
We also do the opposite, and we use our IMU to better estimate the position of those features/clues. This is exactly what SLAM does, at its core it is just a Kalman filter with the twist that each time it finds a reliable visual clue it treats it as a sensor and makes it part of its state, a thing that allow us to tell our position much better and build a map.
Some nitpicking here: There are some SLAM systems and flavors that use a Kalman filter as the main estimator under the hood but most are either hybrids or separate the tracking and map optimization (using batch / bundle adjustment methods).
Digging a little deeper here I think it's important to mention that a Kalman filter is just a recursive least squares estimator, and is in fact equivalent to an Information Filter (which, IMO, is much easier to understand if you're already familiar with linear regression / LS systems).
In fact a Kalman filter is just a fancy mathematical reformulation of an Information Filter that allows you to save quite a bit of computation time in case each observations is low-dimensional compared to your state.
I used to work at a company that did Dynamic Positioning systems for vessels and oil rigs and I worked on the periphery software systems running with a Kalman-based algorithm there. Didn't work on the Kalman stuff then, but I do think its cool what they can achieve and have always been interested. I will add this to my reading TODO. Thank you.
This is a positively fantastic explanation. One of the best I've seen despite being so short.
Minor nitpick: It might be a bit more clear if the terms "F", "s", "v" were explicitly defined, as well as a sentence explaining the matrix M inversion. It's really great, but when I read "our prediction formula F could be as simple as s = v*t_dot" I immediately think "F? was F defined earlier? Did I miss it? Also what is s?".
[overall, really great explanation, bookmarked]
I wish I had this summary quite a few years ago. I ended up buying aeronautical software textbooks and trying to glean the information from those to figure out how to integrate multiple IMU inputs.
I learned that real world IMU use in navigation is pretty ugly and has to be supplemented due to constant errors. This can be particularly difficult when flying. In my case I used other sensors, such as a GPS. But a strictly IMU-only approach to lengthy navigation is, AFAIK, impossible.
Either way, good write up.
Interesting - I don't have the strongest math background so I'm usually somewhat intimidated by topics like this, but this makes it seem like a fairly simple weighted average based on squared error values like in standard deviation? I assume this would also only work on a normal distribution too?
Makes it seem a lot more approachable than many people have made it sound to me, but I may be horribly misunderstanding still.
Another intuitive intro, previously: item?id=12648035
I love this. I've idly tried to understand the Kalman filter forever (ever=10yr+), and always encountered explanations that threw you straight at the linear algebra. (yeah, even "quick" or "simple" explanation).
This explanation starting from the conceptual is great, and finally provides the needed foundation for me to understand the rest.
 huff not that I couldn't understand the linear algebra, just that I, uh, didn't have time for that... >_>
Here is another "simple" explanation:
It's definitely WAAAY oversimplified, but it gives the first idea:
The "filter" just cleverly averages the noisy real data at time T with the Kalman estimate from time (T-1).
Great explanation! If you want a very detailed deep dive into Kalman Filters, I found this sequence of videos really helpful: https://www.youtube.com/watch?v=CaCcOwJPytQ
It's 55 short videos, each one going over a specific topic or example.
I posted this a few days ago, but I think it's the best intro to Kalman filters I've ever seen: https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Pyt...
The inventor of Kalman Filter: https://en.wikipedia.org/wiki/Rudolf_E._K%C3%A1lm%C3%A1n
Born: Rudolf Emil Kálmán May 19, 1930 Budapest, Hungary
Died: July 2, 2016 (aged 86) Gainesville, Florida
The page breaks back button.
How do you know the variance of your sensors? Do you have to experiment in a controlled environment?
also useful for incorporating noisy GPS sensor readings! I tried to do this in an undergrad autonomous vehicle but failed at the time :(
Kalman experienced people, just wondering, what did you use the filter for? And, what are you guys working on nowadays?
More gain 'k' explanation. 'K' determines how much you weight you give sensor A and sensor B.
A gain of 1.0 means B is weighted 100% and A is 0%. Gain of 0.5 means each gets 50/50 weight.
Look at the maths and notice how when the gain is 1.0, the mean just becomes the mean of B.
This seems to use measurement and average interchangeably? a measurement is an instantaneous "average"?
if you figure out a decayed moving average as an "average"... why not just use that smoothed value directly? what do you even need variance for?
Hmm. Could probably hammer this into a form applicable for a raster, where the previous 'instance' is a linear interpolation via Roberts cross or some such.
> those readings represent gaussians and combining them means multiplying them
I don't think he means multiplying surely? That part is unclear.
Very cool way of introducing kalman filters
actually, iirc, there is a very cool document by ramsey (i guess) which attempts to provides a simple and intuitive derivation of the Kalman filter without going too deep into mathematics...
much like a baby bird learns to fly