Interestingly, terminal guidance has been the simple part for decades. Back when people thought "hitting a bullet with a bullet" type of kinetic intercept was hard, what they did not realize is that the software is relatively straightforward and even primitive computers are fast enough to do hypersonic intercept. Newtonian physics is slow compared to a computer.
The hard part, outside of having an adequate sensor to begin with (a problem of many early designs), is designing a high-performance steerable rocket motor that can consistently deliver the precision that the software is capable of demanding under the performance envelopes required. This turns out to be an exotic materials science and precision fabrication problem so comfortably in the domain of conventional hardware engineering. As cool as it is to design a terminal guidance system, that is the easy part of building a practical anti-aircraft system.
Also, most vaguely modern systems do not track objects per se, they extract the features of the designated target with broad spectrum imaging and only chase that. In other words, the missile does not chase a plane, it chases the plane. This means that the Hollywood trope of being hit by your own missile generally won't work in reality.
The sensor in the original Sidewinder is fascinating - a spinning disk with a reflective strip on it. When the reflector is pointing towards the target, the reflection off the strip into one of a ring of sensors tells you in which direction to steer. This meant that the missile couldn't see straight ahead, only at an angle that would bounce from the disk into the sensors, hence it would sort of edge sideways into the target, and that's why it's called the sidewinder.
Take the guidance system from the classic Strela MANPAD[1], proportional navigation[2].
"Simple electronics detect the directional error the seeker has with its target (an IR source), and apply a moment to this gimballed mirror to keep it pointed at the target. Since the mirror is in fact a gyroscope it will keep pointing at the same direction if no external force or moment is applied, regardless of the movements of the missile. The voltage applied to the mirror while keeping it locked on the target is then also used (although amplified) to deflect the control surfaces that steer the missile, thereby making missile velocity vector rotation proportional to line of sight rotation."
Essentially saying that it tracks what is within it's line of sight. This is why later models were equipped with friend or foe identification hardware. Also why more modern systems try to do more than just chase the IR signature.
If anyone is interested in learning these types of probabilistic perception algorithms, especially pertaining to robotics, Prof. Edwin Olson's Mobile Robotics video lectures at the University of Michigan are excellent. They are located here: http://april.eecs.umich.edu/courses/eecs568_f12/wiki/index.p... . He even jokes near the end of the course that you could build a cruise missile with the math he teaches in the course, and kindly asks the students not to do so (I believe it was the Sensor Zoo video).
The variance of the combined Gaussian will not always shrink with more data. Consider the case that you have one sensor that predicts 100m at a high accuracy and then you get another sensor predicting 10,000m with the same accuracy. At first you thought you had a very good idea of the location then with more information you realize that you actually have no idea and you get a Gaussian with mean of 5,050m and a very high variance.
The post left out the some important parts of the Kalman Filter, where you adjust your certainty in how well you're able to predict where the target will go and how accurate your sensors are in response to how they perform over time. So even if you're Gaussians are 10 klicks apart the variance for this prediction still shrinks, but your future Gaussians would be much wider. I think what was described in the post was more an alpha-beta filter.
Adjusting the measurement covariance to fit the residuals is not part of the Kalman filter algorithm. One could make the argument that any real-world implementation needs to address this problem, but as far as the algorithm is concerned, the measurement covariance is externally computed.
The sensors cannot both have the high accuracy because one or both of them are clearly wrong in your scenario, meaning the estimated accuracy of one or both sensors is clearly wrong.
If your estimate of the accuracy of the sensor is wrong, you are giving a very high accuracy weight to the garbage going in and you will get garbage out.
One of the really interesting things about a Kalman filter is that it improves its estimate of the accuracy of the input sensors over time. In your scenario, over time the Kalman filter would "learn" which sensor is lying and adjust its accuracy estimate down.
> over time the Kalman filter would "learn" which sensor is lying and adjust its accuracy estimate down
No, it won't. The plain old Kalman filter believes precisely what you tell it. In this scenario, the Kalman filter will oscillate about the mean of the two measurements, with the amplitude of that oscillation depending on the relative sizes of the measurement variance and estimate variance. A smaller process noise will cause the estimate covariance to shrink faster, which will dampen the oscillation faster. The oscillation will eventually settle on some minimum amplitude.
An important point here that many don't realize is that the covariance of the Kalman filter is completely independent of the residual. Go ahead, look at the equations - covariance is a function of the measurement model, the prior covariance, and the measurement covariance. The actual measurement doesn't matter.
No, it does always shrink. It's counter-intuitive, but that's what the formula gives. What you're pointing out is that some situations aren't really that well modeled by a Gaussian and you probably want something with a thicker tail.
> It’s easy to write a program that will do this automatically without any human input. What if the plane is changing altitude? The problem becomes slightly harder, but not too hard. It’s just a matter of figuring out how far to plan in advance.
This reminds me to some extent of Basic Mechanisms in Fire Control Computers [1]. The whole thing is worth watching, but the link will take you to the point that I was reminded of.
It is far easier to buy a FN-6 from China or seize a Soviet/Russian variant from a failing state's coffers, yielding a better chance to take down an airplane than a DIY model. I've been following events in Syria since protests started to get shot up, to the security void created under aerial attacks allowing foreign fighters to swarm in.
For the aspiring MANPAD or Anti-Air battalion a better ROI would probably be what I mentioned above. Evidenced by this is a group having four MANPAD variants in hand enabling me to make a lovely group panorama of the set[1]. For some analysis on the weapons shown in the image you can read a write-up by N.R. Jenzen-Jones including the group shot here[2] or here[3].
This is a lovely exercise for the mind but obviously like most weaponized missile/rocket systems it is best to leave it for the pros. :)
The hard part, outside of having an adequate sensor to begin with (a problem of many early designs), is designing a high-performance steerable rocket motor that can consistently deliver the precision that the software is capable of demanding under the performance envelopes required. This turns out to be an exotic materials science and precision fabrication problem so comfortably in the domain of conventional hardware engineering. As cool as it is to design a terminal guidance system, that is the easy part of building a practical anti-aircraft system.
Also, most vaguely modern systems do not track objects per se, they extract the features of the designated target with broad spectrum imaging and only chase that. In other words, the missile does not chase a plane, it chases the plane. This means that the Hollywood trope of being hit by your own missile generally won't work in reality.