Parte 2Parte 3Algumas das fotos foram tiradas do site
Hack The Moon .
Este artigo foi apresentado na 27ª Conferência Anual de Navegação e Navegação da Sociedade Americana de Astronáutica (AAS) em Breckenridge, Colorado, em 6 de fevereiro de 2004. A versão que você está oferecendo contém ilustrações adicionais, comentários e correções menores.
RESUMO: A missão Apollo 11 pousou com sucesso na Lua, apesar de dois problemas no computador que afetaram o módulo lunar durante o pouso controlado. Um problema não resolvido na interface do radar de proximidade levou cerca de 13% do tempo de ciclo do computador de bordo, resultando em cinco falhas e reinicializações do programa. Um problema menos conhecido foi causado por dados errôneos, que levaram a flutuações no impulso do mecanismo de pouso do módulo lunar, uma vez que o algoritmo de controle de impulso estava no limite de estabilidade. Uma explicação para esses problemas possibilita descrever o sistema operacional do computador de bordo Apollo e o programa de controle de pouso na lua.
Figura que descreve o pouso do Módulo de Excursão Lunar (LEM) na superfície da lua. O piloto do LEM usou o radar de pouso e as medições visuais através da janela do LEM para rastrear e verificar o local de pouso.O LM-1, também conhecido como Apollo 5, foi uma missão não tripulada de 6 horas em órbita terrestre, envolvendo apenas o módulo lunar. Aconteceu em 22 de janeiro de 1968. Para aqueles que desenvolveram o software de computador de bordo LGC (Lunar Module Guidance Computer), este foi o primeiro vôo. Um evento que agora nos parece infinitamente distante.
A missão incluiu duas partidas do motor do sistema de pouso reativo do módulo lunar (Sistema de Propulsão de Descida da LM, DPS). Na segunda ignição, Allan Klumpp, que desenvolveu as equações de controle de pouso na lua [1], com base no trabalho de George Cherry [2], desenvolveu uma maneira de simular um pouso na lua para a órbita da Terra. Consistia em três fases: a fase de frenagem, a fase de “visibilidade” e a fase final de pouso do módulo de pouso. A primeira partida do motor foi necessária para simular a manobra da transição para a órbita de descida antes do pouso. Esta foi a primeira ignição do motor do módulo lunar em vôo, com duração de aproximadamente 38 segundos.
O LGC (computador de bordo do módulo lunar) estava na 9ª fase da missão LM-1, um programa que controlava a primeira ignição do DPS. As missões posteriores foram organizadas de maneira mais flexível e a primeira ignição do DPS foi realizada na etapa P40 do programa. (Para um programa de vôo mais detalhado, consulte
aqui .
Aprox. Transl. ) O LM manobra para a posição de ignição. O computador inicia a contagem regressiva para a ignição. No trigésimo segundo, a tarefa READACCS é executada pela primeira vez. Ela lê as leituras dos acelerômetros no módulo inercial da espaçonave, define a tarefa SERVICER a ser executada, que inicia imediatamente, e se define para executar com um atraso de 2 segundos. Ele é inicializado pelo vetor de estado do programa de integração orbital e as equações de navegação começam a usar dados do acelerômetro para calcular a posição e os vetores de aceleração. O READACCS e o SERVICER iniciam a cada dois segundos durante toda a fase de vôo com o motor ligado. Sete segundos e meio antes da ignição, começou a queima “suja” do RCS (Sistema de Controle de Reação). Todos nos aproximamos do sistema de comunicações que nos conectava ao centro de controle de vôo de Houston.
Ouvimos "O motor está ligado" ... e, depois de alguns segundos ... "O motor está desligado".
Logo percebemos o que havia acontecido. Um pequeno pedaço de código no SERVICER, chamado de "monitor delta-V", decidiu que o mecanismo estava com defeito e enviou um comando para desligá-lo. Mas porque? Para permitir que o motor entre no modo de empuxo, esse código sempre aguardava um certo período de tempo após ligá-lo antes de iniciar o monitoramento. Mas desta vez, no final deste período, o motor ainda não dava tração suficiente para atender aos critérios do monitor de tração do motor.
Os cálculos publicados [3] atribuíram a saída lenta do DPS à força máxima pelo fato de os tanques do módulo lunar não estarem sob pressão total. Mas a investigação realizada pelo autor mostra que o problema era diferente. Para um sistema de combustível DPS, durante a operação normal, uma válvula se abriria através da qual o combustível entra na tubulação quando o motor estiver pronto para operação, alguns segundos antes da ignição. Mas no módulo lunar, a válvula que regulava o fluxo de combustível da tubulação para o motor provavelmente vazou. Para impedir a possível entrada prematura de
combustível hipergólico no motor (repleto de explosão), pouco antes do voo, foi decidido adiar o fluxo de combustível no motor até o momento da ignição [4].
O motor teve um arranque lento, não porque os tanques estavam sob baixa pressão, mas porque o combustível ainda não havia atingido o motor. Seria muito simples configurar um parâmetro para definir quanto tempo o monitor delta-V deve esperar antes de verificar o mecanismo - mas ninguém nos falou sobre isso.
Houston enviou um sinal para desligar o computador de bordo. Os principais objetivos da missão LM-1 foram alcançados com o controle da Terra. Nós, aqueles que programamos o computador do módulo lunar, caímos em desânimo e decepção, que foram amplificados pela reação do público, que não distinguiu entre erro no programa e dados incorretos. E este não foi o último caso em que o parâmetro aparentemente seguro relacionado às características do mecanismo de pouso colocou a missão quase à beira do fracasso.
* * *
O desenvolvimento do sistema de navegação para o navio Apollo foi confiado ao Instituto de Tecnologia de Massachusetts (MIT Instrumentation Laboratory) em Cambridge. Sob a liderança de seu fundador, o “Dock”, o laboratório Charles Stark Draper (Charles Stark Draper), desde 1939, desempenhou um papel importante no desenvolvimento de sistemas de navegação inercial. O contrato conosco para o desenvolvimento do Sistema de Navegação e Controle de Orientação Primária Apollo, PGNCS, pronunciado “pings”, foi o primeiro contrato assinado no âmbito do programa Apollo. Doc se matriculou em vôo nesta missão.
Em 1970, o Laboratório de Instrumentação foi renomeado como Charles Stark Draper Laboratory e, em 1973, tornou-se independente do MIT, embora tivesse conexões com ele. O laboratório de Draper ainda está ativamente envolvido nos programas espaciais tripulados da NASA.
Navegação de encontro. A figura mostra a convergência e o acoplamento do LEM e do módulo de comando na órbita lunar após o levantamento da superfície lunar.O programa que controla o vôo do módulo lunar foi chamado SUNBURST. Na época do vôo LM-1, já estávamos trabalhando no SUNDANCE, o programa de gerenciamento de missões Apollo 9 em órbita ao redor da Terra. A SUNDANCE, por sua vez, transformou-se em LUMINARY, um programa para a Apollo 10 e a missão de aterrar na lua. A missão da Apollo 11 em julho de 1969 foi controlada pela versão 99 do programa LUMINÁRIO. A versão 116 foi controlada pela Apollo 12 em dezembro, etc.
Este artigo segue os nomes usados no programa Apollo. Os nomes dos programas, os nomes das variáveis nos programas, geralmente escrevemos em maiúsculas.
Programas para este computador que chamamos não oficialmente de "cordas" devido ao fato de que eles foram armazenados no computador de bordo em uma ROM semelhante a uma corda de fios de cobre trançados. Para missões lunares, a memória do programa era limitada a 36K palavras, 16 bits cada, mais um bit de paridade e mais 2K palavras de RAM. Levando em consideração a memória do computador Apollo AGC e o módulo de comando (CM) que contém o programa COLOSSUS, será verdade que sentamos na Lua com 152 KB de memória.

Figura 2.
Módulo Apollo Lunar, sistema primário de orientação e navegação, PGNSO AGC é montado em um gabinete de alumínio-magnésio resistente e hermético, anodizado na cor dourada, medindo aproximadamente 15 cm por 1 cm por 2 cm, pesando 70 libras e consumindo cerca de 55 watts. Seu circuito lógico consistia em 5600 elementos OR-NOT de três entradas, embalados em dois em circuitos integrados planos. Eldon Hall (Eldon Hall), o principal desenvolvedor da máquina, tomou uma decisão ousada de usar microchips para o computador, apesar da imaturidade dessa tecnologia no início dos anos 60 [5].
LGC (com todo o equipamento) estava atrás dos astronautas atrás do cockpit do módulo lunar. Antes dos astronautas, havia uma estrutura rígida chamada “base de navegação”, na qual o telescópio apontador e o módulo de medição inercial (IMU) eram montados em coordenadas geométricas fixas. Um teclado e um módulo de exibição (DSKY) foram montados entre os assentos dos astronautas. A Figura 2 mostra os componentes e as interfaces de alto nível do sistema de navegação primário do módulo lunar.
O sistema IMU (unidade de medição inercial), montado em um corpo esférico com um diâmetro de cerca de um pé, é o coração do sistema de navegação. Seu próprio coração, cercado por três suspensões encaixadas uma na outra, é um “membro fixo”, uma pequena plataforma na qual são montados três giroscópios de precisão e três acelerômetros, que devem estar em uma determinada posição para a orientação inercial do navio. Quaisquer desvios na posição do navio são registrados por giroscópios e as suspensões são movidas para corrigir a posição, tudo isso acontece com alta precisão e (quase) não depende da posição do navio, o "membro fixo" fornece uma posição de referência constante. A matriz REFSMMAT expressa o deslocamento do termo fixo em relação ao referencial inercial. Os acelerômetros medem o incremento de velocidade durante a fase de vôo com o motor ligado no sistema de coordenadas do membro fixo.

Figura 3:
Módulo de exibição e teclado do módulo lunar (DSKY)DSKY era a principal interface homem-máquina da LGC. Para uma exibição que tinha três registros de uso geral, cada um dos quais armazenava um número de sinal com cinco casas decimais, três registros de dois dígitos decimais para indicar a fase atual do voo (números de 63 a 68 para pousar na lua), além de um "verbo" e "Substantivo". Verbos e substantivos são necessários para a linguagem primitiva da comunicação entre a equipe e o computador. A fase de vôo e a combinação de verbo / substantivo são, em alguns casos, definidas pelo programa e, em outros casos, são inseridas pela equipe pelo teclado com 19 teclas. O conteúdo dos três registros gerais depende do substantivo e do verbo digitados. O DSKY também contém uma variedade de luzes indicadoras controladas pelo computador e indicadores de atividade do computador que acendem quando o LGC não está no modo de espera.
O computador AGC no módulo lunar e no módulo de comando foi programado em dois idiomas. Um que chamamos de "Básico", ou mais corretamente, "Yul", foi um montador com cerca de 40 equipes [6], de autoria de Hugh Blair-Smith. O segundo foi um intérprete que interpreta o idioma (de fato, um conjunto de subprogramas), projetado para simplificar os cálculos de navegação, incluindo vetores e matrizes de números de precisão dupla (números de ponto fixo de 30 bits), mas muito lentos. "O intérprete" foi escrito por Charles Muntz.
O ciclo de memória AGC teve uma duração de 11,7 μs. A adição de precisão única na montadora levou dois ciclos. A multiplicação de vetores de precisão dupla no intérprete levou cerca de 5 ms. Um dos desafios da programação da AGC era fazer malabarismos em dois idiomas para obter o melhor equilíbrio de velocidade e compacidade em cada caso.
Os programas de computador da Apollo eram pequenos o suficiente para caber em uma única lista, geralmente papel dobrado com páginas de 11 x 15 polegadas com uma espessura de pacote de 6 polegadas. A listagem incluía uma tabela de caracteres que podem ser rastreados durante a execução do fluxo. Tendo uma listagem, sempre soubemos que a resposta estava nela quando procurávamos um bug, embora às vezes fosse diabolicamente difícil de encontrar.

Fig 4.
Listagem do programa do módulo lunar LUMINARY 131A arquitetura LGC era modular, mas eclética. Dentro do computador, usamos o sistema métrico, pelo menos para tarefas de navegação. Mas os operadores da NASA, e especialmente os astronautas, preferiram o sistema de medidas inglês. Isso significa que antes de serem exibidas, a altura e a velocidade vertical (por exemplo) são convertidas do sistema métrico para pés e pés / s. Massa e tração são expressas em libras. Como o objetivo deste artigo é mostrar parcialmente o que chamamos de coisas naquela era de naves espaciais, usarei as unidades que foram aceitas na época.
Desenho animado na doca de Draper* * *
Agora, o departamento de monitoramento de missões na Cambridge Parkway 75 foi transferido para uma sala maior. Em 20 de julho de 1969, a sala estava lotada, apesar dos esforços de limpeza feitos por aqueles de nós que estavam mais envolvidos nessa fase da missão. Ouvimos uma caixa de squok (dispositivo de comunicação) na sala de aula, enquanto a 400 metros daqui uma espaçonave tripulada deixou a lua e se aproximou do ponto mais baixo de sua órbita (perilune), a uma altitude de cerca de 50.000 pés acima das crateras pontilhadas superfície e ligou os motores de pouso.
A equipe digitou o "verbo 37" no computador, o que significava a fase P63, preparação para descida controlada, e permaneceu no módulo de comando até o motor ser queimado. O computador executou um algoritmo calculando o tempo exato de ignição e a posição em que o módulo lunar deveria estar naquele momento. Em seguida, a nave espacial volta para a posição desejada. No momento da ignição, o bico do motor deve ser direcionado quase para frente, contra o vetor de velocidade orbital do navio.
Agora, o computador deu um código de erro 500. Ele acreditava que a antena do radar estava na posição errada. A equipe viu que os interruptores estavam na posição correta, mas ainda os trocaram e o erro desapareceu. Isso não estava relacionado aos eventos que aconteceram a seguir, mas reforçou nossas suspeitas de que os sinais que informam ao computador a posição da antena ou dos comutadores às vezes mentem.
O controle é transferido para o programa BURNBABY, o principal programa de controle de ignição que escrevemos após o LM-1, para economizar memória usando algoritmos semelhantes no período anterior à ignição. No DSKY, “Verbo 6, substantivo 62” é exibido. O registro do meio contém o tempo em minutos e segundos, a contagem regressiva para a ignição começa. Em 35 segundos, o visor fica em branco; em 30, acende novamente. Este é um sinal de que o algoritmo "Average-G" foi iniciado. Em 7,5 s, a queima "suja" começa. 5 segundos antes do início, o visor pisca, aguardando o comando de partida da tripulação. Buzz Aldrin, o piloto do módulo lunar, fica à direita do cockpit, e é o principal responsável por trabalhar com o DSKY. Ele pressiona "PROCEDER".
No horário 102: 33: 05 desde o início da missão, o combustível de ignição automática entra no motor de pouso e é acionado a uma taxa de aceleração de 10%. Armstrong nem sentiu um leve sobressalto - a aceleração foi menor que 1 / 25g. A tela destacou o "substantivo 63" e as três telas de registro agora mostram uma velocidade total de 5559,7 pés / se uma velocidade vertical de -2,2 pés / s, uma altura acima da superfície de 49971 pés [8]. As montagens do motor alinharam o vetor de empuxo do motor de pouso no centro de massa do navio. 26 segundos após a ignição, o software DPS atinge um empuxo máximo de 9.870 libras (43.900 N), 94% das 10.500 libras anunciadas oficialmente e, ao mesmo tempo, a manobra de pouso começa.
O P63 era uma fase de frenagem, cujo único objetivo era suprimir a velocidade vertical. Terminou 8 minutos depois que o navio alcançou as condições finais conhecidas como “portão alto” a uma altitude de 7.400 pés. Fig. 5 ilustra as fases do pouso na lua.

Fig. 5.
Fases de pouso na lua (números aproximados)Na época 102: 36: 55 desde o início da missão, Neil Armstrong, o comandante, estava no lado esquerdo do cockpit do módulo lunar e usou o joystick para girar a espaçonave em torno do eixo do impulso, de modo que a janela da sonda permitisse aos astronautas olhar para a superfície, pois no momento em que foi direcionado para o espaço, e a Terra ficou visível para ele. Mas o navio estava girando muito devagar. Armstrong mudou o limite de velocidade do piloto automático de 5 graus / se 25 graus / s [9]. Imediatamente antes dessa manobra, o radar de pouso sinalizou "os dados são normais".
É impossível navegar com tanta precisão a ponto de pousar com segurança na superfície lunar sem conhecer a distância e a velocidade atuais. Esta informação é fornecida pelo radar de pouso. Apesar das verificações de probabilidade realizadas pelo software, os dados do radar não puderam ser incluídos no vetor de estado sem a confirmação do comando e do centro de controle de vôo.
Cerca de cinco minutos após a ignição, Aldrin inseriu o "verbo 16, substantivo 68" - um pedido de exibição de um "substantivo", no qual o terceiro registro mostrava a diferença entre a altura que o radar vê e o computador calcula. Essa variável, chamada DELTAH, tinha cerca de -2900 pés. Isso estava dentro da margem de erro. Os dados do radar entraram no sistema de navegação sem afetar adversamente a trajetória do voo.Então ouvimos as palavras "aviso de software". Em Cambridge, nos entreolhamos. A bordo da espaçonave, Aldrin viu o sinal PROG acender e a tela novamente mostrou "verbo 6, substantivo 63". Ele rapidamente pressionou "verbo 5 substantivo 9". O código de aviso 1202 apareceu no visor DSKY. Este aviso apareceu se o computador estivesse sobrecarregado, ou seja, mais tarefas foram iniciadas do que tempo suficiente. Em Cambridge, eles disseram: "aviso de execução, não há lugar na memória". Armstrong então disse com aspereza: "Dê-nos instruções para o aviso 1202" [10].Os eventos começaram a se desenvolver rapidamente, rápido demais para transmitirmos dados de Cambridge. Isso foi feito pelo centro de controle de vôo em Houston. A história do que aconteceu a seguir foi repetida com frequência - o que o policial de 26 anos Steve Bales disse "continue" ou "cancele". Bailes participou de uma análise recente dos alarmes LGC, durante os quais foi decidido continuar a missão com o erro 1202, caso isso não ocorra com muita frequência e a trajetória não se desvie da calculada. Ele foi apoiado por Jack Garman, da NASA, e Russ Larson, do MIT, na sala dos fundos. Garman disse "continue", e o sinaleiro Charlie Duke passou suas palavras para a tripulação do navio. No MIT, quando percebemos que algo misterioso desperdiçava tempo no computador, sentamos com a respiração suspensa.Meio minuto se passou entre a ocorrência do sinal de erro e a resposta "continue" de Houston. Durante esse período, o centro de controle de vôo verificou o valor DELTAH e Aldrin discou "57", um código que permite ao sistema de navegação receber dados de radar. Então ele tentou digitar “verbo 16, substantivo 68” novamente e viu como o DELTAH diminuiu para 900 pés. O sinal de erro piscou novamente. Novamente brilhou "verbo 5 substantivo 9 - 1202". Novamente da Terra eles responderam "continue".
Fig.
6. A tração esperada (pontos) e real (linha sólida) no processo de aterrissagem (dados da simulação)Tempo de vôo - 102: 39: 31, tudo corre o melhor possível - a válvula do acelerador fecha, na hora certa. “Ah! O acelerador fecha, melhor do que no simulador ”, comentou Audrin. "O acelerador fecha a tempo!", Exclamou Armstrong, com óbvia excitação. Na transcrição oficial de conversas entre a espaçonave e a Terra durante a fase de pouso, há apenas um ponto de exclamação - neste local [11].O bico do motor de pouso sofre uma erosão severa ao operar no modo de 65% ao impulso máximo. A válvula do acelerador fecha quando o impulso necessário para o pouso é reduzido a um nível no qual um retorno ao valor máximo não é mais necessário até o final da fase de frenagem. Fechar muito bem o acelerador indica que o sistema de controle está funcionando corretamente. Também é verdade que, se o obturador ficar preso na posição aberta, será necessário interromper a missão, pois após 40 segundos, de acordo com as equações de navegação, o navio terá que fazer uma curva.Enquanto o módulo lunar era direcionado para a superfície da lua, Armstrong contou pontos que indicavam que o módulo havia declinado mais do que o necessário. Ele descobriu que o computador não sabe que o módulo de pouso diminuiu demais [12]. Caso contrário, o motor permaneceria no impulso máximo por mais tempo do que realmente aconteceu.
Simulador do módulo lunar.Hora da missão 102: 41: 32, o navio cruzou a marca de 7400 pés, descendo a uma velocidade de 125 pés / s, o "portão alto" foi atingido. O sistema de navegação agora deve executar outras tarefas. O módulo lunar é direcionado para frente, para que a superfície lunar seja visível ao longo do curso. No DSKY, o registro de modo mostrava 64, o que significava "fase de visibilidade" e "substantivo 64" alterado para "substantivo 63". Em vez de velocidade, dois números de dois dígitos agora são exibidos em maiúsculas. Uma delas é a designação do ponto de aterrissagem (LPD), um ângulo que indica qual marca de marcação na janela que Armstrong deve procurar para ver onde o navio vai pousar se a aterrissagem automática for permitida. O sistema de orientação controlava a guinada para manter o local de pouso ao longo da linha de visão.A tripulação pode mudar o local de pouso usando um controle manual. (Armstrong disse antes do voo que planeja não usar essa oportunidade, mas aparentemente a "fase de visibilidade" durou muito tempo). O segundo número mostrou o tempo restante durante o qual o local de pouso poderia ser alterado. Nesta fase, está incluído um algoritmo que permite alterar o local de pouso, que foi o período de pouso mais estressante.Tempo de missão 102: 42: 17, ocorre o erro 1201. Novamente, erro executivo (o software do sistema de computador consistia em dois subsistemas: Executive - sistema operacional em tempo real e The Interpreter - máquina virtual, de fato, um intérprete de comandos para trabalhar com números de precisão dupla. ) - não há memória livre. Após aproximadamente 24 segundos, erro 1202 novamente. O centro de controle de Houston diz "continuar" nos dois casos. Neil Armstrong, cujo coração fez 120 a 150 batimentos durante esse período de tempo [13], cumpriu essas instruções., , .. 64 , LPD. , , , . , , , . , , , .
No entanto, Armstrong conseguiu perceber que o sistema LPD mostrou que "estamos pousando perto de uma grande cratera rochosa com rochas muito grandes cobrindo a maior parte da superfície" [15]. Portanto, no momento da 102: 43: 08, desde o início da missão (altitude de 650 pés), Armstrong, decidindo que não podia sentar-se perto da cratera, trocou a chave do modo de piloto automático de AUTO para ATT HOLD para controlar manualmente a posição do módulo lunar. Ele manobrou com um ângulo zero para manter a velocidade horizontal e passou por terrenos rochosos.(ATT HOLD significava que o piloto automático digital controlava a velocidade de vôo no modo Attitude-Hold, no qual o astronauta podia controlar a velocidade de vôo desviando o joystick. Depois que a garra do joystick foi liberada, o piloto automático redefine a velocidade para manter sua posição atual.)Tempo de missão 102: 43:20, altitude 430 pés, Armstrong mudou a chave seletora para o modo de controle de velocidade de descida com a mão esquerda (P66). O computador agora controlava o impulso do navio para manter a velocidade de descida controlada pelo comutador ROD. Mover o interruptor para baixo diminuiu um pé por segundo; o movimento descendente aumentou a velocidade de descida na mesma quantidade. Usando o joystick, Armstrong inclinou o módulo para zero velocidade horizontal e o enviou para um local seguro para o pouso. Após vários movimentos de controle "possivelmente involuntários" devido ao fato de a poeira levantada pelo escapamento do motor distorcer sua percepção de velocidade, Armstrong pousou uma nave espacial no Mar da Tranquilidade às 102: 45: 40.