Optimism is fuel for innovation - Lex Fridman
You can check out the functional video here
You can check out the github repo here
You can check out the project paper here
The aerospace engineering world is a fascinating one. It is ever-evolving and it requires incredibly robust systems to survive, as debugging capabilities for a satellite are almost entirely restricted once it goes up to space. Many software frameworks exist that are built for Space, Weight and Power (SWaP) constrained environments, and I recently fell in love with on : NASA JPL F prime
Lightweight, extremely (I mean, extremely extremely) modular and portable, this framework is used to develop flight software for space embedded systems. It is a Component-based framework, meaning each subsystem behaviour and control is encapsulated into a software Component, which results in this incredibly modular software. Components can be easily swapped, integrated, removed, unit tested and modified without breaking the whole Topology (which is the connected graph of Components). Teams can easily divide and conquer the different Components to be developped as they are independant from each other.
Space missions appreciate components and frameworks that are flight proven (meaning that they have already been tested in space). This adds an extra layer of security to the system being built, as history has proven that, at least once, the hardware or software worked nominally in space. F prime has not only been flight proven, but it has an extensive list of systems it has managed in space, the most notable mentions being:
Mars' Ingenuity Drone was designed to showcase the capabilities of autonomous helicopters for exploring the Martian surface, was developed at NASA JPL. Utilizing Fprime as its primary software, Ingenuity achieved a historic milestone on April 19, 2021, by conducting the first powered and controlled extraterrestrial flight in history. Since then, it has successfully completed 69 flights, marking a significant achievement in the field of Martian exploration. The integration of F’ as its main software emphasizes the framework’s adaptability and reliability in supporting groundbreaking missions.
ISS RapidScat is a scatterometer utilized for measuring near-surface wind direction and speed over the ocean, operated externally on the International Space Station (ISS) from November 2014 to August 2016. The flight software for ISS RapidScat had specific mission requirements, including Digital Interface Bridge commands processing. Additionally, it involved packaging engineering telemetry data from the radar and providing time services to the instrument. This mission marked the inaugural use of Fprime deployment in space, where all flight software components were newly developed for the mission. Notably, it demonstrated the framework’s capability to reuse components consistently without modifying test configurations. For instance, it successfully switched from a software-simulated MIL-STD-1553 Data Bus to a hardware bus by making only a small adjustment to the system’s topology.
Lunar Flashlight and NEAR Scout Lunar Flashlight are two different deep-space 6U CubeSats Missions. The Lunar Flashlight was the first mission to use laser reflectometer to search for water ice deposits on the Moon, and also demonstrate the use of the green propellant ASCENT. The NEAR Scout was selected as a secondary payload on Artemis I and is the first CubeSat to reach an asteroid. Despite the distinct objectives of both missions, a singular Flight Software team undertook the responsibility of delivering the software for both projects. The strategic use of reusable Components played a pivotal role in achieving this dual mission approach, contributing to substantial reductions in costs and development time. The ability to leverage reusable components underscores the flexibility and efficiency afforded by the Fprime framework, fostering streamlined development processes across diverse mission objectives.
MESMO ProjectSo I have always been fascinated by Space, and even more so by embedded software. I started messing around Fprime a while back and decided to try to use it for ground applications. In my mind, if it was good enough for NASA JPL and other space missions, in which SWaP constraints were the problem, it should be more than welcome in ground applications that need a centralized unit of control, such as wearables and medical applications. So I set out to study it's usage for Multiple Embedded Systems Management and Orchestration, hence the name MESMO, in ground applications, with purely ordinary hardware (Arduinos, RaspberryPi's, Cameras, servo motors, Leds, distance sensors, etc.). I even used my MYO Armband, which has been waiting in the box of hardware for 10 years.
So the main objective of this project is to showcase and demonstrate the practical utility of Fprime in ground applications. Therefore, the project centralizes the control of 5 different subsystems, which work independently and are standalone systems. This are :
- Arduino Nano and LEDs simulates a simple subsystem which controls 8 LEDs in patterns, depending on the command it receives through UART.
- Arduino MKR1000 and Distance Sensor acts as a low-level I2C slave sensor. It reads distance measurements from an infrared SHARP sensor and writes it on the data line when requested by the master, which is the Raspberry Pi 4 running the FPrime software.
- Flora GPS Module designed for wearable applications, it provides GPS tracking and location data. It constantly outputs data in NMEA format (basically ASCII with a specifiy structure). It communicates through UART
- Arduino Mega and Servo Arm controls 4 servo motors mounted as a Servo arm. It offers a versatile control over their position. It communicates through UART.
- MYO Armband this nice little gadget is 10 years old. It is a wearable gesture control device that translates muscle movements and electrical signals from the forearm into digital commands. It uses electromyography (i.e. MYO) sensors to detect muscle activity and recognize hand gestures and rotations. It communicates through Bluetooth to a Python script running on the Raspberry Pi 4. This script then interfaces through TCP with the core FPrime software.
- RaspberryPi Camera compact and versatile imaging module designed for Raspberry Pis. Similar to the MYO, the camera is controlled by a Python script, and then the script interfaces through TCP with the FPrime software.
All of this subsystems are standalone modules. Meaning they can be independently used by opening a serial or ip interface with a computer (such as Putty). The MESMO Project centralizes all this subsystems by connecting them to the main Raspberry Pi 4, which is the core hardware of the system, running the main FPrime software. It monitors, diagnostics and forwards telecommands to each subsystem. This can be visualized and executed through the Ground Data Segment (GDS) that the framework offers, which is shown below. Inter-subsystem communication is also posible, as shown in the video, where the MYO gesture telemetry is processed and forward as commands to the Arduino Mega to control the upper 2 servo motors with gestures :)
You can check out the functional video here
You can check out the github repo here
You can check out the project paper here
I had a lot of fun with this framework and this project in general, I highly recommend anyone to try it out, you will learn a lot. Please reach out if you have any questions or suggestions ;)
Take care
Joaquim Silveira
Comments
Please log in or sign up to comment.