nasa/ogma

Generator of runtime monitors for flight and robotics applications.

What it solves

Ogma is a tool designed to integrate safe runtime monitors into larger software systems, specifically for high-reliability environments like spacecraft and robotics. It automates the glue code generation needed to connect high-level runtime verification frameworks (specifically Copilot) to real-world data sources like message buses and software buses.

How it works

Ogma extends the Copilot framework to generate hard real-time C99 code. It acts as a bridge between the monitoring specifications and the target platform by generating the necessary application wrappers and message handlers. It supports several target environments:

  • NASA Core Flight System (cFS): Generates applications that subscribe to the software bus, process incoming messages, and trigger fault handlers when properties are violated.
  • Robot Operating System (ROS): Generates monitoring applications that subscribe to ROS topics to obtain data and report violations.
  • F' (F Prime): Generates runtime monitoring components.
  • Diagrammatic Input: Can generate monitors directly from diagrams in formats like DOT/Graphviz or Mermaid.

Who it’s for

It is intended for software engineers and systems engineers working on safety-critical embedded systems, robotics, and aerospace software who need to ensure their systems behave correctly at runtime.

Highlights

  • Multi-platform support: Native generation for NASA cFS, ROS, and F Prime.
  • Automated Glue Code: Handles the tedious process of creating message handlers and C struct interfaces.
  • Customizable Templates: Allows users to provide their own templates to customize the generated application structure.
  • External Translation: Supports translating properties via external commands or LLMs (though the user is responsible for verifying the output).
  • Real-time focus: Produces C99 code suitable for hard real-time constraints.

Related

  • Project
  • Project
  • Project
  • Project
  • Dispatch