Fault Protection
Fault protection is the onboard logic that detects an anomalous condition and puts the vehicle into a state from which the ground can recover it. On a rover the cost of a false trip is measured in sols of lost driving, and the cost of a missed detection is the vehicle [4][2].
Architecture
Section titled “Architecture”The MSL implementation separates detection from action [1]:
| Element | Definition | Count on MSL |
|---|---|---|
| Monitor | software that detects an anomalous situation, sited near the module that knows the device | over 1000 |
| Local response | code inside the same module as the monitor, correcting the issue with a small part of the system | not enumerated |
| System response | code invoked by the fault protection engine, typically calling multiple software modules | 39 |
Source: [1]. Many of the 1000 monitors share code, particularly the thermal ones.
A monitor carries a persistence count, so a single erroneous reading does not provoke a response, and passes through four telemetered states: black for no data yet, green for good data, yellow for erroneous data persisting long enough to run a local response, and red for erroneous data persisting long enough that the system engine must act [1]. Once red, a monitor latches red until it is reset, even if good data arrives.
The engine itself is a once-per-second poll [1]:
- Check which monitors have just turned red.
- Look up the associated responses in a hard-coded table indexed by monitor.
- Choose the highest priority response as the candidate.
- If nothing is running, start it; if a lower priority response is running, abort it first.
- On completion, clear every monitor associated with that response, resetting persistence counts and returning them to black.
The MER engine that preceded it provided arbitration between multiple fault responses in the same way, and MER responses likewise drove the vehicle to a single safe configuration rather than to a per-fault state [1][2].
Latching is what makes polling sound: a monitor that could move between red and green on its own would let a fast transient slip between polls [1]. The cost of polling is that the engine acts on the first highest priority response it examines rather than on the monitor that tripped first chronologically, which is more likely to be the root cause.
Priority is hard-coded and ordered by hardware dependency, so a response that fixes a bus outranks one that fixes a device on that bus [1]. Where explicit priorities tie, the implicit tiebreak is the order responses are examined in the flight software, so predicting which response will run requires knowing both the priority levels and that ordering. Aborts were allowed at any step boundary rather than at designated points, accepting that the full space of abort locations cannot be tested in exchange for reaching a high priority response sooner.
Prioritization and arbitration are not optional on a vehicle that must also keep itself warm and charged: on MER the same shutdown machinery serves the reset, thermal, power and uplink loss responses, so the arbitration rule is what prevents two of them fighting [2].
Two limits exist on the engine’s authority. The ground can disable the response associated with a specific monitor, optionally only in specific spacecraft configurations, but cannot disable a response outright [1]. Responses can dead-end themselves after running a set number of times, and only a ground command undoes it.
Entry conditions and the safe state
Section titled “Entry conditions and the safe state”MER surface fault protection was shaped by the solar power system: the rovers had to maintain thermal stability and energy balance autonomously between the once-per-sol command opportunities [2]. Arrays supplied about 900 Wh per sol at the start of the mission. Autonomous shutdown puts the CPU to sleep when no communication window is active and the solar array cannot support the load; wakeup comes from the alarm clock in the always-powered FPGA or from solar wakeup, declared by the battery control boards after array current exceeds 2.0 A for more than 10 minutes and at least 16 hours have passed since the last solar wakeup [2]. Responses to flight software resets, thermal faults, power faults and loss of uplink all use autonomous shutdown to reach a thermally safe, power safe, communicative state, and the flight software arbitrates between conflicting responses: a low battery event shuts the rover down immediately, and if the operations team has still not regained control after several days the uplink loss response also begins executing UHF windows.
Curiosity’s safe mode is a scheduled communication configuration rather than a quiescent one, and the schedule is regenerated on the ground rather than computed onboard [3]. In safe mode the rover ignores its nominal communication schedule and follows system fault protection windows, a preset schedule specifying the antenna, telecommunication configuration and solar time of each opportunity. X-band windows are receive-only through the low gain antenna, which supports far lower uplink rates than the 2000 bps available on the high gain antenna: the safe mode configuration uses 7.8125 bps, chosen because it works with corrupted mechanism position knowledge [3]. UHF windows through the Mars relay orbiters are the only source of actionable telemetry and carry the beep that tells the ground the rover is in safe mode at all.
What safing costs
Section titled “What safing costs”Safe mode on Curiosity is an energy problem because the rover is power-negative whenever the prime rover compute element is awake; the MMRTG output is below the collective load, so the state of charge only rises while asleep [3]. The requirement is that state of charge increase over any 24 hour period.
| Epoch | Safe mode communication per sol | State of charge gain per sol |
|---|---|---|
| At landing | 9 Martian hours | 22 percent |
| As of 2023 | 6.6 hours | 5.5 percent |
Source: [3]. The window schedule has been revised repeatedly across the mission, driven by changing uplink strategies, Mars seasons and the declining MMRTG output.
Recovery time is the other cost. On MER, anomaly recovery consumed less than 5 percent of surface time, about 30 sols out of 700 per vehicle, which the authors attribute to the same operational design that lets a driving error be recovered in a single day [4]. The escalation ladder runs from replanning the intended motion, through a recovery plan whose only objective is to collect data, to standing up an anomaly team for a multi-sol investigation.
On Curiosity, the sol 200 anomaly cost 16 hours from first notification to recovery of the shutdown capability, achieved by sending hardware commands to swap to the backup rover compute element; the rover had not entered safe mode autonomously because a hang prevented it, and the safe mode beep arrived only after ground intervention [3]. Perseverance lost three sols to a flight software fatal on sol 390 during the Rapid Traverse Campaign: the fatal put the rover in safe mode on the first sol of a three-sol weekend plan, precluding the sol 391 and 392 drives, with sol 393 spent on recovery and sol 394 on acquiring the imagery needed to plan the next drive [8].
Not every fault reaches the engine. On MER the ordinary case is a sequence that did not produce the intended result, which is handled by replanning the motion in the next tactical plan rather than by fault protection at all; the anomaly ladder only escalates when the analysis suggests a persistent component problem [4]. Tactical plans commonly cover one to three days, so an anomaly that stops execution costs at minimum the remainder of that plan plus a recovery plan whose only purpose is data collection.
Mobility faults specifically
Section titled “Mobility faults specifically”Curiosity’s drive faults are threshold-plus-persistence tests on quantities that visual odometry supplies. Excessive slip uses a slow limit with a persistence number, faulting when the limit is exceeded on that many contiguous updates [5]. Visual odometry convergence failures are counted against a configurable ceiling; on sol 2434 the ceiling was set to 10 in anticipation of feature-poor terrain, and the eleventh failure set a mobility goal error that stopped the drive 2.82 m short of predicted odometry. Suspension angle limits fault independently: the right bogie has an 18 degree limit [6]. Yaw limits fault on heading change, as on sol 1789 when 78.3 percent wheel slip in cohesionless sand drove the heading past the limit and stopped the drive early [5].
Faults are also the record of what the drive modes are for: 88 percent of Curiosity’s driving to sol 2488 used some form of visual odometry, and 5 drives in that period were stopped by visual odometry failures against 94 failures in 20,682 attempts [5].
Adding an autonomy capability adds fault modes. Traction control introduced exactly one new fault type, a per-drive-step timeout, and one of the first 146 nominal-use drives ended on it: the sol 1786 drive faulted after 15.86 m of a planned 27.9 m when a 32.77 s timeout expired with the right rear wheel on a large rock, at which moment the right bogie angle was 0.3 degrees from its own limit [6].
Operators can trade fault protection against progress when the failure is understood. On Perseverance sol 1347, after 34 visual odometry failures over three drives in visually bland terrain at Lookout Hill, rover planners disabled the standard visual odometry failure fault protection and hand-sequenced a slip check requiring visual odometry to succeed only once every 20 m, justified by the mechanical specification that the vehicle can extract itself after 20 m of motion without forward progress and by the terrain being firm [7].
Flight case histories
Section titled “Flight case histories”Spirit flash memory, sol 18. A table of contents in the flash file system retained entries for every file that had ever existed, and a configuration error let it grow unbounded. After seven months of cruise, one day of entry descent and landing, a week of deployment and egress and a week of driving and science, the table consumed all available RAM. The out-of-memory condition silently suspended a critical task, which blocked file system access and prevented the shutdown algorithm from powering off the CPU, so the system reset on the delayed reset timer and did so again on every reboot because the table is rebuilt when flash is mounted. Crippled mode, which does not mount the flash file system, stopped the reset loop. Two weeks after the first symptoms the anomaly team reformatted flash, and for the following two months the problem was held off by limiting the number of files allowed in the file system until a new flight software load fixed the deleted-file representation [2].
Cruise solar flare, 28 October 2003. Both rovers lost attitude knowledge during the solar storm and the flight software dropped out of its nominal attitude control mode; Mars Odyssey detected corrupted RAM from the same storm [2]. Wakeup was triggered successfully by the alarm clock and the operations team commanded both spacecraft back to three-axis control.
Opportunity failed-on heater, landing night. An unexpected 0.5 A current appeared around 23:00 local solar time and disappeared around 09:30, with battery state of charge below prediction [2]. The cause was a failed-on heater switch on an instrument deployment device joint; the external thermostat cuts the circuit when temperatures rise but allows the heater on again when they fall, and multiple attempts to open the switch failed. The cost was 180 Wh per night [2]. The fix was deep sleep, a flight software modification that removes the batteries from the power bus at night and powers off every device including the battery control boards and the survival heaters [2]. Deep sleep boots the vehicle at 18:30 local solar time to pull the batteries offline, and must wait for the sun to be low enough that the arrays supply no current, because the battery control board hardware fault protection puts the batteries back on the bus when it sees bus voltage drop.
Testability
Section titled “Testability”The MSL engine carries two utility commands that exist only for verification: one executes a single response directly without waiting for a monitor to turn red, testing the response rather than the engine, and one forces the engine to believe a specified monitor turned red, bypassing the monitor’s actual state [1]. Testing the pieces in isolation was the precondition for having confidence in the end-to-end monitor-engine-response scenarios. The MER experience is the argument for that investment: its fault protection design is distributed across both hardware and software, and it was exercised through cruise, landing and more than a year of surface operations before it could be called proven [2].
References
- Benowitz, E. (2015). The Curiosity Mars Rover's Fault Protection Engine
. IEEE International Conference on Space Mission Challenges for Information Technology. Source
BibTeX
@inproceedings{benowitz2015curiosity, title = {The Curiosity Mars Rover's Fault Protection Engine}, author = {Benowitz, Ed}, booktitle = {IEEE International Conference on Space Mission Challenges for Information Technology}, volume = {111}, pages = {62-66}, address = {Big Sky, Montana}, year = {2015}, doi = {10.1109/smc-it.2014.16}, abstract = {The Curiosity Rover, currently operating on Mars, contains flight software onboard to autonomously handle aspects of system fault protection. Over 1000 monitors and 39 responses are present in the flight software. Orchestrating these behaviorsis the flight software's fault protection engine. In this paper, we discuss the engine's design, responsibilities, and present some lessons learned for future missions.} } - Neilson, T. (2005). Mars Exploration Rovers Surface Fault Protection
. IEEE International Conference on Systems, Man and Cybernetics. Source
BibTeX
@inproceedings{neilson2005mars, title = {Mars Exploration Rovers Surface Fault Protection}, author = {Neilson, Tracy}, booktitle = {IEEE International Conference on Systems, Man and Cybernetics}, volume = {1}, pages = {14-19}, address = {Big Sky, Montana}, year = {2005}, doi = {10.1109/icsmc.2005.1571115}, abstract = {The Mars exploration rovers surface fault protection design was influenced by the need for the solar powered rovers to recharge their batteries during the day to survive the night. The rovers were required to autonomously maintain thermal stability, and initiate reliable communication with orbiting assets or directly to Earth, while maintaining their energy balance. This paper describes the system fault protection design for the surface phase of the mission, including hardware descriptions and software algorithms. Additionally, a few in-flight experiences are described, including the Spirit flash memory anomaly and the Opportunity "stuck-on" heater failure.} } - Rink, K., Boehmer, R., Kaplan, K., Larsen, R., Clark, J. and Neilson, T. (2023). Martian Mayday: The Evolution of Curiosity's Safe Mode Communication Over Ten Years
. IEEE Aerospace Conference. Source
BibTeX
@inproceedings{rink2023martian, title = {Martian Mayday: The Evolution of Curiosity's Safe Mode Communication Over Ten Years}, author = {Rink, Kimberly and Boehmer, Rudy and Kaplan, Kyle and Larsen, Reidar and Clark, Jessica and Neilson, Tracy}, booktitle = {IEEE Aerospace Conference}, pages = {1-12}, address = {Big Sky, Montana}, year = {2023}, doi = {10.1109/aero58975.2024.10521326}, abstract = {When the Curiosity Mars rover encounters a serious fault, it enters a configuration called safe mode. Curiosity’s autonomous safe mode behavior must keep the rover communicative and stable until the operations team can triage the issue and send recovery commands. In safe mode, Curiosity follows a preset schedule of windows that specify the antenna, telemetry for transmission, and solar time of each communication opportunity. The timing of these windows, called system fault protection (SFP) windows, is crucial for Curiosity to maintain both communication and power-positivity, or generating more energy that consumed. Not only do SFP windows dictate when Curiosity attempts to communicate over its ultra-high frequency and X-band radios, they also largely control the rover’s power consumption by dictating when its primary computer powers on and off, known as awake and sleep states. Because Curiosity is power-negative when awake, sleep time is necessary to charge its batteries to a higher state of charge than the previous sol, or Martian day.During Curiosity’s prime mission, fault protection engineers regularly updated SFP windows to accommodate changing Mars relay orbits and relative geometry of Earth and Mars. The initial SFP windows at landing directed Curiosity to stay awake for nine Martian hours of communication each sol. This design allowed enough sleep time for Curiosity to increase the state of charge of its batteries by 22% over a single sol in safe mode. But as the mission progressed, updates to SFP windows were additionally driven by Curiosity’s aging power source, which continuously requires increased sleep time to maintain power-positivity. As of 2023, 6.6 hours of safe mode communication per sol will only increase the battery state of charge by 5.5%. Secondary factors that were not present during Curiosity’s prime mission—including changing uplink strategies and Mars relay infrastructure—have introduced new challenges to updating SFP windows. The process of selecting SFP window times has evolved into an iterative analysis that must consider several dynamic operational factors to achieve a balance of communication time and power consumption. By using this analysis to converge on a design that satisfies energy requirements and desired communication opportunities, fault protection engineers ensure Curiosity’s safe mode configuration in its extended mission remains truly safe. This paper discusses how Curiosity uses SFP windows to communicate in safe mode, the factors that influence how SFP windows are designed, and how both the design process and the windows themselves have changed over ten years of surface operations.} } - Matijevic, J. and Dewell, E. (2005). Anomaly Recovery and the Mars Exploration Rovers
. SpaceOps Conference. Source
BibTeX
@inproceedings{matijevic2005anomaly, title = {Anomaly Recovery and the Mars Exploration Rovers}, author = {Matijevic, Jacob and Dewell, Emily}, booktitle = {SpaceOps Conference}, year = {2005}, doi = {10.2514/6.2006-5957}, abstract = {The premise of the design of operations for the Mars Exploration Rovers (MER) is that the vehicles will drive each day. As a result, they will encounter some aspect of the terrain environment that cannot be anticipated or otherwise accommodated by the sequences linked onboard that day. The operations team then must correct the problem by planning then commanding the execution of a different drive the next day. Often other aspects of the operation on the surface of Mars: environmental changes, component degradation, errors in sequence design or execution, etc., lead to anomalies which must be addressed before normal operations can resume. The operational design that makes it possible to recover from a driving error each day also reduces the time needed to recover from anomalies. As an example of the efficiency achieved, less than 5% (about 30 sols out of 700 sols of operations) of the time on the surface has been devoted to recovery from anomalies for each vehicle. In this paper the major anomalies experienced by the MER rovers will be recounted and the streamlined approaches to addressing these problems described. The operational flexibility developed for these missions is also a function of the system design that anticipated a number of likely faults and conditions arising from uncertainty in sequence execution and environmental change. This design will be described as well as the considerations in operation that motivated this design. These considerations will likely be present in any future surface mission.} } - Rankin, A., Maimone, M., Biesiadecki, J., Patel, N., Levine, D. and Toupet, O. (2021). Mars Curiosity Rover Mobility Trends During the First Seven Years
. Journal of Field Robotics, 5. Source
BibTeX
@article{rankin2021mars, title = {Mars Curiosity Rover Mobility Trends During the First Seven Years}, author = {Rankin, Arturo and Maimone, Mark and Biesiadecki, Jeffrey and Patel, Nikunj and Levine, Dan and Toupet, Olivier}, journal = {Journal of Field Robotics}, volume = {38}, number = {5}, pages = {759--800}, year = {2021}, doi = {10.1002/rob.22011}, abstract = {Abstract NASA's Mars Science Laboratory (MSL) Curiosity rover landed on Mars on August 6, 2012. In the 7 years between landing and August 6, 2019 (sol 2488), Curiosity has driven 21,318.5 m over a variety of terrain types and slopes, employing multiple drive modes with varying amounts of onboard autonomy. Curiosity's drive distances each sol have ranged from its shortest drive of 2.6 cm to its longest drive of 142.5 m, with an average drive distance of 28.9 m. Real‐time human intervention is not possible during Curiosity's drives due to the latency in uplinking commands and downlinking telemetry. Instead, the operations team relies on Curiosity's fault protection, autonomous navigation, and visual odometry software to keep the rover safe during drives. During its first 7 years on Mars, Curiosity has attempted 738 drives. While 622 drives ran to completion, 116 drives were prevented or stopped early by Curiosity's fault protection software. The primary risks to mobility success have been wheel damage, wheel entrapment, progressive wheel sinkage, and the potential for hardware or cable failures that result in an inability to command one or more steer or drive actuators. In this paper, we describe Curiosity's mobility subsystem, mobility trends over the first 21.3 km of the mission, operational aspects of mobility fault protection, risks to continued mobility success, and risk mitigation strategies.} } - Toupet, O., Biesiadecki, J., Rankin, A., Steffy, A., Meirion-Griffith, G., Levine, D., Schadegg, M. and Maimone, M. (2020). Traction Control on the Curiosity Mars Rover: Algorithm and Flight Results
. Journal of Field Robotics. Source
BibTeX
@article{toupet2020traction, title = {Traction Control on the Curiosity Mars Rover: Algorithm and Flight Results}, author = {Toupet, Olivier and Biesiadecki, Jeffrey and Rankin, Arturo and Steffy, Amanda and Meirion-Griffith, Gareth and Levine, Dan and Schadegg, Maximilian and Maimone, Mark}, journal = {Journal of Field Robotics}, year = {2020}, doi = {10.48577/jpl.hkzuqs}, abstract = {No abstract available.} } - Maimone, M., Verma, V., Rankin, A., Kaplan, K., Carsten, J., Schaler, E., Boroson, E., Graser, E., Srinivasan, T., Nash, J. and Chiu, D. (2026). Roving on the Edge: Robotic Operations Power Perseverance's Ascent of Jezero Crater Rim
. Annual AAS Guidance, Navigation and Control Conference. Source
BibTeX
@inproceedings{maimone2026roving, title = {Roving on the Edge: Robotic Operations Power Perseverance's Ascent of Jezero Crater Rim}, author = {Maimone, Mark and Verma, Vandi and Rankin, Arturo and Kaplan, Kyle and Carsten, Joseph and Schaler, Ethan and Boroson, Elizabeth and Graser, Evan and Srinivasan, Thirupathi and Nash, Jeremy and Chiu, Darwin}, booktitle = {Annual AAS Guidance, Navigation and Control Conference}, year = {2026}, url = {https://www-robotics.jpl.nasa.gov/media/documents/2026_RO_AAS_final.pdf} } - Rankin, A., Del Sesto, T., Hwang, P., Justice, H., Maimone, M., Verma, V. and Graser, E. (2023). Perseverance Rapid Traverse Campaign
. IEEE Aerospace Conference. Source
BibTeX
@inproceedings{rankin2023perseverance, title = {Perseverance Rapid Traverse Campaign}, author = {Rankin, Arturo and Del Sesto, Tyler and Hwang, Pauline and Justice, Heather and Maimone, Mark and Verma, Vandi and Graser, Evan}, booktitle = {IEEE Aerospace Conference}, pages = {1-16}, address = {Big Sky, Montana}, year = {2023}, doi = {10.1109/aero55745.2023.10115835}, abstract = {Over the first 13 months of the Mars 2020 mission, the Perseverance rover traversed nearly 5 km along the Jezero Crater floor. Near the end of that period, the Science team was anxious to relocate to the ancient Delta region near the crater rim, over 5 km away. A Rapid Traverse Campaign was planned that would prioritize use of Perseverance's autonomous navigation software to drive at an unprecedented high pace and minimize science activities. The Rapid Traverse Campaign started in March 2022 and lasted 31 Martian days. During the campaign, Perseverance drove over 5 km in 24 drives, during which its autonomy software planned 94.8% of its overall driving, enabling it to set several new planetary rover driving records. Perseverance exceeded the longest daily drive distance record achieved by a previous planetary rover (219 meters) 11 times and set new records for the longest multi-sol drive distance in a single plan (528.7 meters) and the longest continuation drive (699.9 meters) by operating without human drive path input during 3 sols of driving. This paper details the planning and execution of the Rapid Traverse Campaign.} }