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
SReachLagController
synthesizes a set-based feedback controller that achieves the desired probabilistic threshold.
SReachPoint
has a new methodvoronoi-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 objectsrv1
andrv2
.
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 useSReachLagController
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 aroundRandomVector/getProbPolyhedron
to compute the scaling required such that a random vector lies in a polytope with a desired probabilitypolytopesFromMonteCarloSims
provides convex hulls of a subset of trajectories (potentially from a Monte-Carlo simulation)