miércoles, 4 de julio de 2018

El error de código de la NASA que costó 150 millones de dólares

22 de julio de 1962. Todo estaba listo para que la NASA lanzara la primera sonda del programa Mariner. Su objetivo era llevar a cabo el primer sobrevuelo no lunar de la historia, con una visita al planeta Venus. El lanzamiento se desarrolló sin incidentes, pero el cohete comenzó a responder de forma errática a los comandos enviados por los sistemas de guía, y el oficial de seguridad no tuvo más opción que ordenar su autodestrucción 294.5 segundos después. ¿Qué fue lo que sucedió? Alguien escribió mal un símbolo matemático en una transcripción, y terminó convertido en un bug de software.

Vamos a iniciar este artículo con una pequeña mala noticia: El lanzamiento del Telescopio Espacial James Webb ha sido demorado otra vez. Una junta de revisión analizó la situación actual del telescopio, y necesitará como mínimo tres años más de trabajo… al igual que una inyección de 800 millones de dólares en su presupuesto. ¿Qué nos confirma esto? Ir al espacio es difícil, y es caro. Ambos factores obligan a los expertos a ser conservadores, o de lo contrario, un simple error podría provocar pérdidas aún mayores. La NASA aprendió esto por las malas en varias oportunidades. Una de las primeras, fue Mariner 1:

El representante original del programa Mariner tuvo un costo de 18.5 millones de dólares en 1962, que ajustados a inflación lo colocan por arriba de los 150 millones de dólares. En la mañana del 22 de julio, Mariner 1 despegó con rumbo a Venus para realizar el primer flyby no lunar de la historia, y obtener datos sobre su atmósfera y temperatura. El rendimiento del cohete Atlas-Agena era correcto… pero no se podía decir lo mismo de su comportamiento. Para mantener la trayectoria, el Mariner 1 utilizaba dos sistemas, uno que medía su velocidad con mediciones de desplazamiento Doppler provenientes de una instalación en tierra, y otro de seguimiento que medía distancia y ángulo relativos a una antena instalada en la zona de lanzamiento. El primer sistema experimentó una falla, y aunque el segundo tenía la capacidad técnica para contener el problema, la naturaleza del error hizo que el vuelo fuera demasiado errático. ¿Por qué?
El código escrito para interpretar tanto la distancia como el ángulo tenía un error: Faltaba una barra horizontal en la parte superior de un símbolo, un vinculum por así decirlo. El rol de la barra era tomar el valor promedio de la primera derivada que marca velocidad (el punto bajo la línea). Al «suavizar» el valor de la velocidad, cualquier fluctuación debería ser eliminada, pero con la ausencia de ese vinculum, el ordenador a bordo del cohete comenzó a recibir información errónea, y con cada intento de compensación se convirtió en un carnaval volador. El origen del error es evidente: No había entornos avanzados de programación ni detección automática de errores. La conversión de código escrito a mano o con máquina de escribir a tarjetas perforadas era lenta, tediosa, y costosa. Por suerte, la NASA encontró el error, aplicó las correcciones necesarias, y Mariner 2 logró lo que su hermano no pudo un mes más tarde.

Fuente:
https://www.neoteo.com/el-error-de-codigo-de-la-nasa-que-costo-150-millones-de-dolares/


No hay comentarios: