L'Apollo Guidance Computer

RETOUR SUR L'ORDINATEUR
QUI A AMENÉ L'HUMANITÉ SUR LA LUNE

AGC

L'équipage

Romain Berthon   Olivier Poncet
🚀 Romain Berthon   🌖 Olivier Poncet

 
@RomainTrm   @ponceto91
@romaintrm   @ponceto91
    @ponceto91
    @ponceto91

Le contexte

Saturn V

25 mai 1961

Discours de J.F Kennedy devant le congrès Américain

John F. Kennedy lors de son speech devant le Congrès Américain

« [...] I believe that this nation should commit itself to achieving the goal, before this decade is out, of landing a man on the Moon and returning him safely to the Earth. [...] »

4 octobre 1957

Spoutnik, premier satellite artifitiel en orbite

Satellite Spoutnik

29 juillet 1958

Création de la NASA.

Logo Nasa worm

7 octobre 1959

Première photographie de la face cachée de la Lune par la sonde Luna 3

Première photo de la face cachée de la Lune prise par la sonde Luna 3

12 avril 1961

Youri Gagarine est le premier homme dans l'espace

Portrait de Youri Gagarine

5 mai 1961

Alan Shepard est le premier américain dans l'espace

Portrait d'Alan Shepard

20 février 1962

John Glenn est le premier américain en orbite

Portrait de John Glenn

Course à la Lune

Un objectif ambitieux pour espérer battre les Soviétiques

Logo du programme Apollo

Un défi technologique

Concervoir un système embarqué en passant de ça ...

Apollo Guidance Computer Engineering

Un défi technologique

... à ça : l'Apollo Guidance Computer

Apollo Guidance Computer

Un ordinateur pour les guider tous

Charles Stark Draper

Le père de la navigation inertielle

Charles Stark Draper

C'est quoi l'AGC ?

Image concept d'époque montrant le module de commande en orbite lunaire, moteur allumé

Déroulé d'une mission

Diagram explicatif du déroulé d'une mission Apollo

Diagram explicatif du déroulé d'une mission Apollo - phase de décollage mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase d'injection translunaire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase de corrections de trajectoire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase d'insertion en orbite lunaire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase de descente vers la surface lunaire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase de décollage et de rdv en orbite lunaire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase d'injection transterrestre (transearth injection) mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase de corrections de trajectoire mise en avant

Diagram explicatif du déroulé d'une mission Apollo - phase de rentrée atmosphérique et d'amerrissage mise en avant

Déroulé d'une mission

Photographie du système Terre-Lune prise par la sonde Juno

La navigation : c'est quoi le haut ?

8 ball

La navigation : où suis-je ?

Illustration explicative du « Trunnion angle »

La navigation : où vais-je ?

Schéma explicatif de calcul de trajectoires balistique à partir de plans dans un cone

Le Digital AutoPilot (DAP)

CSM d'Apollo 15 en orbite lunnaire

Le Digital AutoPilot (DAP)

Schéma présentant le résultat d'une force si elle est exercée ou non au travers du centre de la masse de l'objet

Le Digital AutoPilot (DAP)

Différentes configurations du vaisseau au cours d'une mission Apollo

Affichage de données à l'équipage

Tableau de bord du module de commande

La liaison avec le sol et la télémétrie

Photographie du centre de contrôle

Le hardware

Premier étage de la Saturn V d'Apollo 11 dans le Vehicule Assembly Building

Caractéristiques de l'AGC

AGC

  • Fréquence principale de 2.048 MHz
  • Processeur en complément à 1
  • Largeur des registres de 16-bits
  • Consommation de 55 Watts
  • Dimensions de 61 cm × 32 cm × 17 cm
  • Poids total de 32 Kg

La (r)évolution technologique

Quelle puissance ?

nothing-greater-than-agc nokia-3310-greater-than-agc numworks-greater-than-agc

Architecture de l'AGC

Une architecture simple et efficace

block-diagram-highlighted

Le processeur

Un ordinateur construit avec des portes « NOR »

nor

agc-nor2a

nor-gate

1st-transistor

Le processeur

Stocker l'état d'un bit : le latch

latch

Le processeur

Stocker un bit en dehors de la RAM : les registres

register-diagram

Le processeur

Faire des calculs : l'ALU

alu-schematic-labeled-w700

Le processeur

L'unité arithmétique et logique

module-a8.jpg

La mémoire vive

« The core memory »

core-memory

La mémoire vive

« The erasable memory module »

  • 2048 mots de 15 bits + 1 bit de parité
  • soit 4Ko de mémoire de travail

erasable-module

La mémoire vive

« The erasable memory module »

memory-internal-labeled

La mémoire morte

« The core rope memory »

  • 36864 mots de 15 bits + 1 bit de parité
  • soit 72Ko de mémoire de programme

core-rope-memory-sample

La mémoire morte

« The core rope memory »

core-rope-memory

La mémoire morte

« The core rope memory »

core-rope-memory

La mémoire morte

« The core rope memory »

core-rope-memory

La mémoire morte

« The core rope memory »

Le système d'entrées/sorties

Communiquer avec le monde extérieur

agc-io-system

Le système

Margaret Hamilton à côté de l'ensemble du code source des missions Apollo

Le multiprocessing

Cooperative multiprogramming

&

Preemptive multiprogramming

Exécuteur : le "light OS" de l'AGC

Des espaces de mémoire vive fixes et dédiés :

  • Core Set table
  • Vector Accumulator areas (VAC)
  • Wait list tables

Un ensemble de routines pour les manager.

Exécuteur : Le temps et les interruptions I/O synchrones

Interruptions avec "context switch"

  • TIMER3 (scaled at 10ms) : WAITLIST task scheduler
  • TIMER4 (scaled at 10ms) : periodic checks (RCS, IMU, DAP, ...)
  • TIMER5 (scaled at 100ms) : DAP
  • TIMER6 (scaled at 0.625ms) : timer for RCS jets

Aparté : Les compteurs

Les interactions I/O ne sont pas toutes synchrones

Usage du "Cycle stealing" pour éviter le context switch

Schéma explicatif des différents axes de mesure de l'IMU

Exécuteur : Gestion des erreurs

Trois modes :

  • Program abort: P00DOO
  • Program abort: software restarts
  • Rebooting: AGC "fresh start"

Software restarts :

  • Logique : Group table & Restart table (fixed memory)
  • Etat : Phase table (erasable memory)

Interpréteur : la "VM" de l'AGC

Une nouvelle architecture CPU "logicielle"

Apporte des nouvelles capacités :

  • doubles & triple précisions
  • vecteurs
  • matrices
  • arithmétique
  • trigonométrie
  • ...

Interpretive : le langage de haut niveau

Extrait du code source de l'AGC utilisant le langage de haut niveau de l'Interpreter

Interpretive : Langage de haut niveau

\[x = {-b + \sqrt{b^2-4ac} \over 2a}\]

Arbre d'interpretation de l'expression: x = (-b + sqrt(b² - 4ac)) / 2a

Le software

L'équipage d'Apollo 9 à l'entrainement dans le simulateur du module lunaire.

L'interface utilisateur

Le DSKY

DSKY · Display and Keyboard

DSKY

DSKY interface

Le panneau de contrôle principal

Où le DSKY se niche

main control panel

main control panel

Interagir avec la machine

Programmes, verbes et noms

DSKY

SHORT SYNTAX

VERB digit digit ENTR

 

FULL SYNTAX

VERB digit digit NOUN digit digit ENTR

DSKY programs

DSKY cheat sheet

EX: LAMP TEST

VERB 3 5 ENTR

EX: MONITOR CURRENT TIME

VERB 1 6 NOUN 3 6 ENTR

Les programmes

DSKY

Service
P00LGC Idling
P06PGNCS Power
P07Systems Test (Non-flight)
Ascent
P12Powered Ascent Guidance
Coast
P20Rendezvous Navigation
P21Ground Track Determination
P22RR Lunar Surface Navigation
P25Preferred Tracking Attitude
P27LGC Update
Pre-thrusting
P30External delta-V
P32Co-elliptic Sequence Initiation (CSI)
P33Constant Delta Altitude (CDH)
P34Transfer Phase Initiation (TPI)
P35Transfer Phase Midcourse (TPM)
Thrust
P40DPS Thrusting
P41RCS Thrusting
P42APS Thrusting
P47Thrust Monitor
Alignments
P51IMU Orientation Determination
P52IMU Realign
P57Lunar Surface Alignment
Descent & Landing
P63Landing Maneuvre Braking Phase
P64Landing Maneuvre Approach Phase
P66Rate of Descent Landing (ROD)
P68Landing Confirmation
Aborts & Backups
P70DPS Abort
P71APS Abort
P72CSM Co-elliptic Sequence Initiation (CSI) Targeting
P73CSM Constant Delta Altitude (CDH) Targeting
P74CSM Transfer Phase Initiation (TPI) Targeting
P75CSM Transfer Phase Midcourse (TPM) Targeting
P76Target delta V.

PROGRAM SELECT

VERB 3 7 ENTR digit digit ENTR

EX: ENTER IDLE MODE

VERB 3 7 ENTR 0 0 ENTR

EX: LANDING CONFIRMATION

VERB 3 7 ENTR 6 8 ENTR

Surcharge de travail

master alarm

master alarm

Les incidents notables

Le module lunaire (étage d'ascension uniquement) d'Apollo 11 photographié depuis le module de commande

Apollo 11 : "Twelve O two"

102:38:21 - Armstrong:     "Sure do. Houston, you're looking at our Delta-H."
102:38:26 - Armstrong:     "Program Alarm."
102:38:28 - Duke (CAPCOM): "It's looking good to us. Over."
102:38:30 - Armstrong:     "It's a 1202."
102:38:32 - Aldrin:        "1202."
102:38:42 - Armstrong:     "Give us a reading on the 1202 Program Alarm."
102:38:53 - Duke (CAPCOM): "Roger. We got you; We're Go on that alarm."
                        

Apollo 11 : "Twelve O two"

Surcharge de travail & Executive Overflow

Photographie de la Terre depuis l'orbite Lunaire, prise lors de Apollo 11

Apollo 14 : "We need to look at a bit here."

105:10:00 - Haise (CAPCOM): "Okay, Antares; Houston. We'd like you to back out of that 52. 
                                We need to look at a bit here."
105:10:10 - Mitchell:       "Roger. Do you have some PADs ready for me this pass, Fred?"
105:10:18 - Haise (CAPCOM): "Okay. They're coming up in a minute, Ed. 
                                You ready to copy a couple of steps here?"
105:10:28 - Mitchell:       "Yes. Go ahead."
105:10:29 - Haise (CAPCOM): "Okay. We'd like a Verb 11 Noun 10 Enter, 30 Enter."
105:10:40 - Mitchell:       "You got it."
105:11:00 - Mitchell:       "You read the DSKY, Houston?"
105:11:05 - Haise (CAPCOM): "Antares, Houston. What we're looking at there is the abort bit, 
                                and it looks set."
                        

Apollo 14 : "We need to look at a bit here."

En cas de contact du bouton :

  • Le bouton est-il actionnable ?
  • Gère-t-on un retour en orbite ?
Boutons d'arrêt d'urgence sur le panneau de contrôle du module lunaire

Apollo 14 : "We need to look at a bit here."

Le hack : MENTIR à l'AGC

  • Démarrer le 1er programme responsable de l'alunissage
  • Faire croire à un retour en orbite (via le DSKY)
  • Attendre le démarrage du moteur
  • Modifier le bit (via le DSKY)
  • Ré-inscrire le vrai Major Mode (via le DSKY)

L'héritage du programme Apollo

Emprunte de la botte de Buzz Aldrin prise à la surface de la lune

A quoi cela nous sert aujourd'hui ?

Les retombées ont été immenses dans de nombreux domaines :

Apollo Program

  • La micro-électronique
  • Les télécommunications
  • L'informatique
  • L'aéronautique
  • L'aérospatiale
  • L'automobile
  • ...

Découvertes et évolutions
technologiques

Apollo Program

  • Les circuits intégrés
  • L'informatique embarquée
  • La programmation temps réel

**MAIS AUSSI**

  • La nourriture lyophilisée
  • Les couches pour bébés
  • ...

L'ingéniérie matérielle

Fairchild 4500a

  • Procédés de fabrication des circuits électroniques
  • Durcissement aux radiations
  • Augmentation de l'échelle d'intégration
  • ↪ Small Scale Integration
  • ↪ Medium Scale Integration
  • ↪ Large Scale Integration
  • ...

L'ingéniérie logicielle

AGC source code

  • Un domaine bien disctinct des mathématiques
  • Une approche rigoureuse du développement
  • Des approches orientées robustesse et résilience
  • Des abstractions (machine virtuelle, etc ...)
  • Instrumentation du code
  • ...

Conclusion

Un astronaute d'Apollo 16 saluant à côté du drapeau Américain, en arrière plan le module et le rover lunaires

Références

Eagle

The Apollo Guidance Computer

Book Cover "The Apollo Guidance Computer"

SUNBURST and LUMINARY

Book Cover "SUNBURST and LUMINARY"

Curious Marc

www.curiousmarc.com

@curious_marc

CuriousMarc

Ken Shirriff's Blog

www.righto.com

@kenshirriff

KenShirriff

The Virtual AGC Project

www.ibiblio.org/apollo/

@virtualagc/virtualagc

VirtualAGC

Moonjs

svtsim.com/moonjs/agc.html

@siravan/moonjs

Moonjs

The AGC Source Code

Original source code for the command and lunar modules

@chrislgarry/Apollo-11

Source Code

Apollo in realtime

apolloinrealtime.org

Apollo in realtime

Apollo flight journal

https://history.nasa.gov/afj/

Apollo flight journal

Nasa Images

https://www.nasa.gov/mission_pages/apollo/images.html

Harrison H. Schmit à proximité un gros rocher à la surface de la Lune, photographie prise lors de Apollo 17

Les figures de l'ombre

Les figures de l'ombre

🚀 Merci 🌖

qrcode

https://bit.ly/3oI3gpj

Des questions ?

L'équipage d'Apollo 12 lors de sa conférence de presse post-mission