Comment by makmanalp

12 years ago

I'm having a hard time believing that's a working kalman filter implementation in assembly in 70 odd lines!

Check this out... here are the two source code pages (digitized from original printouts) for the Kalman filter, dated July 14, 1969!

KALMAN FILTER USER'S PAGE NO. 1

http://www.ibiblio.org/apollo/ScansForConversion/Luminary099...

KALMAN FILTER USER'S PAGE NO. 2

http://www.ibiblio.org/apollo/ScansForConversion/Luminary099...

  • According to wikipedia "The onboard guidance software used a Kalman filter to merge new data with past position measurements to produce an optimal position estimate for the spacecraft." https://en.wikipedia.org/wiki/Apollo_PGNCS

    In turn the main source of navigation information came from mission control using least squares. A source on that would be nice too!

after having worked on a kalman implementation in processing, I had the same gut reaction.

  • The scalar case is not so bad; typically the filter is taught using the vector-input/vector-state case, which is more complex.

    I can't make heads or tails of the assembler listing either. The specific thing I would look for in the assembler code is the division operation which is required to find the Kalman gain. I don't see it.

    But, the anecdote about the Kalman filters use in this setting is well-known. (E.g., search for "Apollo" in http://ieeecss.org/CSM/library/2010/june10/11-HistoricalPers...)

    The amazing thing from my point of view is not the implementation. It is rather that the theory, which was quite novel at the time, was only understood and published in 1960/61. To have it used in a flight system, and indeed a manned flight system, only 8 years later is really incredible.