5 ms·
What a truly inspiring human being. I can only dream of aspiring to her levels of contribution. Check out some of the Apollo 11 code for the Lunar Module's (LM
by Arjuna 12y ago
What a truly inspiring human being. I can only dream of aspiring to her levels of contribution.
Check out some of the Apollo 11 code for the Lunar Module's (LM) Apollo Guidance Computer (AGC). It's just awesome browsing through it, reading the comments, and thinking about the zeitgeist of being on a team that was working on something of that world-altering magnitude.
Code Library:
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099 https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
KALMAN_FILTER.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/KALMAN_FILTER.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
LAMBERT_AIMPOINT_GUIDANCE.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LAMBERT_AIMPOINT_GUIDANCE.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
LANDING_ANALOG_DISPLAYS.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LANDING_ANALOG_DISPLAYS.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
LUNAR_LANDING_GUIDANCE_EQUATIONS.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
- - -
Incredible quote:
"There was no second chance. We all knew that. We took our work very seriously, but we were young, many of us in our 20s. Coming up with new ideas was an adventure. Dedication and commitment were a given. Mutual respect was across the board. Because software was a mystery, a black box, upper management gave us total freedom and trust. We had to find a way and we did. Looking back, we were the luckiest people in the world; there was no choice but to be pioneers; no time to be beginners." - Margaret Hamilton
- - -
Edit: OK, this is interesting. Note the filename. The filename and comments suggest that it was for driving keyboard and information display...
PINBALL_GAME_BUTTONS_AND_LIGHTS.agc
https://code.google.com/p/virtualagc/source/browse/trunk/Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc https://code.google.com/p/virtualagc/source/browse/trunk/Lum...
- fjarlq 12y agoA few of the code modules that mention Hamilton: Artemis072/ASSEMBLY_AND_OPERATION_INFORMATION.agc https://code.google.com/p/virtualagc/source/browse/trunk/Artemis072/ASSEMBLY_AND_OPERATION_INFORMATION.agc https://code.google.com/p/virtualagc/source/browse/trunk/Art... Artemis072/SERVICER207.agc https://code.google.com/p/virtualagc/source/browse/trunk/Artemis072/SERVICER207.agc https://code.google.com/p/virtualagc/source/browse/trunk/Art... Comanche055/CONTRACT_AND_APPROVALS.agc https://code.google.com/p/virtualagc/source/browse/trunk/Comanche055/CONTRACT_AND_APPROVALS.agc https://code.google.com/p/virtualagc/source/browse/trunk/Com... --- An overview of the code: http://www.ibiblio.org/apollo/Colossus.html http://www.ibiblio.org/apollo/Colossus.html
- makmanalp 12y agoI'm having a hard time believing that's a working kalman filter implementation in assembly in 70 odd lines!
- Arjuna 12y agoCheck 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/1470.jpg http://www.ibiblio.org/apollo/ScansForConversion/Luminary099... KALMAN FILTER USER'S PAGE NO. 2 http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/1471.jpg http://www.ibiblio.org/apollo/ScansForConversion/Luminary099...
- d0mdo0ss 12y agoAccording 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 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!
- serf 12y agoafter having worked on a kalman implementation in processing, I had the same gut reaction.
- mturmon 12y agoThe 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-HistoricalPerspectives.pdf 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.
- mkramlich 12y agoindeed, its the kind of thing where you hope to see such epic code comments like this: // and the following section is where we attempt to land on the Moon