Listen to this article
|
When NASA’s Ingenuity Mars Helicopter hovered above the Red Planet April 19 on its maiden voyage, the moment was hailed as the first instance of powered, controlled flight on another planet. Figuring out how to fly on Mars, where the air is thin but gravity is about a third of that on Earth, took years of work. Along with the challenge of developing a craft that was up to the task, the mission needed software to make the unprecedented flights possible.
So they turned to F Prime, a reusable, multi-mission flight software framework designed for CubeSats, small spacecraft, and instruments. The program was initially developed in 2013 by a team led by Tim Canham at NASA’s Jet Propulsion Laboratory in Southern California with the aim of creating a low-cost, portable, pliable software architecture option that would allow components written for one application to be reused easily in other applications and run on a range of processors.
In 2017, the team pushed for F Prime to be released as open-source, allowing external collaborators, universities, and the general public to use the framework on their own projects. It is one of hundreds of codes NASA makes available to the public for free, both as open-source or through its software catalog.
“F Prime has enabled a lot of goals we’ve had at JPL to design a truly reusable multi-mission flight architecture with the added bonus of the open-source collaboration and visibility afforded by the Mars Helicopter project,” Canham said. “It’s kind of an open-source victory, because we’re flying an open-source operating system and an open-source flight software framework, and flying commercial parts that you can buy off the shelf, if you wanted to do this yourself someday.” (The helicopter carries a combination of custom-made and off-the-shelf components – many from the world of cell phone technology – including its two cameras.)
Before Ingenuity, F Prime (also written as F’) had already been put through its spacecraft paces, operating successfully aboard the ISS RapidScat scatterometer instrument on the International Space Station since 2014 and JPL’s ASTERIA CubeSat in 2017. Looking forward, F Prime is scheduled to run on projects including NASA’s Lunar Flashlight CubeSat, which will look for surface ice in the Moon’s craters; the agency’s Near-Earth Asteroid Scout CubeSat, which will map an asteroid; and potentially JPL’s Ocean Worlds Life Surveyor instrument, which would help search for water-based life in our solar system.
Related: Complete Coverage of NASA’s Mars 2020 Mission
Aadil Rizvi, flight software lead for Lunar Flashlight and NEA Scout at JPL, said F Prime provides an out-of-the-box solution for several flight software services, such as commanding, telemetry, parameters, and sequencing for the spacecraft. There’s also a sort of “auto-coding” tool that makes F Prime highly portable for use across missions.
“This makes it quite easy to drop in a software component from something like Mars Helicopter into another mission’s flight software such as Lunar Flashlight or make the component available for open-source use by anyone else using F Prime,” Rizvi said. “And it’s pretty cool that a significant portion of software used on the Mars Helicopter is identical to software on another spacecraft going to the Moon, or an asteroid, or sitting on a student’s desk.”
Universities see the benefits of F Prime
Since its open-source debut, F Prime has gradually begun gaining traction as a useful flight software option for university and student projects.
At Georgia Tech, a team has incorporated F Prime in its GT1 CubeSat, aimed to serve as an education exercise that will carry an interactive and automatic amateur radio payload.
“We chose F Prime after evaluating a handful of flight software frameworks, including the option of writing our own from scratch,” said Sterling Peet, Georgia Tech research faculty member and software lead for GT1. “We don’t have the resources to build all this code from scratch, use, and test it to ensure the necessary levels of reliability in-house. But by using F Prime, we can leverage the legacy it has and also contribute our testing and related benefits back to the F Prime community and project.”
A Carnegie Mellon University student-led team chose F Prime to run its Iris Lunar Rover, a tiny robot designed to prove the feasibility of nano-rovers in planetary exploration. “It was a viable option with a direct link to the creators, so we decided to use it ourselves,” said Iris Deputy Program Manager Raewyn Duvall.
F Prime will control the rover while recording data and monitoring its health.
“The fact that it is open-source gave us a wide range of examples to base our own modules and let us use the forum to get quick answers without having to worry about potential support service charges just to get answers to questions we may have had,” Duvall said.
JPL Small Scale Flight Software Group Supervisor Jeff Levison sees university partnerships like the ones with Georgia Tech and Carnegie Mellon as a two-way street: JPL provides world-leading flight systems expertise to budding engineers, and then down the line, those future engineers could end up bringing their talents and a working understanding of F Prime to start a career at JPL.
“F Prime is not an easy architecture to pick up, so a student who manages to master it and create a solid working project clearly has amazing potential for an organization like JPL,” said Carnegie Mellon’s Duvall. “Many of our students working on Iris that learned F Prime have expressed interest in applying to JPL, which I believe proves F Prime’s worth as a recruitment tool.”
Editor’s Note: This article was republished from NASA.
Glenn Edgar says
I think the F-Prime distribution is dated and obsolete. Some of the reasons are as follows.
1. I started out as an embedded programmer, writing code with a processor without a subroutine call. With this background, I am saying that a framework for the Snapdragon processor should include Cloud Technologies. I based my changes on a paper I presented in 2018, https://github.com/NanoDataCenter/nano_data_center/blob/master/presentations/Application%20of%20Redis%20to%20IOT%20Gateway%20Devices%20Final.pptx, which documents my journey.
2. The Rust Language should be used instead of C++. Rust Language will prevent memory leaks. Also, Rust code can be used in the Linux Kernel.
3. A Containerized Architecture Should be used. Rust Containers will have a very small base image size. Container Architecture is very efficient for sharing code.
4. A Event Broker is needed for this system. The Event Broker can be ZeroMq or Redis. ( Redis has a very low memory-foot print). The Event Broker allows Large Applications to be broken down into small applications.
To conclude, I do not like Wind River. However, this architecture may suppliant the architecture on the Rover and other JPL projects. Wind River has most of the pieces in place. However, they need to integrate the Event Broker and promote a micro-service approach using an event broker. In Cloud Systems, many books have been written on this subject.