PLEXIL

Last updated
PLEXIL
Paradigm Multi-paradigm
Designed by NASA
First appeared2005
Typing discipline Static, unsafe, nominative
OS Linux, Mac OS
License Open source
Website http://plexil.sourceforge.net/
Major implementations
Robotics, Space missions

PLEXIL (Plan Execution Interchange Language) is an open source technology for automation, created and currently in development by NASA.

Contents

Overview

PLEXIL is a programming language for representing plans for automation.

PLEXIL is used in automation technologies such as the NASA K10 rover, Mars Curiosity rover's percussion drill, Deep Space Habitat and Habitat Demonstration Unit, Edison Demonstration of Smallsat Networks, LADEE, Autonomy Operating System (AOS) and procedure automation for the International Space Station. [1] [2] [3]

The PLEXIL Executive is an execution engine that implements PLEXIL and can be interfaced (using a provided software framework) with external systems to be controlled and/or queried. PLEXIL has been used to demonstrate automation technologies targeted at future NASA space missions.

The binaries and documentation are widely available as BSD licensed open source from SourceForge.net. [4]

Nodes

The fundamental programming unit of PLEXIL is the Node. A node is a data structure formed of two primary components: a set of conditions that drive the execution of the node and another set which specifies what the node accomplishes after execution.

A hierarchical composition of nodes is called a plan. A plan is a tree divided in nodes close to the root (high level nodes) and leaf nodes that represent primitive actions such as variable assignments or the sending of commands to the external system.

Node Types:

As of September 2008 NASA has implemented seven types of nodes.

Node states:

Each node can be in only one state. They are:

Nodes transitions:

Related Research Articles

Eiffel is an object-oriented programming language designed by Bertrand Meyer and Eiffel Software. Meyer conceived the language in 1985 with the goal of increasing the reliability of commercial software development; the first version becoming available in 1986. In 2005, Eiffel became an ISO-standardized language.

<span class="mw-page-title-main">Interrupt</span> Signal to a computer processor emitted by hardware or software

In digital computers, an interrupt is a request for the processor to interrupt currently executing code, so that the event can be processed in a timely manner. If the request is accepted, the processor will suspend its current activities, save its state, and execute a function called an interrupt handler to deal with the event. This interruption is often temporary, allowing the software to resume normal activities after the interrupt handler finishes, although the interrupt could instead indicate a fatal error.

In computer programming, an infinite loop is a sequence of instructions that, as written, will continue endlessly, unless an external intervention occurs. It may be intentional.

In computer science, control flow is the order in which individual statements, instructions or function calls of an imperative program are executed or evaluated. The emphasis on explicit control flow distinguishes an imperative programming language from a declarative programming language.

Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is also used in the verification of analog circuits and mixed-signal circuits, as well as in the design of genetic circuits. In 2009, the Verilog standard was merged into the SystemVerilog standard, creating IEEE Standard 1800-2009. Since then, Verilog has been officially part of the SystemVerilog language. The current version is IEEE standard 1800-2023.

<span class="mw-page-title-main">State diagram</span> Diagram of behavior of finite state systems

A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, while at other times this is a reasonable abstraction. Many forms of state diagrams exist, which differ slightly and have different semantics.

In computer programming, specifically when using the imperative programming paradigm, an assertion is a predicate connected to a point in the program, that always should evaluate to true at that point in code execution. Assertions can help a programmer read the code, help a compiler compile it, or help the program detect its own defects.

<span class="mw-page-title-main">Conditional (computer programming)</span> Control flow statement that executes code according to some condition(s)

In computer science, conditionals are programming language commands for handling decisions. Specifically, conditionals perform different computations or actions depending on whether a programmer-defined Boolean condition evaluates to true or false. In terms of control flow, the decision is always achieved by selectively altering the control flow based on some condition . Although dynamic dispatch is not usually classified as a conditional construct, it is another way to select between alternatives at runtime. Conditional statements are the checkpoints in the programe that determines behaviour according to situation.

Short-circuit evaluation, minimal evaluation, or McCarthy evaluation is the semantics of some Boolean operators in some programming languages in which the second argument is executed or evaluated only if the first argument does not suffice to determine the value of the expression: when the first argument of the AND function evaluates to false, the overall value must be false; and when the first argument of the OR function evaluates to true, the overall value must be true.

The Guarded Command Language (GCL) is a programming language defined by Edsger Dijkstra for predicate transformer semantics in EWD472. It combines programming concepts in a compact way. It makes it easier to develop a program and its proof hand-in-hand, with the proof ideas leading the way; moreover, parts of a program can actually be calculated.

In concurrent programming, a monitor is a synchronization construct that prevents threads from concurrently accessing a shared object's state and allows them to wait for the state to change. They provide a mechanism for threads to temporarily give up exclusive access in order to wait for some condition to be met, before regaining exclusive access and resuming their task. A monitor consists of a mutex (lock) and at least one condition variable. A condition variable is explicitly 'signalled' when the object's state is modified, temporarily passing the mutex to another thread 'waiting' on the conditional variable.

In computer science, software transactional memory (STM) is a concurrency control mechanism analogous to database transactions for controlling access to shared memory in concurrent computing. It is an alternative to lock-based synchronization. STM is a strategy implemented in software, rather than as a hardware component. A transaction in this context occurs when a piece of code executes a series of reads and writes to shared memory. These reads and writes logically occur at a single instant in time; intermediate states are not visible to other (successful) transactions. The idea of providing hardware support for transactions originated in a 1986 paper by Tom Knight. The idea was popularized by Maurice Herlihy and J. Eliot B. Moss. In 1995, Nir Shavit and Dan Touitou extended this idea to software-only transactional memory (STM). Since 2005, STM has been the focus of intense research and support for practical implementations is growing.

Query optimization is a feature of many relational database management systems and other databases such as NoSQL and graph databases. The query optimizer attempts to determine the most efficient way to execute a given query by considering the possible query plans.

<span class="mw-page-title-main">Flight controller</span> Person who aids in spaceflight activities

Flight controllers are personnel who aid space flight by working in such Mission Control Centers as NASA's Mission Control Center or ESA's European Space Operations Centre. Flight controllers work at computer consoles and use telemetry to monitor various technical aspects of a space mission in real-time. Each controller is an expert in a specific area and constantly communicates with additional experts in the "back room". The flight director, who leads the flight controllers, monitors the activities of a team of flight controllers, and has overall responsibility for success and safety.

<span class="mw-page-title-main">Real-time Control System</span> Reference model architecture

Real-time Control System (RCS) is a reference model architecture, suitable for many software-intensive, real-time computing control problem domains. It defines the types of functions needed in a real-time intelligent control system, and how these functions relate to each other.

UML state machine, also known as UML statechart, is an extension of the mathematical concept of a finite automaton in computer science applications as expressed in the Unified Modeling Language (UML) notation.

<span class="mw-page-title-main">Behavior tree (artificial intelligence, robotics and control)</span>

A behavior tree is a mathematical model of plan execution used in computer science, robotics, control systems and video games. They describe switchings between a finite set of tasks in a modular fashion. Their strength comes from their ability to create very complex tasks composed of simple tasks, without worrying how the simple tasks are implemented. Behavior trees present some similarities to hierarchical state machines with the key difference that the main building block of a behavior is a task rather than a state. Its ease of human understanding make behavior trees less error prone and very popular in the game developer community. Behavior trees have been shown to generalize several other control architectures.

<span class="mw-page-title-main">Vandi Verma</span> Roboticist at NASAs Jet Propulsion Laboratory and driver of the Mars rovers

Vandana "Vandi" Verma is a space roboticist and chief engineer at NASA's Jet Propulsion Laboratory, known for driving the Mars rovers, notably Curiosity and Perseverance, using software including PLEXIL programming technology that she co-wrote and developed.

A spacecraft command language is a computer command language for commanding spacecraft mission systems. Ultimately such languages are used to command remote spacecraft with telecommands, but they are also used for development and verification of onboard systems, and of ground systems, prior to launch.

<span class="mw-page-title-main">Crew Dragon In-Flight Abort Test</span> Post-launch abort test of the SpaceX Dragon 2 spacecraft

SpaceXCrew Dragon In-Flight Abort Test was a successful test of the SpaceX Dragon 2 abort system, conducted on 19 January 2020. It was the final assessment for the Crew Dragon capsule and Falcon 9 launch system before they would be certified to carry humans into space. Booster B1046.4 and an uncrewed capsule C205 were launched from Launch Complex 39A (LC-39A) on a suborbital trajectory, followed by an in-flight abort of the capsule at max Q and supersonic speed. The test was carried out successfully: the capsule pulled itself away from the booster after launch control commanded the abort, and landed safely.

References

  1. Estlin, Tara; Jonsson, Ari; Pasareanu, Corina; Simmons, Reid; Tso, Kam; Verma, Vandi (April 2006). "Plan Execution Interchange Language (PLEXIL)" (PDF). NASA Technical Reports Server. Retrieved 8 February 2019.
  2. "Bibliography of PLEXIL-related publications, organized by category". Plexil souceforge. Retrieved 8 February 2019.
  3. "Main page: NASA applications". PLEXIL sourceforge. Retrieved 8 February 2019.
  4. "PLEXIL (Plan execution software)".

See also