korionov - stock.adobe.com
Cómo el Apollo 11 influyó en el software y hardware moderno
El 16 de julio de 1969, Apolo 11 comenzó su viaje histórico para enviar al hombre a la luna. Aquí revisamos la tecnología informática pionera desarrollada por la NASA.
La importancia de las computadoras para llevar a Neil Armstrong y sus colegas a la Luna y de regreso a la Tierra no se puede subestimar. Pero el tipo de tecnología disponible para la NASA a principios de la década de 1960 era muy diferente de la computadora que se usaba en el Apollo 11 y el módulo de aterrizaje lunar.
Paul Kostek, miembro sénior del Instituto de Ingenieros Eléctricos y Electrónicos (IEEE) y experto sénior en sistemas en Base2, dijo: "Antes de la misión lunar del Apollo las computadoras eran máquinas enormes que llenaban cuartos completos".
Entonces, entre los numerosos desafíos de ingeniería a los que se enfrentaron los ingenieros y científicos del Apollo era: ¿cómo se podría miniaturizar tal máquina para trabajar en el módulo de comando y servicio de Columbia y en el módulo lunar Eagle? "Los microprocesadores no se habían inventado", dijo Kostek, "pero los ingenieros del programa Apollo pudieron escalar una computadora a algo que pudiera volar al espacio".
Las computadoras de la nave también necesitaban ejecutar sistemas operativos en tiempo real. En un artículo en el Diario de la Superficie Lunar, de la NASA, Paul Adler, un ingeniero de software del módulo lunar, describió que trabajó con otro ingeniero, Don Eyles, para desarrollar un secuenciador de software que ordenó las tareas de manera efectiva por prioridad y pudo realizar múltiples tareas en tiempo real basándose en comandos que se habían programado de tal manera que la memoria se compartía entre tareas.
Ella Atkins, directora del laboratorio de sistemas aeroespaciales autónomos de la Universidad de Michigan y miembro sénior de IEEE, dijo: “Observé el aterrizaje de la Luna como un niño pequeño. Cada vez que hay una fecha límite y un desafío, las personas aportan su mejor esfuerzo al trabajo. Vimos eso una y otra vez en Apollo. En el programa Apollo, toda la tecnología era glamorosa. Nunca habíamos escrito código que se ejecutara en el espacio, y para comunicarnos en tiempo real hasta la Luna".
Los programas tenían que estar escritos en lenguaje ensamblador de bajo nivel porque los lenguajes de programación de alto nivel como C para la programación del sistema aún no se habían inventado. "En Apollo, la codificación se hizo en ensamblador", dijo Atkins. "Fue hasta el momento de las misiones del transbordador espacial que reconocimos que este nivel de especialidad y gastos generales realmente no tenía sentido. Escribir software para un sistema integrado es más fácil hoy que en la década de 1960".
Atkins agregó: “De la misión de Apolo, aprendimos que podíamos hacer los cálculos matemáticos lo suficientemente rápido para permitir que la órbita se calcule correctamente. Aprendimos que podíamos depurar el código lo suficientemente bien como para que no hubiera ningún problema".
Y este concepto de código de depuración para una fiabilidad absoluta ha sido fundamental para el software desarrollado tanto para misiones espaciales como para sistemas críticos para la seguridad en la Tierra. Kostek dijo que: “Un viaje a la Luna nunca iba a ser un boleto de ida. La NASA tuvo que asegurarse de que la tripulación del Apolo 11 regresara a casa, a la Tierra, de manera segura".
A diferencia de la tecnología de consumo de hoy y las aplicaciones de Windows, dijo, "las computadoras necesitaban un alto nivel de confiabilidad para una misión espacial", y agregó: "La misión del Apollo usó la cantidad mínima de código necesaria para un lanzamiento de forma segura. En la década de 1960, el software era un mundo relativamente nuevo. Neil Armstrong aterrizó manualmente el módulo lunar, que usó solo un par de miles de líneas de código".
Aun así, como lo ilustra el documental de la BBC “8 Days: To the Moon and back”, el módulo lunar generó un error 1202 justo antes de que Armstrong y Buzz Aldrin se establecieran para realizar el descenso final. El error ocurrió porque la pequeña computadora en el módulo lunar tenía muy poca memoria, y estaba siendo llenada por datos de algo que Adler describió como "una mala configuración de los interruptores de radar". En efecto, la computadora estaba señalando que estaba sobrecargada.
Armstrong solicitó al Control de la Misión una aclaración sobre el error 1202. Jack Garman, un ingeniero informático de la NASA que trabajó en la Sección del Programa de Guía del Apollo, dijo al Control de la Misión que el error podría ignorarse en este caso, lo que significaba que la misión podría continuar. Apolo 11 aterrizó unos segundos después.
Mas allá del Apollo
Kostek agregó: “Los mayores desafíos en la programación de hoy son el tamaño y el alcance del software. En el contexto de los sistemas aeroespaciales, se necesita confianza en el código. Hay millones de líneas de código en aplicaciones modernas. ¿Cuántos escenarios podemos realmente probar?”
Para Atkins, el equipo de programación detrás del programa Space Shuttle fue el mejor equipo de codificación del mundo. "La codificación no era glamorosa, pero el equipo estaba tan centrado en encontrar y solucionar problemas", dijo.
Atkins cree que entre los principales avances después del Apolo 11 se incluyen el surgimiento de una ciencia autónoma dirigida por la nave espacial Earth Observing 1. Lanzada en noviembre de 2000, la misión original de la nave debía durar un año, pero continuó orbitando la Tierra hasta 2017.
Atkins dijo: “Durante décadas, todos los datos se enviaron de vuelta a la Tierra. Earth Observing 1 representó un cambio en el paradigma, en el que se confía en el software. Fue capaz de descargar selectivamente datos científicos y convenció exitosamente a los científicos de que el procesamiento de datos a bordo podría aumentar el valor para la ciencia".
Obsequios del Apollo 11
Fue un pequeño paso para Neil Armstrong, pero un gran salto en la fe en el software, según Kostek, quien dijo: “Desde la época de Apollo, todas las sondas espaciales han sido sobre diseñadas. Puede tomar de 10 a 15 años llegar a un planeta, pero la sonda está diseñada para durar 30 años y ofrece una vida de servicio adicional, que ha sido increíblemente afortunada para los científicos. Estos sistemas están construidos de manera simple y confiable".
Dadas las vastas distancias que recorre una nave espacial en una misión interplanetaria, Atkins dijo que las sondas que se aventuran en los confines del sistema solar y más allá tienen que ser diseñadas para ser adaptadas, con el fin de realizar experimentos más allá de los objetivos de la misión original. "En los rovers Spirit y Opportunity de Marte, la nave vivió mucho más tiempo de lo que debían y los científicos necesitaban transformar su código original", dijo.
A lo largo de la vida de estas misiones, el conservadurismo habitual de los viajes espaciales se redujo a medida que los científicos probaban nuevos algoritmos, agregó.
Atkins dijo que la capacidad de comunicarse de forma remota con una sonda que usa un poder limitado en las vastas distancias del espacio se demostró con las misiones Galileo y Cassini. "Cada uno tenía un momento en que los ingenieros estaban tratando de averiguar qué hacer a continuación", dijo. "Esto dio lugar a cambios en el software para permitir que la ciencia se haga mejor y para corregir problemas en el hardware".
Cassini continuó operando durante casi 20 años, cambiando la forma en que los científicos piensan sobre el sistema solar, antes de que se estrellara en Saturno el 15 de septiembre de 2017. Es esta capacidad de adaptar los sistemas informáticos más allá de sus objetivos de diseño originales lo que define la exploración espacial moderna.