Jul 012015
Curiosity is one of the most ambitious and successful NASA missions. It is on Mars now. But not everyone knows that the generated code has been part of Curiosity’s Rover flight software since launch, and continues to run on board today. Code generated from state chart diagram is used for: auto-maneuver (Cruise phase), Spacecraft Modes (Configures the spacecraft), Launch mode, Cruise mode, entry, descent, landing, and rover mode.
Advantages
- Code and documentation are always in sync
- More precise diagrams
- Easier to accommodate changes late in the game
- Encourages communication between systems, flight, test
- Forces the developer to consider off-nominal scenarios
Cons
- Could be overkill for list-like state machines
- Drawing diagrams takes time
Areas of use
- Auto-maneuver (Cruise phase):
- High level state machines sending messages to the attitude control system
- Handles retries, high-level off nominal situations
- Turns, acquire attitude knowledge, trajectory correction maneuvers
- ~ 10 state charts intercommunicating
- ~ 100 states
- Spacecraft Modes:
- ~ 50 states
- Configures the spacecraft when booting up
- Re-configures the spacecraft when changing modes
- Launch mode
- Cruise mode
- Entry, descent, and landing mode
- Rover mode
Full presentation:
Source: http://flightsoftware.jhuapl.edu/files/2012/FSW12_Benowitz.pdf, http://mars.nasa.gov/mer/gallery/press/opportunity/20120117a.html