Release of v1.1
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.
- For
SReachLagControllersynthesizes a set-based feedback controller that achieves the desired probabilistic threshold.
SReachPointhas a new methodvoronoi-openthat 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
getRealizationgenerates realizations of the random vector.getProbPolyhedroncomputes 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 + vreturns a \(m\)-dimensional RandomVector object. Similarly,[rv1;rv2]returns the vertical concatenation of two RandomVector objectsrv1andrv2.
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/generateMonteCarloSimscan useSReachLagControllerobjects to generate realizations of the closed-loop system.
- Helper functions
spreadPointsOnUnitSpherecomputes a collection of “well-separated” unit vectors in \(\mathbb{R}^n\) using difference-of-convex programming.getBsetWithProbprovides a wrapper aroundRandomVector/getProbPolyhedronto compute the scaling required such that a random vector lies in a polytope with a desired probabilitypolytopesFromMonteCarloSimsprovides convex hulls of a subset of trajectories (potentially from a Monte-Carlo simulation)