Conecta con nosotros

A Fondo

Apollo Guidance Computer, la historia del ordenador que nos llevó a la Luna

Publicado

el

Apollo Guidance Computer

El  20 de julio de 1969, hace hoy cincuenta años, los astronautas Neil Armstrong, Buzz Aldrin y Michael Collins culminaron el mayor viaje que haya emprendido el ser humano. Detrás de los protagonistas de la hazaña, quedaron los esfuerzos de miles de personas para superar uno de los mayores retos de nuestra historia.

La tecnología, como no podía ser de otra manera, fue la gran impulsora de la gran aventura y, por encima de toda la innovación ligada a la carrera espacial, queremos rendir un pequeño homenaje al Apollo Guidance Computer (AGC); el primer ordenador de la historia en incorporar circuitos integrados y apoyo fundamental de los astronautas durante la misión más importante de sus vidas.

Entre los 24 kilómetros de cables instalados en la nave un ordenador a bordo fue el encargado de asistir a los sistemas de estabilización, los encendidos de los motores, la navegación y todo lo que ocurría durante el vuelo. Era 2.000 veces más lento y tenía 1.000 veces menos memoria que el smartphone que tienes en el bolsillo.

De las “calculadoras humanas” al cuarto tripulante

Uno de los aspectos cruciales de una misión espacial es el cálculo de trayectorias. Durante las primeras misiones espaciales, las complejas operaciones matemáticas eran realizadas por “calculadoras humanas” que formaban un departamento de la NASA con gran presencia de mujeres de raza negra. La historia de tres de ellas, Katherine Johnson, Dorothy Vaughan y Mary Jackson fue llevada al cine hace unos años en la película «Hidden Figures».

Mary Jackson, trabajando en las instalaciones de la NASA.

Cuando la carrera especial aceleró, ordenadores IBM que ocupaban una habitación entera comenzaron a sustituirlas y la transición, que casi todos entendían como necesaria, no fue nada fácil. No en vano,  John Glenn, primer astronauta americano en orbitar alrededor de la tierra, solicitó que Katherine Johnson comprobara a mano los resultados que arrojaban los primeros modelos del cálculo automático.

Para afrontar el reto de llevar un hombre a la Luna, los ingenieros de la NASA consideraron que era necesario instalar un ordenador en la aeronave capaz de ayudar a los astronautas durante la misión, proporcionarles datos en tiempo real y realizar los cálculos necesarios sin depender de la comunicación con la Tierra.

Los astronautas, expertos pilotos, no se mostraron muy entusiasmados en dejar que una máquina hiciera su trabajo. Estaban acostumbrados a controlar sus aviones en las situaciones más críticas y habían realizado multitud de pruebas en naves tripuladas, así que costó convencerlos de mirar una pantalla e introducir comandos iba a consumir gran parte de su tiempo en el espacio.

En 1961, durante la primera etapa del desarrollo del Apollo y el cohete Saturn, la NASA encargó al laboratorio Charles Stark Draper del Massachusetts Institute of Technology (MIT) el desarrollo del Apollo Guidance Computer, un ordenador capaz de integrarse en los módulos de mando y lunar. El responsable del hardware sería Eldon C. Hall, que tenía gran experiencia diseñando tecnología de defensa para la Marina de los EE.UU.

Por aquel entonces, apenas se prestaba importancia al concepto “software” y la interacción con la mayoría de sistemas se reducía a desarrollar comandos para resolver problemas concretos. Se seleccionó a Margaret Hamilton (que colaboró con Hal Lanning) para diseñar una solución innovadora y accesible para los astronautas, convirtiéndola en la primera ingeniera de software de la historia.

Eldon Hall se encargo del diseño del hardware del AGC.

De la habitación al maletín: el reto del hardware

El principal problema de las especificaciones que debía tener el AGC es que nadie había construido nada parecido hasta el momento y nadie tenía idea de cómo hacerlo. En el MIT rescataron un proyecto sobre el envío de una sonda no tripulada a Marte de 1958, como base del desarrollo de un ordenador compacto, basado en la tecnología de los misiles Polaris y que combinaría los datos de un giroscopio, varios acelerómetros y un sextante para fijar la posición y el rumbo de la nave.

Por si fuera poco, la tecnología desarrollada para la misión tendría que ser lo suficientemente resistente para soportar un vuelo espacial, utilizar el mínimo número de transistores (que tenían muy poca fiabilidad en aquellos tiempos) y contar con una interfaz lo más simple posible para suavizar la curva de aprendizaje de los astronautas y reducir la posibilidad de errores.

Durante los primeros años de la década de los sesenta se trabajó muy duro en el proyecto AGC, pero en el MIT eran conscientes de que la tecnología era demasiado primitiva para lo que se pretendía hacer. Además, en la NASA no estaban convencidos con la forma de trabajar del Instituto, ni en tiempos ni en su obsesión por duplicar esfuerzos y rehacer partes continuamente. Para resolverlo, decidieron enviar a un “solucionador” llamado Bill Tindall, que sería conocido por sus extensos y contundentes escritos sobre cómo deberían hacerse las cosas. Pasaron a la historia como Tindallgrams.

Los expertos, conscientes de las limitaciones insalvables del hardware del que disponían, dieron un giro al proyecto: el AGC ya no sería un ordenador que controlaría todos los aspectos de la misión, sino una máquina mucho más especializada y diseñada para dar soporte. Los datos de navegación se enviarían desde la Tierra y el ordenador de a bordo estaría disponible en caso de que fallarán las comunicaciones.

De esta forma, la mayor parte de las operaciones se ejecutarían desde el potente centro de cálculo que la NASA tenía en Houston, donde cinco potentísimos ordenadores IBM 360/750 con un megabyte de memoria, 42 unidades de cinta y 25 impresoras se encargarían de que el AGC no tuviera excesivo protagonismo.

A pesar de que pueda parecer, el proyecto seguía siendo muy ambicioso. Sí, desde Houston podían controlar la navegación y tenían acceso a todo tipo de datos, pero existía un retardo de hasta un segundo por la distancia hasta la Tierra y las comunicaciones dejaban de funcionar cuando el Apollo estaba en la cara oculta de la Luna.

Obviamente, uno de los mayores desafíos que afrontó el equipo de desarrollo fue la miniaturización. En una época donde el tamaño de un ordenador se calculaba en metros cúbicos, consiguieron diseñar un sistema de 55 centímetros de largo, 33 centímetros de ancho y 15 de alto, con un peso de “solo” 32 kilos. Funcionaba con 55 voltios.

Además, y con el objetivo de reducir las posibilidades de fallo al mínimo, se simplifico su diseño interno a dos bandejas de metal, una para los chips u otra para la memoria en un total de 30.000 componentes, todo un logro para el época.

Según consta en la documentación oficial que ha hecho pública la NASA, se pensó en instalar un sistema duplicado a bordo por si fallaba el principal, pero se rechazó. Finalmente, se optó por someter al AGC a todo tipo de pruebas y sellarlo herméticamente para que pudiera funcionar en casi cualquier circunstancia.

El Apollo Guidance Computer fue el primer ordenador de la historia equipado con “microchips” o circuitos integrados, que fueron suministrados por la compañía Farichild Semiconductors. Era la empresa donde trabajaba Gordon Moore, que fundaría Intel en 1968 junto a Robert Noyce y formuló la famosa ley que pronosticaba que la potencia de los ordenadores se duplicaría cada 24 meses.

Para el desarrollo de los distintos AGC que formaron parte del programa Apollo se emplearon un millón de chips, un 60% de lo que podía producir la industria estadounidense en aquella época. En total se construyeron 42 AGC, con un coste aproximado de 200.000 dólares por unidad (el equivalente a un millón y medio actual).

Memoria de núcleos cableados.

Una memoria cosida a mano

En los inicios de la informática, la industria tenía diferentes soluciones para almacenar datos pero ninguna era válida para el proyecto Apollo. El MIT utilizó una técnica llamada «rope memory” (memoria de núcleos cableados) que combinaba un juego de cables que atravesaban anillos de ferrita: cuando un cable pasaba por fuera era un 0 en binario y cuando lo hacía por dentro significaba 1. Su capacidad total era de 35864 palabras.

Para llevarlo a la práctica el MIT contrató a trabajadoras de la industria textil ayudadas por un sistema automático que mostraba qué debían hacer con cada anillo. Un trabajo tedioso y casi totalmente manual que tenía una gran ventaja: no se podía borrar, alterar o corromper.

Así se «cosió» la memoria del ordenador del Apollo 11.

Además de esta memoria permanente, se instaló un banco de RAM con capacidad para 2.000 palabras que el sistema utilizaba como bloc de notas temporal para resolver operaciones. En lugar de optar por una solución de tiempo compartido (lo habitual en los ordenadores de aquella época) se programó para trabajar por prioridad: cada programa tenía una prioridad en función de su importancia, evitando que se produjeran retrasos o cuelgues en tareas que no fueran imprescindibles. Como se demostraría durante la misión, esta decisión resultó determinante.

El cristal oscilador instalado en el Apollo Guidance Computer tenía una frecuencia de 2.048 MHz, que se dividía en un reloj de 1.024 MHz y cuatro fases para tareas internas y otras dos de 512 KHz, denominada frecuencia maestra, que se utilizó para sincronizar los sistemas externos del Apollo. Otro detalle curioso es la presencia de buses de entrada y salida de 16 bits.

DSKY o una interfaz revolucionaria

Diseñado por Alan Green, del MIT, la unidad de pantalla y teclado era la forma que tenían los astronautas de interactuar con el sistema. Aunque puede parecer caótico (puedes probarlo en simuladores como este) , en realidad gran parte de la interfaz está dedicada a mostrar información de estado y la interacción es simple.

En lugar de tener que aprender un lenguaje de programación o instalar cientos de botones, el DSKY permitía introducir verbos y sustantivos para dar órdenes. Tras pulsar un botón de desbloqueo (fundamental para evitar desastres), el astronauta introducía un código numérico seguido de un sustantivo o un verbo y solo tenía que pulsar intro para ejecutarlo. En el caso de órdenes más complejas el sistema esperaba hasta que se introducía cada dato y podía ejecutar rutinas pregrabadas (Major Modes) que ahorraban tiempo.

En un chasis de solo 21,6 por 17,8 centímetros el DSKY tenía doce indicadores de actividad, un monitor que se encargaba de mostrar el programa en ejecución y tres registros permanentes que indicaban altitud, velocidad u otros datos que fueran de interés en función de la tareja ejecutada.

Un software con multitarea en los años 60

Para diseñar el software que hacía funcionar al AGC hicieron falta el trabajo de 350 ingenieros y el equivalente al trabajo de 1.400 años de una sola persona hasta conseguir aterrizar en la Luna.

Con el objetivo de simplificar el trabajo de los programadores, se optó por el lenguaje ensamblador como base del software, representando mediante texto los códigos numéricos con los que funciona el ordenador.

La solución incluía un intérprete de lenguaje de alto nivel que integraba una máquina virtual de pseudo-instrucciones mucho más complejas y con mayor capacidad que las del lenguaje AGC nativo. Para ejecutarlas solo tenían que invocar al intérprete que se almacenaba en la ROM e indicar el programa a interpretar.

Margaret Hamilton, máxima responsable del software del Apollo posa con el código fuente.

El sistema operativo del Apollo Guidance Computer consistía en un sistema Exec en tiempo real que coordinaba la ejecución de los programas, asignaba la RAM y establecía la prioridad de las tareas. Implementaba un avanzado sistema de multitarea simpe o cooperativa y era capaz de ejecutar hasta ocho al mismo tiempo (desde controlar la potencia de un motor a gestionar la orientación de la nave o el sistema de refrigeración).

El equipo de desarrollo implementó un componente de interrupción llamado «Waitlist» que podía programar múltiples tareas de una duración determinada. Además, una tarea de mínima prioridad conocida como «dummy job» siempre estaba presente y se encargaba de realizar diagnósticos de funcionamiento. Cuando podía ejecutarse, mostraba un indicador verde indicando a la tripulación que no había ninguna tarea de mayor prioridad prevista.

Sin lugar a dudas, uno de los hitos del software del AGC era su tolerancia a errores. Aunque inicialmente la NASA lo descartó asegurando que la probabilidad de un error humano era mínima, cambiaron de idea cuando un astronauta borró por error todos los datos del ordenador durante una prueba al equivocarse de comando. El sistema contaba con control de excepciones y la posibilidad de realidad un “soft reset”, reiniciando la máquina manteniendo la información de la RAM.

La visión de un ordenador que sabía reaccionar cuando las cosas no iban según el plan previsto resultaba toda una revolución para la época. El equipo de desarrollo del software del AGC implementó conceptos innovadores y construyó un código sólido y robusto que pasó a la historia de la tecnología.

Un extracto del código fuente del AGC.

En realidad no se instalaron uno sino dos ordenadores AGC: eran idénticos, pero el software contenía instrucciones distintas. El que estaba instalado en el módulo de mando contenía instrucciones para regresar a la tierra y sus líneas de código se nombraron como Colossus. El del módulo lunar contenía el código necesario para el alunizaje y el despegue y su código se llamaba Luminare. Había un tercero, llamado Abort Guidance System y destinado a seguridad.

El software del Apollo Guidance Computer está disponible para cualquiera que quiera consultarlo en la plataforma GitHub.

Reiníciate, pero no te cuelgues

Durante la misión Apollo 11 el AGC funcionó como estaba previsto hasta que se inició el descenso al Mar de Tranquilidad. De repente, durante la fase de frenado, las pulsaciones de Armstrong se dispararon y alertó de una alarma en la pantalla del DSKY. Segundos después, Buzz Aldrin confirmó que se trataba de la alarma 1202 pero ¿qué demonios significaba eso?

Charlie Duke como CapCom del Apolo 11 durante el alunizaje.

Desde control de misión se decidió que el Eagle continuara en descenso y pasara a la fase de aproximación: cuando quedaban 1524 para alunizar el AGC volvió a mostrar un error. Esta vez el 1201. Mientras el mundo entero contenía el aliente Steve Bales, controlador de la misión se limitó a decir “continuamos con el plan”. En total, se sucedieron cinco alarmas durante esos minutos críticos y se llegó a encender la luz de alarma de la cabina (master alarm) indicando que algo no iba bien.

En realidad, lo único que ocurría es que el AGC estaba sobrecargado por recibir demasiada información. Los astronautas, siguiendo el programa previsto, habían dejado encendido el modo manual (SLEW) del radar de rendezvous (en jerga espacial, acoplamiento), saturando al sistema. La historia ha demostrado que fue un descuido en las especificaciones del diseño de de alimentación eléctrica que desconocían tanto los astronautas como Houston.

La robustez del software creado por el equipo de Hamilton se puso a prueba. El AGC estaba concebido para usar un máximo del 85% de su capacidad, dejando el 15% para imprevistos. Además, un sistema ejecutivo asíncrono descartaba tareas no esenciales y un sistema de protección de reinicio se encargaba de inerrumpir tareas incompletas y reanudar las esenciales sin detenerse.

El AGC lo resolvió cancelando las tareas pendientes excepto aquella con la priodidad número uno: el aterrizaje en la Luna. En cuanto Armstrong paso a control manual para la última fase del alunizaje, las exigencias al AGC descendieron y las alarmas cesaron inmediatamente. Para la gran mayoría esto es poco más que una anécdota y supone, sin lugar a dudas, el mejor tributo para un Apollo Guidance Computer que solo hizo lo que debía hacer.

Imágenes | NASA | National Air and Space Museum

Lo más leído