Sistemas operativos en tiempo real: una pieza clave para el software de vuelo de los CubeSats

Carlos Duarte

Fecha: 2023-08-03


Un sistema operativo en tiempo real (RTOS, por sus siglas en inglés) es un tipo de software que se encarga de gestionar los recursos de hardware y software de una computadora, así como  de garantizar que las tareas se ejecuten dentro de un lapso de tiempo determinado. Esto significa que el RTOS debe ser capaz de responder a eventos externos o internos en un plazo máximo establecido, así como asignar prioridades a las diferentes tareas para evitar que se produzcan retrasos o bloqueos.

 

Un RTOS es necesario en las aplicaciones CubeSat ya que estos satélites tienen que realizar funciones críticas en un entorno hostil y dinámico, donde pueden ocurrir situaciones imprevistas o emergencias, a las que se tiene que responder con rapidez. Por ejemplo, un CubeSat puede tener que cambiar su orientación para apuntar a una estación terrestre, o activar un experimento científico, o desplegar un panel solar, o reaccionar ante una colisión con otro objeto espacial. Todas estas acciones requieren que el software de vuelo del CubeSat sea capaz de controlar los sensores, los actuadores, los subsistemas y las comunicaciones del satélite de forma rápida y precisa. Un RTOS típico tiene las siguientes características:

 

- Es multitarea, es decir, puede ejecutar varias tareas de forma concurrente y asignarles diferentes prioridades.

 

- Es un árbitro de las tareas, es decir, puede interrumpir una tarea de baja prioridad para atender una de alta prioridad cuando se requiera, por ejemplo por la ocurrencia de un evento determinado..

 

- Es escalable, es decir, se puede adaptar a las necesidades de cada aplicación y optimizar el uso de los recursos del sistema.

 

- Es portable, es decir, se puede ejecutar en diferentes plataformas y arquitecturas de hardware.

 

Así mismo, Las funciones principales de un RTOS son:

 

- Planificar las tareas según su prioridad, tiempo de llegada y requisitos de sincronización.

 

- Asignar los recursos compartidos (memoria, periféricos, etc.) a las tareas que los solicitan, evitando conflictos y bloqueos.

 

- Proporcionar mecanismos de comunicación e intercambio de datos entre tareas, como colas, semáforos, eventos, etc.

 

- Gestionar las interrupciones y los temporizadores, que pueden activar o suspender tareas según las necesidades del sistema.

 

- Monitorizar el estado y el rendimiento del sistema, detectando posibles errores o anomalías.

 

Un ejemplo de RTOS empleado ampliamente en aplicaciones CubeSat es el FreeRTOS. Este sistema operativo es de código abierto y está diseñado para ser ligero, portable y escalable. El FreeRTOS permite a los desarrolladores crear tareas concurrentes que se ejecutan según su prioridad y se comunican mediante colas, semáforos y eventos. El FreeRTOS también ofrece funciones de gestión de memoria, temporización y depuración. El FreeRTOS es compatible con una gran variedad de arquitecturas de microcontroladores, lo que facilita su integración en proyectos CubeSat.

 

¿Cómo desarrollo el software de vuelo?

 

El software de vuelo de un CubeSat se construye sobre el RTOS, que proporciona una interfaz entre el hardware y las aplicaciones. El RTOS se encarga de inicializar la computadora de vuelo, configurar los periféricos, crear las tareas y los procesos, gestionar la memoria y el almacenamiento, administrar las interrupciones y los temporizadores, y ofrecer servicios de comunicación e interfaz de usuario. El software de vuelo lo constituyen las aplicaciones que se ejecutan sobre el RTOS y que realizan las funciones específicas para que el  CubeSat logre su misión. Algunas de estas funciones, son::

 

- Vigilar que todos los subsistemas estén operando correctamente y tomar acciones cuando exista una anomalía. Por ejemplo, si el software detecta una disminución en los voltajes de las baterías o una alza en las temperaturas, puede enviar comandos para reducir el consumo de energía o activar un sistema de enfriamiento.

 

- Realizar maniobras para modificar la trayectoria o la orientación del CubeSat. Por ejemplo, el software puede usar propulsores o ruedas de reacción para cambiar la orbita o la orientación del satélite.

 

- Monitorear el receptor de radio para recibir comandos del exterior. El software debe validar los comandos recibidos y ejecutarlos según su prioridad y su tiempo de ejecución. Por ejemplo, si se recibe un comando para ajustar la órbita del satélite, el software debe activar el sistema de propulsión.

 

- Transmitir información sobre la salud del CubeSat. El software debe recopilar los datos provenientes de los sensores y enviarlos al centro de control mediante el transmisor de radio. Estos datos pueden incluir información sobre el estado de los subsistemas, las mediciones ambientales, los errores detectados, etc.

 

- Controlar la carga útil. El software debe activar o desactivar la carga útil según la misión del CubeSat y procesar o almacenar los datos que genera. Por ejemplo, si la carga útil es una cámara, el software debe tomar fotografías según un plan preestablecido y guardarlas en una memoria o enviarlas al centro de control.

 

¿Cómo desarrollo el software de vuelo?

 

Para desarrollar el software de vuelo, se necesita un Ambiente Integrado de Desarrollo (IDE por sus siglas en inglés), que es un conjunto de herramientas que facilitan la creación, la depuración y la prueba del código fuente. El IDE suele incluir un editor de texto, un compilador, un depurador, un simulador y otros componentes. El compilador es el programa que traduce el código fuente escrito en un lenguaje de programación (como C o C++) a un código binario que puede ser ejecutado por el procesador. El depurador es el programa que permite detectar y corregir errores en el código fuente o en el código binario. El simulador es el programa que permite emular el comportamiento del hardware y del software del CubeSat en un ordenador.

 

Existen varios IDEs que se emplean para desarrollar software de vuelo para CubeSats, como Eclipse, Code Composer Studio, Keil MDK, etc. Estos IDEs suelen estar adaptados al tipo de procesador y al RTOS que se utiliza. Algunos ejemplos de procesadores y RTOS empleados en CubeSats son:

 

- GomSpace NanoMind A712D: Es una computadora de vuelo desarrollada por la empresa danesa GomSpace, con un procesador ARM7 RISC. El RTOS que utiliza es FreeRTOS, un RTOS de código abierto y ampliamente utilizado en sistemas embebidos.

 

- ISIS iOBC: Es una computadora de vuelo desarrollada por la empresa holandesa ISISpace. Tiene un procesador ARM9 a 400 MHz de velocidad.. El RTOS que utiliza es Kubos Linux, una distribución de Linux optimizada para sistemas embebidos.

 

Recomendaciones sobre mejores prácticas para desarrollar software de vuelo para CubeSats:

 

El software de vuelo es uno de los elementos más críticos de una misión CubeSat. Por lo tanto debe desarrollarse con mucho cuidado para garantizar que realice todas las funciones para lograr el éxito de la misión. Algunas recomendaciones para hacer esto, son:

 

- Elegir un RTOS adecuado al tipo y al tamaño del CubeSat, teniendo en cuenta los requisitos de tiempo de respuesta, capacidad de  memoria, consumo de energía, tipos de periféricos y funcionalidad, entre otros.

 

- Seguir un proceso de desarrollo estructurado apegado a la ingeniería de sistemas que incluya fases de análisis, diseño, implementación, prueba y validación, que permita validar y verificar el software en cada etapa, desde el diseño hasta la integración y el lanzamiento.

 

- Aplicar técnicas de ingeniería de software, como la modularidad, la abstracción, la documentación, el control de versiones y las pruebas unitarias y de sistema.

 

- Usar herramientas de simulación y emulación para probar el software en condiciones lo más cercanas posibles a las reales, y detectar posibles fallos o mejoras.

 

- Realizar pruebas en hardware real, usando prototipos o maquetas del CubeSat, para comprobar el funcionamiento del software con los sensores, los actuadores y los subsistemas.

 

- Seguir las normas y los estándares internacionales para el desarrollo de software espacial, como el ECSS-E-ST-40C de la Agencia Espacial Europea o el NASA-STD-8739.8 de la NASA.

 

El software de vuelo de un CubeSat es una pieza clave para el éxito de una misión espacial. No basta con elegir un sistema operativo en tiempo real adecuado, sino que también hay que diseñar, implementar y depurar el código fuente que controla las funciones del satélite. Para ello, se requiere seguir una metodología de ingeniería de sistemas que garantice la calidad, la seguridad y la fiabilidad del software. Pero sobre todo, se necesita probar, verificar y validar el software de vuelo antes de lanzar el cubesat al espacio, para evitar fallos o anomalías que puedan comprometer la misión. Así que ya lo sabes. Ahora ya puedes empezar a desarrollar tu misión CubeSat.



Etiquetas: Un sistema operativo en tiempo real (RTOS),CubeSat,software de vuelo,Ambiente Integrado de Desarrollo (IDE),multitarea,prioridades de tareas,GomSpace NanoMind A712D,FreeRTOS,ISIS iOBC,Kubos Linux,Ingeniería de sistemas,desarrollo estructurado,pruebas y validación,normas espaciales,modularidad,abstracción,documentación,simulación y emulación,fiabilidad del software.

Revista Hacia El Espacio de divulgación de la ciencia y tecnología espacial de la Agencia Espacial Mexicana.