Skip to main content

Standardized static flight rule checking for common types.

Project description

FRESH: Flight Rule Evaluation Script Helper

Project logo

About Teamtools Studio

Teamtools Studio Utilities is part of JPL's Teamtools Studio (TTS).

TTS is an effort originated in JPL's Planning and Execution section to centralize shared repositories across missions. This benefits JPL by reducing cost through reducing duplicated code, collaborating across missions, and unifying standards for development and design across JPL.

Although Planning and Execution is primarily concerned with flight operations, the TTS suite has been generalized and atomized to the point where many of these tools are applicable during other mission phases and even in non-spaceflight contexts. Through our work flying space missions, we hope to provide tools to the open source community that have utility in data analysis or planning for any complex system where failure is not an option.

For more infomation on how to contribute, and how these libraries form a complete ecosystem for high reliability data analysis, see the Full TTS Documentation.

What is FRESH?

Overview

FRESH is a static Flight Rule checker. At JPL Flight Rules typically represent:

  • Residual issues found in development but not fully fixed prior to flight
  • Other known ways we do not wish to operate our spacecraft.
  • Idiosyncracies and "Use as is" issues disconvered in the design

Flight rule may be used to safeguard against misconfiguration, to keep us from entering a failure mode discovered in testing, or even just to make sure operations remain efficient and operators stay sane.

A given mission can have between hundreds and thousands of Flight Rules, making manaully checking them all but impossible in the time operators are given to plan a spacecraft command load. While some Flight Rules can be highly complex and need bespoke code, many can be at least partially checked with simple constructs. FRESH is meant to be a static checker that checks spacecraft commands sequences in the way an IDE would check linting rules, and it is optimized to check these simple rule architypes while also defining an interface to define more complex rules if needed.

Rule Architypes

Nearly every Flight Rule can at least be partially checked with one of a few architypes

  • Do not send command X in condition Y
  • Do not send command X with arguments Y in condition Z
  • Do not send command X within Y seconds before/after Command Z in condition W

In all cases, the command and argument portions of these architypes are actually fairly straightforward for a computer to check, but can be very taxing for a human. On the other hand, the more open ended the "condition Y" is, the more difficult it is to implement in a way where a computer can check it, with implementation complexity exploding around rare corner cases. However, more often than not, the humans in the loop of spacraft planning can quickly disposition these conditions by simply leveraging their situational awareness (are we in safe mode? Did that werid thing that almost never happens happen today?).

In this way, a strong FRESH implementation serves as a filter. Thousands of Flight Rules get checked, and out comes a decimated list of rules that still need human intervention, often on the order of 20-50, which is a much more tractable number for a human to check on a tactical timeline (e.g. if command X is nowhere in today's command load, no one needs to check if we are in condition Y, so FRESH can disposition the rule without a human's help).

A note on command timing rules

FRESH does not simulate sequences. To the extent that it can handle timing conditions, it can only see the time stamps one sequence at a time as it is designed to be a static checker.

For spacecraft that use parallel sequences or do not explicitly and statically include their command timing in their sequences, some of the above architypes should be used with care or not used at all.

Any project's Flight Rule implementation will still only be as good as the team is able to judiciously write, edit, and implement their rules. FRESH can be a very strong part of that solution, but it requires a lot of human intuition. Like most TTS tools, FRESH is intended to get the nit-picky programming challenges out of the way so a human can get to apply that intuition more simply and without distraction by unrelated technical issues.

If a project need to check rules on more complex timing, see our digital twin library tts_seq.

Projects Currently Supported

  • Mars 2020 (Prototype only)
  • Europa Clipper
  • NISAR
  • DemoSat

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tts_fresh-0.2.2.tar.gz (574.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tts_fresh-0.2.2-py3-none-any.whl (170.8 kB view details)

Uploaded Python 3

File details

Details for the file tts_fresh-0.2.2.tar.gz.

File metadata

  • Download URL: tts_fresh-0.2.2.tar.gz
  • Upload date:
  • Size: 574.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for tts_fresh-0.2.2.tar.gz
Algorithm Hash digest
SHA256 c55d283d85944e9f56008e8e28c4f01d593aa0188023ebc9592ecd18dd50fb26
MD5 91bebf347e6bdb8113f8fa1d8da1df9d
BLAKE2b-256 55e52b0f07ffbb5b50cd8282f738f752b6fdd31443ec2a0384bbb945ee445fd0

See more details on using hashes here.

File details

Details for the file tts_fresh-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: tts_fresh-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 170.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for tts_fresh-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 53d64d0b8bd5d23e76191b08f566b483a891e2920baff70705cdf28136499f23
MD5 f726e1ce20593fc901ad3485890513b7
BLAKE2b-256 8ff5c8442ab5cc3b3c88fc60cd1b4cc6e19556a4e7f7ae49a0cd17a1659d7518

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page