Deep Space Exploration
Model-based autonomy has the potential to make embedded systems more robust, including automobiles, air vehicles, and spacecraft. The challenge is to make it simple enough for any programmer to use and fast enough that they are willing to use it. We are creating increasingly fast and powerful model-based executives, which are made easy to use through the metaphor of model-based programming.
We have developed a compile-time variant of the Reactive Model-based Programming Language (RMPL). RMPL simplifies embedded programming by allowing the programmer to read and set the evolution of state variables hidden within the hardware. For example, an RMPL program might state, “produce 10.3 seconds of 35% thrust”, rather than specifying the details of actuating and sensing the hardware (e.g., “signal controller 1 to open valve 12,” and “check pressure and acceleration to confirm that valve 12 is open”).
To execute RMPL programs we completed Titan 2.0, a compile-time synthesis and execution system that automatically turns RMPL programs into hardware control actions that generate and monitor the desired state evolution. Titan is safe in the sense that its programs are formally verifiable, and its generated actions avoid potentially damaging, irreversible effects. Titan is fast; it plans and diagnoses quickly by shifting most reasoning to compile time, which allows it to generate each action in roughly constant time. RMPL is opening the software engineering community to the potential of dynamic languages that reason from models.
Titan’s compiled Modes Estimation capability was selected for evaluation by the Mars Science Laboratory Technology Acceptance Board at JPL. In addition, Titan was demonstrated on Simulations of the NASA Earth Observer 1 mission, and on analogues of the NASA Mars Exploration Rover and the MIT Spheres spacecraft. Our future research will explore probabilistic verification of model-based programs, knowledge compilation methods for achieving real-time performance, and methods for distributed execution of model-based programs.