Run Time Assurance (RTA) Systems are online verification mechanisms that
filter an unverified primary controller output to ensure system safety. The
primary control may come from a human operator, an advanced control approach,
or an autonomous control approach that cannot be verified to the same level as
simpler control systems designs. The critical feature of RTA systems is their
ability to alter unsafe control inputs explicitly to assure safety. In many
cases, RTA systems can functionally be described as containing a monitor that
watches the state of the system and output of a primary controller, and a
backup controller that replaces or modifies control input when necessary to
assure safety. An important quality of an RTA system is that the assurance
mechanism is constructed in a way that is entirely agnostic to the underlying
structure of the primary controller. By effectively decoupling the enforcement
of safety constraints from performance-related objectives, RTA offers a number
of useful advantages over traditional (offline) verification. This article
provides a tutorial on developing RTA systems