viernes, 24 de julio de 2009

Luna 2

Con algún retraso, ya llegué a la luna, y varias veces, pues el libro "Digital Apollo" en su parte final describe los alunizajes de todas las misiones posteriores a la del Apolo 11, aunque con menor detalle que en este caso. Y desde luego casi ni cita al Apolo 13.

Una de las curiosidades en relación con el software es que este debía colocarse físicamente en la memoria "fija", equivalente a una ROM. En esa memoria, con nucleos magneticos en forma de anillos, el bit 0 o 1 se determinaba por la situación física de un hilo conductor respecto a un nucleo concreto: si pasaba por el interior del mismo, o lo sorteaba por el exterior. En definitiva, cuando el programa ya se había compilado y convertido en ceros y unos que debían escribirse en la memoria, la copia del programa implicaba crear la memoria físicamente a base de pasar los hilos adecuados por cada nucleo. Como eso resultaba muy laborioso, el software debía entregarse con un amplio margen antes de llegar a usarlo en cada misión. Y esa laboriosa y delicada labor de "confeccionar" la memoria la realizaban las LOLs, las Little Old Ladies, las viejecitas, experimentadas trabajadoras del sector textil, que ayudadas de máquinas especiales iban hilando bit a bit el programa en la memoria. Alucinante.

La otra curiosidad más destacable que se revela en el libro es la causa de las famosas alarmas del computador del modulo lunar que precedieron, y pusieron en peligro aparente, al alunizaje del Apolo 11.

La primera alarma se produjo tras llegar a los 37000 pies, cuando el radar de altitud empezó a responder dando su estimación. Cuando se iba a validar esa lectura, saltó la alarma. Aldrin preguntó al ordenador, con un comando, la naturaleza de la misma, con el resultado 1202. Abajo en la tierra los ingenieros del IL reconocieron que se trataba de una "sobrecarga del ejecutivo". El ordenador estaba sobresaturado, algo equivalente en Windows a ver en el administrador de tareas que la CPU está al 100% todo el tiempo. Algo estaba haciendo trabajar al ordenador más de la cuenta, incluso a pesar de que por diseño sólo se debía llegar al 85% de uso de la capacidad del ordenador cuando este estuviera a pleno rendimiento. Los ingenieros decidieron seguir, digamos que hacer caso omiso a la alarma. La alarma volvió a aparecer poco después del primer "seguir sin hacer caso". Pero poco después una acción automática que debía tener lugar se llevó a cabo sin problema. Parece que a pesar de todo el ordenador hacía lo que debía. Los ingenieros seguían estrujandose la sesera para dar con la causa de la alarma, buscando posibles "culpables" en alguno de los comandos al ordenador. A pesar de tanta alarma, Armstrong no abortó el descenso. Tras unos minutos se llegó a los 7000 pies y el ordenador cambió al programa adecuado, la fase de aproximación. Otra consulta a todos los controladores en tierra dió el resultado "GO". A 3000 pies otra alarma, esta vez 1201, del mismo tipo que la anterior, y despues otra 1202. El ritmo cardiaco de Amstrong pasó de los 120 a los 150 latidos por minuto.

El caso es que el único efecto adverso de las alarmas en el alunizaje fué desviar la atención de todos, incluido Armstrong, que miró por la ventanilla la zona de alunizaje más tarde de lo normal, a los 2000 pies, para darse cuenta de que había un gran cráter y una zona con muchas rocas grandes cubriendo buena parte de la superficie. El lugar no era el esperado, porque pronto en el descenso se vió que iban largos, con un poco más de velocidad de la debida. En esa parte final se describen las maniobras del comandante, con el mando para redesignar el punto de alunizaje, y pilotando con el sistema "manual", programa P66, desde los 550 pies. Hasta el esperado contacto, tras el que llegan las palabras de Buzz Aldrin

Engine stop. ACA out of detent.

Houston, Tranquility Base here. The Eagle has landed


En el control de la misión el respiro y la alegría no retrasaron la febril actividad para saber la causa de la alarma, pues el módulo lunar debía despegar en pocas horas. Los ingenieros del IL fueron a sus simuladores a intentar reproducir la alarma, y uno de ellos llegó corriendo al laboratorio desde casa, para indicar que había visto ese problema en una simulación causado por el radar de acoplamiento (rendezvous) activado en AUTO al aterrizar. Enseguida se consultó la telemetría, y se confirmó que ese radar estaba activado, en modo SLEW , aunque era innecesario para alunizar. Antes de despegar se indicó al módulo lunar pasar ese radar a modo LGC. El problema se solucionó y la alarma no volvió a aparecer.

Tanto en modo AUTO como en SLEW el radar enviaba sus datos al ordenador para presentarlos en la "pantalla" de la cabina. Resultó que el radar de acoplamiento y el ordenador tenián distintas fuentes de alimentación alterna, de igual frecuencia, pero que cayeron en un ángulo de fase especialmente desafortunado que desincronizó radar y ordenador, causando que los contadores del radar variasen constantemente debido al ruido eléctrico aleatorio, enviando el máximo flujo de datos al ordenador, que se veía obligado a incrementar o decrementar sus contadores para seguir los ángulos del radar, empleando cerca del 15% de su tiempo de proceso.

En tierra se habían hecho pruebas, pero conectando ambos sistemas a la misma fuente de alimentación, que evitaba ese problema.

Como se ve, el peligro se agazapa en los recovecos más inesperados. Y ya tiene guasa que lo que pudo haber abortado el alunizaje fuese un elemento que no jugaba entonces ningún papel y era usado sólo para el acoplamiento del módulo lunar con el de mando, tras despegar aquel de la Luna.

Pero al menos la robustez del diseño del ordenador salvó la situación. Además de tener un margen para encajar el 15% extra, el "ejecutivo asíncrono" diseñado por los ingenieros descartó, ante la sobrecarga, las tareas de baja prioridad, manteniendo las esenciales. Además se usó una "protección de reinicio", un requisito impuesto al equipo de software en 1968, que permitía reiniciar el sistema de forma prácticamente inmediata, nada que ver con los inicios y reinicios que sufrimos en los ordenadores normales hoy en día. Ese reinicio descartaba trabajos incompletos y de baja prioridad y seguía como si nada donde lo había dejado con el resto.

Y otro detalle explicado es que se habían tenido en cuenta reacciones a eventos improbables, y desarrollado errores de ordenador que probablemente nunca sucedieran, entre ellas una alarma indicando sobrecarga en el ordenador del módulo lunar. En una simulación pocos meses antes del despegue del Apolo 11 un controlador abortó la misión a causa de una alarma de programa, aunque el aterrizaje podría haberse completado, un error que preocupó mortalmente a todos, pues un aborto indebido de la misión era casi tan malo como no realizar uno necesario. Tras eso se pidió determinar para cada alarma qué podía pasar y qué se podía hacer. Uno de los ingenieros se hizo una chuleta que dejó en su consola de control. En esa chuleta aparecen los errores 1201 y 1202, y que no son causa de abortar. Cuando un controlador de vuelo pidió ayuda a su equipo de soporte tras la primera alarma 1202, ese ingeniero contestó "We´re go on that alarm". Para que luego hablen mal de las chuletas. Pero esa información no la conocía por ejemplo alguien que debería haber sido informado, el piloto Buzz Aldrin.

Al final, la causa del problema con las alarmas no era un error del ordenador o del software, sino un error de comunicación y en parte de ingeniería de sistemas. En proyectos grandes ( y no tan grandes) el mayor problema acaba siendo que la información que sabe A y puede evitar errores a B, no llega a este. Y la causa del éxito a pesar de todo reside también en mucha buena ingeniería, con amplios margenes, minuciosidad, pruebas, simulaciones, y llegar a explicar cualquier fallo que se produzca.

Sin embargo, en una pauta común y repetida, lo que trascendió a la prensa fué que el culpable era el ordenador. Al controlador que decidió seguir a pesar de la alarma se le recompensó por su "decision to proceed with the lunar landing when computer failed"

Aunque siempre se ha ponderado la actuación de los astronautas, y en todas las misiones Apolo que alunizaron el comandante hizo la parte final en modo "manual", incluso entonces las acciones manuales pasaban por el ordenador. Si de verdad hubiese fallado el ordenador, todavía ahora no haría 40 años de la llegada a la luna.

lunes, 20 de julio de 2009

Luna 1

Sí, hace 40 años que el hombre llegó a la Luna. Nos encantan estas puntuales efemérides redondas y señaladas.

En este caso, ese primer paso cósmico destaca por sí mismo. Pensar que alguién paseo por esa esfera desnuda, mudable y misteriosa, y contempló en directo la estampa de nuestro humilde planeta azul. Um...

Pero cómo se llegó a la Luna es incluso más fascinante que ese momento final.

En las películas actuales la promoción va muchas veces acompañada de documentales de "cómo se hizo", que suele ser más corto que la película. En el caso de la llegada a la Luna, la película dura muy poco, unos minutos, pero cualquier documental de cómo se hizo daría para días y días de metraje.

Ahora estoy leyendo "Digital Apollo. Human and Machine in Spaceflight" de David A. Mindell. Hay dos actores principales en este peculiar "cómo se hizo", los pilotos y los ingenieros, que actúan en el escenario de la Guerra Fría, a finales de la década de los 50 y en los 60 del siglo XX.

Pero antes el desarrollo de la aeronáutica ya plantea la dicotomía existente en todo avión, de estabilidad frente a maniobrabilidad, y la necesidad de usar la instrumentación y el control automático para ayudar al piloto. También hay una tensión en la función del piloto, ¿"conductor" (rol pasivo) o "aviador" (rol activo)?. En general los pilotos quieren ser "aviadores", y los ingenieros piensan en "conductores". El mayor progreso se consigue con personas que unen las dos características de piloto e ingeniero. Dos ejemplos señeros, James Doolittle y Charles Stark Draper.

En los 50 el desarrollo de aviones supersónicos pone en primer plano a los pilotos de prueba experimentales, la crema de la crema de los pilotos, que crean su propia sociedad, SETP (Society of experimental test pilots). Su primer banquete, el 4 de octubre de 1957, coincide con el día en que la URSS se adelanta en la carrera espacial lanzando el Sputnik.

La razón de ser de SETP es defender el papel protagonista y activo del elemento humano en el avance aeroespacial, puesto cada vez más en peligro por el avance técnico del control automático. Los pilotos van a tener a favor un factor clave: en la carrera espacial entre las dos grandes potencias los estadounidenses vinculan la democracia y la libertad al elemento humano, el valor de lo individual, frente a la inhumana automatización soviética. La presencia de los pilotos, luego astronautas, será esencial para el apoyo mediático a la apuesta política de Kennedy.

En el libro se repasan en los primeros capítulos los proyectos X-15, Mercury y Gemini. El X-15 es un avión supersónico, lanzado desde un B-52, capaz de sobrepasar la atmósfera, en donde el mayor problema a resolver es el de la reentrada a la misma. En cambio en Mercury y Gemini el piloto va en una capsula lanzada por un cohete similar a los misiles balísticos. En todos esos proyectos hay considerables retos técnicos, pero siempre surge en primer plano cuál debe ser el papel del piloto. En general se adopta una aproximación de ingeniería de sistemas en que el piloto es un subsistema, que debe interactuar con el resto, debiendo entenderse y modelarse por tanto adecuadamente ese subsistema humano.

Al margen de la exposición principal de esos proyectos con pilotos, se menciona el proyecto Polaris con sus misiles lanzables desde un submarino en inmersión, que influirá notablemente en dos aspectos, de gestión del proyecto (aquí nace el PERT) y de control automático. Los misiles deben ser casi completamente autónomos en su posicionamiento y guiado: desde luego no tienen piloto, deben ser precisos, y las comunicaciones entre estaciones de tierra y el misil pueden ser "estorbadas" por el enemigo.

Antes de que volasen las misiones Mercury o Gemini, antes de que Kennedy decidiese en mayo de 1961, tras menos de medio año de mandato, enviar un norteamericano a la Luna, ya se había creado la NASA, que organizó en el verano de 1960 una reunión industrial para definir un proyecto de alunizaje y hacer saber a los posibles contratistas qué esperar. Tras la bofetada soviética en abril de 1961, al ser Yuri Gagarin el primer humano puesto en órbita, los estadounidenses buscaron algo en lo que poder ser primeros, y encontraron el proyecto Apolo. Y desde el principio los consejeros del presidente tuvieron claro una cosa, antes que las razones técnicas o científicas era preciso "vender" el proyecto como la empresa humana de la conquista del espacio pues

es el hombre en el espacio, no simplemente las máquinas, lo que captura la imaginación del mundo


En el proyecto Apolo se iba a dar una situación atípica, distinta al resto de proyectos, pues una parte central del mismo se iba a adjudicar, sin concurso (diriamos que "a dedo"), al Laboratorio de Instrumentación (IL) del MIT, no para la fabricación de componentes, pero si para el diseño y gestión del sistema de guía. El IL (más concretamente 3 "lumbreras", Milt Trageser, Hal Laning y Richard Battin ) había trabajado en una idea de sonda a Marte, plasmada en un informe de 1959 en 5 tomos. Además el MIT había realizado la gestión de sistemas para el sistema de guiado e integración del mismo en el Polaris. Una afortunada visita al MIT, en el momento justo, de un responsable de la NASA facilitó una primera idea de diseño del Apolo, con


Un ordenador digital de propósito general
Un sextante espacial
Una unidad de guía inercial
Una consola para los astronautas
Otra electrónica de soporte


El "ordenador digital de propósito general" es coprotagonista del libro, aunque aparece tarde, tras un tercio del metraje. Antes han aparecido varios ordenadores analógicos. Pero el digital hace uso de transistores, y enseguida también de los primeros circuitos integrados que aparecen con la decada de los 60. Las responsabilidades iniciales previstas para el AGC, Apollo Guidance Computer, se van a ir incrementando con el paso del tiempo, llegando a la decisión de usarle también como piloto automático, lo que implicaba una práctica interacción directa con todos los componentes del sistema. Esta ampliación de responsabilidad es posible gracias al carácter "de propósito general", frente a un diseño a la medida como otros diseños digitales y todos los analógicos. Y también gracias al uso de circuitos integrados en vez de transistores individuales, con aumento de capacidad y reducción de tamaño y consumo. En esta evolución fue importante la decisión de hacer una primera versión "bloque I" y una posterior evolución "bloque II".


El reto del hardware, su diseño, y alcanzar la necesaria fiabilidad en compartimento estanco sin posibilidad de reparación tuvo su máximo pico alrededor de 1965, con más de 600 ingenieros trabajando en el IL. La producción del bloque I acabó en el otoño de 1966. La producción del bloque II llegó hasta el verano de 1969. La memoria del computador del bloque II era de 36k palabras de 16 bits para los programas y una memoria borrable de 2k, con un reloj a 1024 kHz

Pero hoy no voy a llegar a la Luna ...

En los cinco años desde la adjudicación del contrato hasta la preparación para los primeros vuelos del Apolo, el sistema de guía y navegación maduró desde una idea básica, a través de prototipos de laboratorio, hasta hardware de vuelo manufacturado de alta cualificación. A pesar de su pequeño tamaño y modesta capacidad de proceso, el AGC era tecnología punta, incorporando lo último en control de procesos, fiabilidad, diseño de circuitos, y empaquetamiento. En lo que se convertiría en una pauta familiar en el mundo de los ordenadores, la capacidad de memoria se dobló una, y otra y otra vez. Al mismo tiempo, la presencia del computador se entremezcló con los métodos de gestión de sistemas, especialmente cuando el proyecto se volvió más complejo y acumuló retrasos. Los dispositivos electrónicos en la cabina fueron eliminados gradualmente para ahorrar tiempo, peso o coste, y migrados al flexible computador o a los cerebros de los astronautas. Pero según iban saliendo los computadores del Bloque II de las cadenas de producción, la NASA y el IL empezaban a reconocer la tensión que habían añadido a una nueva parte del proyecto, una escasamente contemplada cuando Apolo comenzó: el software.