Ad image
Ad image

Así es el software que obra maravillas en el Falcon 9 de SpaceX: Linux y un sistema de redundancia triple para evitar fallos

SCALDIA
SCALDIA
Ad image

La gesta lograda por SpaceX y la NASA hace unos días representa un singular punto de inflexión en una carrera espacial en el que por primera vez una 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 ejemplo el Falcon 9 está gobernado por Linux, cuenta con microcontroladores PowerPC y con un sistema de triple redundancia para la toma de decisiones.

Redundancia triple para evitar problemas

Los propios responsables de SpaceX hablaban de esos elementos software en una conferencia sorpresa durante la Game Developers Conference de 2015, y uno de los asistentes tomó notas y tiempo después compartía esos interesantes detalles.

Una de las claves del sistema es el sistema de triple redundancia para 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ábamos hace uso de 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 los conocidos 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, y si hay alguna inconsistencia, la cadena de entrada se considera como no útil y no se envía ningún comando al cohete.

Spacex3

Si coincide, se envía ese comando a los microcontroladores que 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, pero si 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.

El software 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 en una sesión AMA (Ask Me Anything) en Reddit en 2013, y allí dieron algunos datos muy interesantes de los sistemas software en los que están basadas las misiones espaciales de SpaceX.

En SpaceX hay diversos grupos para diversos ámbitos, pero por ejemplo el 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 tierra hacen «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 obstante críticas claras que 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..

https://twitter.com/viralpivi/status/1266807729143889921

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 y presentan toda la información y los parámetros en una pantalla táctil triple.

Esa pantalla táctil está controlada por una interfaz creada con JavaScript y que hace uso del proyecto Open Source Chromium para 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.

ETIQUETADO:
Comparte este artículo
Ad image