• F Prime Features
    • Decomposes flight software into discrete components with well-defined interfaces
    • C++ framework provides core capabilities like message queues and threads
    • Autocoding tools that generate code from component/connection specs
    • Has a library of ready-to-use components
    • Contains a built-in testing framework
  • Limitations
    • CubeSat Flight Software: Insights and a Case Study | Journal of Spacecraft and Rockets
      • “Additionally, neither cFS nor F Prime provides a built-in script engine for automating satellite operations, or a flexible bootloader for in-mission software updates. These features are essential for mission adaptability and efficiency.”
        • A bootloader:
          • Runs before FSW, checking and executing it
          • Allows for modification and updating of FSW post-launch
  • Levels of Automation: CmdSequencer < FpySequencer < Script Engine
    • CmdSequencer: https://fprime.jpl.nasa.gov/latest/Svc/CmdSequencer/docs/sdd/
      • Sequencing In F´ - F Prime
      • Features
        • Loads and runs a sequence of commands
        • Can be triggered at absolute times or at times relative to previous commands
      • Flaws
        • Sequence will abort if any given command in the sequence returns a failed status
        • No conditional branching
          • No telemetry awareness
        • No jumps or loops
        • No mid-sequence debugging (by default)
    • FpySequencer: https://fprime.jpl.nasa.gov/latest/Svc/FpySequencer/docs/sdd/
      • Features
        • State machine controlling loading, validation, starting, and stopping of a sequence
        • Execution happens in a sectioned-off runtime
        • Support stack-based operations and flags -> conditional-like control
        • Debug mode
      • Flaws
        • Still in development (but might not be by the time we get to Spring 2028 LEONIRD I launch)
        • No structured control flow other than GOTO and IF
        • No functions or subroutines
        • Data models are limited to stack, registers, and basic get/set
    • Full Script Engine
      • Not available in F Prime
      • We would need to make this ourselves to do stuff like dynamically re-plan orientation based on live sensor readings rather than a pre-computed schedule
      • Options:
        • Embed a general purpose interpreter like CircuitPython or Lua
          • Takes a lot of storage space
          • Needs to be integrated with satellite parameter system
        • Program a minimal custom instruction set
  • Previous Uses
    • ASTERIA (Arcsecond Space Telescope Enabling Research in Astrophysics) (2017)
      • Collab by JPL & MIT
      • 6U CubeSat (like LEONIRD Phase II)
      • Goal: achieve arcsecond-level line-of-sight pointing error and highly stable focal plane temperature control, necessary for precision photometry
      • Led by Sara Seager (MIT Prof)
    • Used by Georgia Tech in their GT1 CubeSat
  • References
  • No labels