Piper

Description

Piper is used to control the state of a machine allowing machines to be built in subsystems in a modular way. Piper-based systems divide the functions of a machine into modules, each with their own task. Each module’s behavior is defined using a common set of machine states per the PackML standard.

Modules register on machine startup, so any modules that are present can coordinate the machine. Each module performs that state and responds with “done,” or “wait,” or “error”. Modules can easily be disabled without affecting the remaining machine modules. When all modules are done, the state machine transitions to the next state, which it commands to all modules.

Use Cases

Piper is useful for any machine but can be used to its full potential in the following cases:

  • Machines with multiple task or processes are required to perform task in sequence
  • Machines with processes requiring other machines to perform tasks in sequence
  • Machines with optional subsystems

Overview