El error de software que convirtió un lanzamiento espacial en carísimos fuegos artificiales
- Se produjo el 4 de junio de 1996
- Debido al fallo el cohete Ariane 5 se destruyó durante su lanzamiento
- El problema estaba en un código matemático en el ordenador de abordo
Un 4 de junio como hoy, hace exactamente 18 años, el majestuoso cohete Ariane 5 fabricado por la Agencia Espacial Europea realizaba su vuelo inaugural.
Los técnicos realizaron la cuenta atrás, se encendieron los propulsores y el gigantesco ingenio espacial comenzó a elevarse por los cielos. A los pocos segundos dio la impresión de estarse inclinando hacia abajo de forma extraña, para un instante después hacer un requiebro descontrolado y explotar el mil pedazos.
Por suerte, el Vuelo 501 del Ariane 5 era el primer vuelo de pruebas y ni siquiera iba tripulado. Diseñado para transportar cargas para ponerlas en órbita, la única tragedia fue económica. Aunque quizá habría que añadir otra en el orgullo de los ingenieros aeroespaciales que habían pasado años diseñándolo.
Desde entonces se han realizado casi un centenar de lanzamientos del Ariane 5 y versiones posteriores, la mayor parte sin problemas, pero en aquel momento fue una situación impactante, así como millonarias las pérdidas en satélites y experimentos que se llevaban a bordo para situar en órbita.
Era sumamente importante descubrir qué había fallado y qué sistemas debían ser revisados, so pena de volver a repetir el fracaso.
Examen del accidente
Un equipo de 'CSI' de la tecnología aeropespacial examinó los restos, esparcidos por la zona de lanzamiento de la Guayana francesa, y la telemetría, grabaciones en vídeo y fotografías de todo el proceso. Se realizó en tiempo récord pues el 16 de julio, apenas seis semanas después, ya estaba disponible un completo informe sobre lo sucedido en la misión.
Según el informe oficial, a los 40 segundos del lanzamiento y 3.700 metros de altitud "la lanzadera Ariane se desvió de su ruta, se partió y explotó". Lo más increíble fue leer el detalle de la descripción del fallo, que convenientemente destilado apuntaba a un "bug" o "comportamiento inesperado" del software que guiaba el cohete.
Técnicamente, la razón se describió como una "excepción de software", un mensaje que muchos han visto en sus "pantallas azules" de Windows cuando el ordenador se cuelga estrepitosamente.
En lenguaje menos técnico es la forma de decir que simplemente "sucedió algo completamente inesperado". Y a pesar de que había dos equipos iguales para evitar problemas (llamados SRI1 y SRI2) lo mismo que hizo fallar a uno hizo fallar al otro en el mismo instante, así que esa aparente seguridad mediante redundancia no sirvió de nada.
Problema de código
El problema había surgido al convertir un número almacenado en algo que los programadores llaman 'coma flotante de 64 bits' en 'entero de 16 bits'.
Los números de 'coma flotante' son otra forma de decir 'números decimales'. Y lo que sucedió fue algo así como si al convertir el valor '32790,789' en un número entero en vez de '32790' el resultado fuera '0', '-500' o un error similar (en los números enteros de 16 bits el valor máximo es 32767).
Curiosamente esa parte del código sólo se usaba durante la preparación para el despegue; una vez en marcha no tenía utilidad. Sin embargo, como otro de esos encadenamientos de causas que suelen provocar estos catastróficos fallos ese código continuaba funcionando durante 40 segundos tras el despegue.
¿Por qué? El código provenía de los anteriores cohetes Ariane 4 donde sí se usaba, así que se mantuvo tal cual. Pero nadie pudo imaginar que ese código pudiera nunca contener otros valores tan diferentes, que fueran a provocar un 'error de excepción de software' ni que eso en combinación con otros sistemas de la nave provocara que los datos de vuelo fueran incorrectos y se convirtieran en órdenes capaces de modificar la trayectoria del cohete, llegando a destrozarlo en pleno vuelo.
El resultado del incidente fueron muchas lecciones aprendidas, unos 500 millones de dólares en carga perdidos y meses de desarrollo desaprovechados... a cambio de unos curiosos y carísimos 'fuegos artificiales'.