  Hamilton-Jacobi (HJ) reachability-based filtering provides a powerful
framework to co-optimize performance and safety (or liveness) for autonomous
systems. Under this filtering scheme, a nominal controller is minimally
modified to ensure system safety or liveness. However, the resulting
controllers can exhibit abrupt switching and bang-bang behavior, which is not
suitable for applications of autonomous systems in the real world. This work
presents a novel, unifying framework to design safety and liveness filters
through reachability analysis. We explicitly characterize the maximal set of
control inputs that ensures safety (or liveness) at a given state. Different
safety filters can then be constructed using different subsets of this maximal
set along with a projection operator to modify the nominal controller. We use
the proposed framework to design three safety filters, each balancing
performance, computation time, and smoothness differently. The proposed filters
can easily handle dynamics uncertainties, disturbances, and bounded control
inputs. We highlight their relative strengths and limitations by applying these
filters to autonomous navigation and rocket landing scenarios and on a physical
robot testbed. We also discuss practical aspects associated with implementing
these filters on real-world autonomous systems. Our research advances the
understanding and potential application of reachability-based controllers on
real-world autonomous systems.
