Javier Pastor

Lagesta lograda por SpaceX y la NASA hace unos díasrepresenta un singular punto de inflexión en una carrera espacial en el que por primera vezuna empresa privada ha logrado enviar dos seres humanos al espacio.

Ese logro técnico es destacable por muchos aspectos, pero también por el software que gobierna las naves y los cohetes de SpaceX. Ahora sabemos que por ejemploel Falcon 9 está gobernado por Linux, cuenta con microcontroladores PowerPC y con unsistema de triple redundanciapara la toma de decisiones.

Redundancia triple para evitar problemas

Los propios responsables de SpaceX hablaban de esos elementos software enuna conferencia sorpresadurante la Game Developers Conference de 2015, y uno de los asistentestomó notasy tiempo despuéscompartía esos interesantes detalles.

Una de las claves del sistema es elsistema de triple redundanciapara evitar cualquier tipo de fallo y dirigir las decisiones que va tomando el software a la hora de controlar por ejemplo el cohete Falcon 9.

¿Por qué esa triple redundancia?Entre otras cosas por la radiación solar, que puede causar que los bits cambien de 0 a 1 o viceversa sin más. Con esa redundancia es posible detectar esas posibles situaciones. Las misiones suborbitales están poco expuestas a esta radiación, pero misiones en órbita o en “espacio profundo” incluso utilizan componentes físicos con aislantes específicos para evitar la exposición a esa radiación.

Este concepto de triple redundancia del que hablábamoshace usode tres sistemas idénticos que procesan la información y llegan a un resultado. Teóricamente ese resultado “se vota” por mayoría, de forma que solo se produce un resultado definitivo y que, además,si uno de los tres falla los otros dos pueden “enmascarar” ese resultado diferente.

Es un tipo de sistema muy aplicado en sistemas satelitares, pero también se usa en losconocidos módulos de memoria RAM ECC(Error-Correcting Code) que detectan y corrigen a mayor parte de los tipos de corrupción de datos en esas memorias.

En el Falcon 9 esa triple redundancia funciona de forma distinta. El Falcon 9 dispone de tres procesadores dual-core x86 para sus tres computadoras de vuelo, y en cada uno de esos núcleos se ejecuta una instancia de Linux. En cada cálculo o decisión a tomar se comparan los resultados de ambos núcleos, ysi hay alguna inconsistencia, la cadena de entrada se considera como no útily no se envía ningún comando al cohete.

Si coincide,se envía ese comando a los microcontroladoresque hay en el cohete (que se ejecutan sobre procesadores PowerPC) y que controlan por ejemplo los motores o las aletas de las rejillas.

Cada microcontrolador recibe tres comandos, y si todos ellos coinciden se ejecuta el comando, perosi uno de los tres no lo hace, se sigue el curso de acción que marcan los otros dos. Como explicaba ese usuario, aunque la triple redundancia debería estar siempre activa, el Falcon 9 es capaz de cumplir su misión con uno solo de los tres sistemas.

Elsoftware de la computadora de vuelo está escrito en C/C++y se ejecuta en un entorno x86 similar al que utiliza un PC convencional. Para probar este software los ingenieros simulan su comportamiento de forma análoga acomo se usarían en una misión real, y de hecho cortan la energía de una de las computadoras de vuelo al azar para comprobar que a pesar de ello el sistema sigue comportándose de forma precisa.

Linux, C++ y pantallas táctiles para controlarlo todo

Los ingenieros de SpaceX participaron además enuna sesión AMA(Ask Me Anything) en Reddit en 2013, y allí dieronalgunos datos muy interesantesde lossistemas software en los que están basadaslas misiones espaciales de SpaceX.

En SpaceX hay diversos grupos para diversos ámbitos, pero por ejemploel equipo de software de vuelo contaba con 35 personas, mientras que hay un equipo dedicado a desarrollar los sistemas que usan todos los empleados de SpaceX a nivel empresarial o el equipo de software de la estación espacial.

Las plataformas y lenguajes de programación varían según el equipo al que están destinadas, pero entre ellas destacan C#,C++ (todo el software del cohete y la nave están desarrollados con este lenguaje, cuya ventaja sobre C,destacan, es el encapsulado), Python o JavaScript. anto la cápsula Dragon como la Falcon 9,explicaban, “usan una versión de Linux” en sus sistemas de control de propulsión y navegación.

Los sistemas de la estación de control en tierrahacen “uso extensivo de LabVIEW”(con el control de versiones [a cargo](flight strings) de Subversion), un software de ingenería de sistemas muy conocido del que hay no obstantecríticas clarasque debatieron por ejemplo varios usuarios que lo habían utilizado de forma intensiva en sus trabajos.

En aquel momento el mayor proyecto de código de SpaceX tenía “unas 200.000 líneas de código” y uno de los focos de su trabajo en ese momento era Grasshopper, el proyecto que permitía no solo lanzar los cohetes, sino hacerlos reutilizables para que volvieran sanos y salvos a casa. Años más tarde Grasshopper ha demostrado ser una de las claves del éxito de SpaceX de cara a la futura rentabilidad económica de esta empresa.

The evolution of crew control panel over the decadesPic 1 : ApolloPic 2: Space ShuttlePic 3: SpaceX’s Dragon#SpaceX#LaunchAmerica#NASApic.twitter.com/q80rdGVqXC

Otra de los datos interesantes de todo este proyecto es el que se refiere a esos nuevos controles para la Crew Dragon que se alejan totalmente de los paneles de mandos de las misiones espaciales de hace años ypresentan toda la información y los parámetros en una pantalla táctil triple.

Esa pantalla táctil está controlada por unainterfaz creada con JavaScript y que hace uso del proyecto Open Source Chromiumpara mostrar la información y permitir esa interacción táctil con todos los controles. Aunque la mayoría de las maniobras que realiza la Crew Dragon están pensadas para realizarse de forma autónoma, esa pantalla ofrece la alternativa en caso de que tuvieran que tomar control manual.