Often in textbooks and on here on HN Kalman Filters are praised, but folks from the industry often ridicule Kalman Filters.
All People I have interacted with have never used/seen Kalman Filters outside Academica. Do anyone here have industry experience where Kalman Filters is actually used in prod?
Two of (arguably the best) open source RC aircraft flight controllers (ArduPilot and PX4) are using extended Kalman filters in their state estimators (essentially sensor fusion that provides attitude/position estimate):
Yes. Worked in a robotics startup and a tier 1 automotive supplier. In both, variants of the Kalman filter were used for some tasks.
They are a simple tool, and simple often works. You just need to know the limitions and know which variant (if any) is best applicable to the problem at hand.
Done plenty of automotive/robotics by this point and yep. A KF is usually my first (and often only) step between straight up not filtering and finding a controls expert to analyze the system properly. It's cheap, easy, and works well enough that I don't have to think too hard about it.
I think this is really wild and interesting. In my experience, they (more like specializations of the Kalman filter) are used almost universally in radar tracking. I'm curious where outside of academia you see ridicule for Kalman Filters?
KFs, and more generally state observer systems, are widely used in the field of control systems.
I know someone with a PhD in control systems, works for an eVTOL startup, and their title is something like "estimation expert" or "estimation specialist". That is, 100% of their job is designing relatively complex KF-like algorithms that are used to estimate the aircraft state (position, pose, velocity, wind conditions, etc) in real time based on a bunch of sensors.
I built a variant to very successfully estimate state of charge for a large battery pack in a production hybrid-electric vehicle.
Often some tweaks from the standard formula are necessary to account for real-world non-linearities, and some creative design work is required to define states in such a way that the Gaussian noise assumption can hold well enough.
We develop navigation instrumentation for directional drilling (oil/gas, geothermal, etc.). In these applications you have to estimate the path of the drilling string based on directional measurements and the length of drill pipe you've put into the ground. To take good measurements you have to stop so that rotation and vibration don't corrupt your measurement.
We use a type of Kalman Filter to estimate direction and instantaneous dynamics of the drill string, this way the drilling operation no longer needs to stop to get a directional measurement.
Yes. I was director of Research and Innovation in a company that produces equipment for people to do VTS and VTMIS, which is the maritime equivalent of Air Traffic Control.
We track targets (mostly ships, mostly maritime, but not always) and we use Kalman Filters (and variants) extensively.
Contrary to your experience, there was a time when we were ridiculed for not using Kalman Filters, but in the limited niche we inhabited then, our internally developed algorithms out-performed Kalman.
But mostly, these days, yes, we use Kalman Filters of various types.
>> our internally developed algorithms out-performed Kalman
Could you tell me more about this? What other algorithms are used for position tracking and motion estimation. I have seen various ML models... RNN/DNN used. I'm guessing with VTMIS you are doing time-series predictions?
KF has been standard stuff in aerospace guidance navigation and control for quite some time. Stock markets are probably too nonlinear to use linear control theory on.
Positional tracking on most VR headsets has the fast, low latency updates from the drifty IMU and slower ground truth updates from vision fused together with a Kalman filter. Consumer drones, military drones, and weapons guidance systems use it extensively too.
Lots of typical "industry applications" given for Kalman Filters involve moving objects, like air planes, rockets, and so on.
But all these objects generally rotate in some way, rotation is non-linear, and Kalman Filters cannot deal well with nonlinearities. Thus Kalman Filters struggle with rotation, and I haven't really found any good resources that handle this.
Do all these applications just skip over the fact that real-world objects can have a rotation/spin, or do they all use more sophisticated filters as suggested in e.g. [1]?
The "Integrating Generic Sensor Fusion Algorithms with
Sound State Representations through Encapsulation of Manifolds" paper linked from your [1] is indeed the current state of the art. It shows how to use the EKF or UKF for rotation.
The naive Kalman filter is only suited for linear problems; extended and unscented Kalman filters (EKF/UKF) are necessary for anything non-linear (including rotation). In any case, they build on the basic KF, so you have to understand that first.
That paper [1] is from 2010. What did "industry" use before that for pysically moving objects?
If this is the current state of the art, are there generally-available/open-source libraries existing that implement this and practitioners use for this?
I also found an approach mentioned in [2] that is to just treat a single rotation angle as linear, and then wrap it around at 180 degrees in between state updates with additional conditional logic. Is this what people did in practice before? I cannot find substantial info on this.
How did people use KF on physical objects before 2010?
> If this is the current state of the art, are there generally-available/open-source libraries existing that implement this and practitioners use for this?
The authors of [1] do discuss and link to their own library in section 5.
However, in my experience, most people implement the math themselves rather than use any libraries (beyond e.g. Eigen).
> How did people use KF on physical objects before 2010?
The Multiplicative EKF (MEKF) was used since 1969 according to [3]. It's a hacky approximation of [1]. [1] is really just a generalization/unification of lots of application-specific hacks that were used before, including the MEKF.
I'm asking what people actually use in production. It is part of a thread that started with
> All People I have interacted with have never seen Kalman Filters outside Academica. Do anyone here have industry experience where Kalman Filters is actually used in prod?
Looking at prior academic work in an academic paper won't help answer this question.
This is where the extended Kalman filter comes in (basically just a KF with linearization). I imagine you could also do a KF to include manifold constraints (e.g., rotations) more explicitly but I have never had the need.
If you model your rotation as a quaternion, there is a way to linearize the update process of the quaternion and use a KF. This can work very well and is what most quadrotors I’ve worked with do. However, care is needed to ensure the result gives a valid updated rotation and that you implement the disgustingly messy equations correctly.
All People I have interacted with have never used/seen Kalman Filters outside Academica. Do anyone here have industry experience where Kalman Filters is actually used in prod?