We’ve added a lot of new features to SReachTools over the past few months in preparation for its public submission and debut at the 2019, International Conference on Hybrid Systems: Computation and Control, coming up this April.

The summary of all the features of SReachTools is available in our documentation webpage.

We summarize the major changes from v1 release.

Feature updates

  • SReachSetLag (Lagrangian-based approximation of stochastic reach set) has major updates, with the ability to handle arbitrary disturbances:
    • We can use GeoCalcLib — a MATLAB interface to Avis’s LRS vertex-facet enumeration library. This library serves as an alternative to MPT’s preferred approach for vertex-facet enumeration, CDD.
    • As an (partial) alternative to vertex-facet enumeration problems, we can, at the user’s choice, utilize support functions to perform Lagrangian recursions.
      • For lag-under, we provide a complexity-preserving recursion that requires vertex-facet enumeration to guarantee an underapproximation.
      • For lag-over, we provide a recursion-free overapproximation using robust linear programming.
    • SReachLagController synthesizes a set-based feedback controller that achieves the desired probabilistic threshold.
  • SReachPoint has a new method voronoi-open that provides a probabilistically enforced upper bound on overapproximation error of the maximal reach probability and an associated optimal open-loop controller.
  • SReachFwd (forward stochastic reachability) can now perform analysis using Monte-Carlo simulation for arbitrary disturbances or use Fourier transforms (Kalman update) in case of Gaussian disturbances

Auxillary updates

  • Classes
    • RandomVector
      • Creation of non-Gaussian random vectors by specifying a generator for the same
      • getRealization generates realizations of the random vector.
      • getProbPolyhedron computes the probability of the random vectors lying in a user-specified polyhedron.
      • Affine transformation of random vectors and vertical concatentation of random vectors now permitted. Specifically, for a matrix \(F\in \mathbb{R}^{m\times n}\), a deterministic vector \(v\in \mathbb{R}^m\), and a \(n\)-dimensional RandomVector object \(w\), F * w + v returns a \(m\)-dimensional RandomVector object. Similarly, [rv1;rv2] returns the vertical concatenation of two RandomVector objects rv1 and rv2.
    • SReachEllipsoid (new class)
      • For appropriate \(c\in \mathbb{R}^n\) and \(Q\in \mathbb{R}^{n\times n}\), \(Q\) positive definite, define an ellipsoid \(S = \{ x \in \mathbb{R}^{n} : (x - c)^\top Q^{-1} (x - c) \leq 1 \}\). If \(Q\) is positive definite, then a lower dimensional ellipsoid is defined.
      • S.support(v) implements a vectorized CVX friendly support function of the ellipsoid in the direction \(v\)
      • S.contains(v) checks if \(v\in S\)
      • For appropriate \(F\in \mathbb{R}^{m\times n}\) and \(v\in \mathbb{R}^{m}\), \(F S + v\) returns an ellipsoid.
    • SReachLagController (new class)
      • Computes an admissible state-feedback controller that achieves the specified probabilistic threshold using the Lagrangian-based underapproximation of the stochastic reach set. See examples/dubinsSReachSetGauss.m for its use in an example.
      • helperFunctions/generateMonteCarloSims can use SReachLagController objects to generate realizations of the closed-loop system.
  • Helper functions
    • spreadPointsOnUnitSphere computes a collection of “well-separated” unit vectors in \(\mathbb{R}^n\) using difference-of-convex programming.
    • getBsetWithProb provides a wrapper around RandomVector/getProbPolyhedron to compute the scaling required such that a random vector lies in a polytope with a desired probability
    • polytopesFromMonteCarloSims provides convex hulls of a subset of trajectories (potentially from a Monte-Carlo simulation)