En 1977 la NASA envió al espacio una sonda para recoger datos interestelares. Con la idea de que la misión durara unos 5 años, lo cierto es que a día hoy sigue enviando señales.
Funcionamiento de la Voyager 1
Una sonda de mas de media tonelada fue lanzada al espacio con un impulso inicial, calculando en su salida que pasaría cerca de la orbita gravitacional de otros planetas del sistema solar, y se desplazaría en línea recta a velocidad constante ya que sin fricción, apenas algo contra lo que chocar y que la gravedad de otros cuerpos celestes queda lejos, iría palante como una campeona. La Voyager 1 es imparable ya que teniendo en cuenta sus medidas en comparación con el tamaño del universo, lo mismo pasan miles de años antes de que se tope con algo de material espacial. Aunque deje de enviar señales seguirá viajando en la misma dirección mucho más tiempo del que nos imaginamos.
Como curiosidad decir que la sonda incorpora un disco de oro (realmente es de cobre recubierto de oro) donde un equipo presidido por Carl Sagan grabó imágenes, saludos, sonidos, la estructura del ADN y unas instrucciones sobre como reproducir el cacharro por si algún alien lo encuentra algún día. Ya sabéis, si de repente viene a exterminarnos una colonia alienígena será porque en los 70 mandamos al espacio un trozo de hierro con información precisa sobre lo que somos, dónde estamos y unas cuantas canciones de El Fary.
Comunicación
Es importante remarcar cómo carajo llega información desde ese aparato a miles de millones de kilómetros de distancia.
Operando en frecuencias muy altas, envía y recibe señales de la tierra gracias a un sistema llamado DSN (deep space network) que consiste en varias antenas gigantes colocadas estratégicamente en la tierra para garantizar que alguna recibirá la información que envíe la sonda. En Madrid tenemos una de ellas.
Aprovechando las cualidad especiales que ofrece el vacío espacial como medio de transmisión, se pueden recibir y enviar señales de radio que viajan a la velocidad de la luz en frecuencias muy elevadas y muy direccionales. A la distancia que está la sonda actualmente, cuando enviamos algo allí tarda en llegar poco menos de un día. El problema viene cuando la sonda dice de enviarnos algo ya que necesita energía para hacerlo y cada vez tiene menos.
El problema de la energía
La sonda se lanzó con la esperanza de que durara unos 5 años en órbita. Se ve que fueron muy pesimistas porque ya lleva unos cuantos más y los que le esperan.
La forma que tiene el aparato de obtener la energía necesaria para operar todos los aparatos de a bordo que captura, procesan, envían y reciben datos y señales es mediante un complejo generador termoeléctrico de radioisótopos que sencillamente potencia la sonda conforme se desintegra el plutonio que contiene. Conforme ha ido pasando el tiempo este proceso ha suministrado cada vez menos energía ya que es finito y lo que se ha hecho es mandar señales a la sonda para que vaya desconectando aparatos que consumen energía y no son imprescindibles para la misión.
A día de hoy la voyager1 está operando con lo básico y no se espera que dure mucho más de 10 años. Algunos científicos dicen que para el año que viene ya no será posible recibir señales o enviar comandos a la sonda.
El problema con el código
Bueno pero ¿Para qué carajo cuento todo esto si estamos en el foro DEV y aquí somos todos unos picateclas empedernidos que odiamos a los QA y compramos teclados nuevos por no limpiar el anterior que se ha llenado de gusanitos naranjas? Pues porque dentro de esta amalgama de las telecomunicaciones, hay código.
Concretamente la Voyager1 cuenta con herramientas programas en ensamblador y Fortran.
Parece ser que hace 1 mes se jodió uno de las memorias de 8K de uno de los procesadores de la sonda y por esto está enviando errores a cascoporro. La forma de repararlo es "sencillamente" enviar de vuelta a la sonda las instrucciones necesarias para modificar el código del software que trabaja con los datos y decirle que ignore esa porción dañada de la memoria pero eso a su vez implica reescribir parte del código para que pueda trabajar adecuadamente.
Fortran es un lenguaje que a día de hoy se sigue utilizando en ámbitos científicos y de ingeniería (sobre todo supercomputación) pero estamos hablando de que el software de la Voyager 1, aparte de en ensamblador de bajo nivel, está embebido en Fortran77, un lenguaje de programación de los 50 con todas las limitaciones que ello implica.
La mayoría de la gente que trabajó en el código de aquél proyecto ya se jubiló, murió o está muy mayor y no parece haber mucha gente dispuesta a continuar su legado. Los que trabajaron en la arquitectura del hardware más de lo mismo. La documentación es casi inexistente con respecto a las peculiaridad de una sonda interestelar que viaja a 17km/s y ahora mismo la NASA se encuentra buscando documentación física de todo aquello pidiendo a las familias de los antiguos ingenieros que busquen por sus garajes para ver si son capaces de arrojar algo de luz al proceso mientras recopilan, limpian y digitalizan todo lo que encuentran por los sótanos de sus instalaciones.
Imagínate programar en un sheet donde utilizar 2 variables distintas es abusar de los 16KB de memoria CMOS disponibles, sin apenas documentación al respecto, sin posibilidades de reproducir un entorno de pruebas en la tierra y teniendo que afinar el tiro muchísimo ya que Fortran 77 podría producir un error catastrófico de ejecución por colocar mal un solo carácter y esto podría dar lugar a perder por completo la comunicación. Y súmale que todo eso hay que enviarlo a través de una señal que viajará por el espacio durante horas y será recibida, modulada e integrada por un sistema en horas bajas de hace casi media década.
Desde luego es un entorno hostil en el que trabajar.
Y luego muchos se quejan si se encuentran un programa basado en COBOL