Hierarchical State Machines Persevere on Mars

share on: 
Share on reddit
Share on linkedin
Share on twitter
Originally published on:  
2021-05-25
Last updated on: 
NASA Perseverance rover on Mars
Table of Contents
Tags:   

Steve Scandore, the technical lead of the Mars 2020 FSW, talks about the Mars Perseverance Software in his keynote address at the recent Embedded Online Conference 2021

Hierarchical State Machines in Perseverance Flight Software

Among others, Steve explains the role of hierarchical state machines in the Perseverance rover flight software, especially in the “surface component” responsible for traversing the Mars surface. This mission-critical component uses roughly 40 hierarchical state machines.

Here, Steve references the presentation “Modern Embedded Software Goes Beyond the RTOS” by Dr. Samek of Quantum Leaps.

In the live Q&A session following his talk, Steve explains further types of state machines used in the Perseverance mission and why “Samek’s hierarchical state machines” lend themselves particularly well to the event-driven architecture used inside the flight software.

Discussion

One Response

  1. I’d like to clarify a few things: The latest Perseverance Mars mission most likely does NOT use the whole QP framework. My understanding is that they only use the hierarchical state machine implementation (the QEP event-processor component of QP).

    NASA JPL has a long standing tradition in those missions going back to Pathfinder from 1997, where they started with VxWorks. Also, the general event-driven software architecture used in ALL those missions comes from JPL and is nicely summarized in a conference paper “Managing Concurrency in Complex Embedded Systems” by Dr. David Cummings:

    https://www.state-machine.com/doc/Cummings2006.pdf

    But it is remarkable that the original software architecture used by JPL has all the characteristics of the event-driven “Active Object” design pattern. Therefore, hierarchical state machines are such a good match.

    Here are also some other references to NASA JPL publications, where they describe their use of hierarchical state machines from the “Practical Statechars in C/C++” books:

    http://ml.jpl.nasa.gov/papers/wagstaff/wagstaff-protocol-statecharts-08.pdf

    http://ml.jpl.nasa.gov/papers/wagstaff/wagstaff-autocoding-08.pdf

Leave a Reply