This directory contains code to recreate the examples from

  Ian M. Mitchell, "Scalable Calculation of Reach Sets and Tubes for
  Nonlinear Systems with Terminal Integrators: A Mixed Implicit
  Explicit Formulation," in Hybrid Systems Computational & Control
  (Frazzoli & Grosu, eds), ACM (2011).

It requires the Toolbox of Level Set Methods, which can be downloaded from

  http://www.cs.ubc.ca/~mitchell/ToolboxLS/

It will require a relatively recent version of Matlab as written (it
was tested in R2010b / version 7.11), although if it doesn't work with
slightly older versions (eg: version 7.x for x < 11), it might work if
the "~" in parameter lists is replaced with dummy variables.

After ToolboxLS is installed, you must modify addPathToKernel.m in
this directory so that it points to the Kernel/ subdirectory of your
ToolboxLS installation.  If you are getting an error about "missing
functions" when you try to run something in this directory, then you
haven't correctly modified addPathToKernel.

The tasks of the functions in this directory are:

* addPathToKernel: Modifies the Matlab path so that the other
  functions can access ToolboxLS.  Make sure that you modify this
  function to point to the Kernel/ subdirectory of your ToolboxLS
  installation.

* constantLinearImplicit: Creates the implicit formulation version of
  figure 5.

* constantLinearMIE: Creates Figure 5.

* doubleIntegratorIC: Creates Figure 1.

* doubleIntegratorImplicit: Creates Figure 3.

* doubleIntegratorMIE: Creates Figure 2.

* obliviousHSCC: Helper function which can create figure 7 and/or
  figure 8.  It either loads the necessary data from mat files (with
  hardcoded filenames), or uses oblivousImplicit and obliviousMIE to
  recreate the data (and saves that data to the correct mat files,
  since it takes a while and a lot of memory to recreate the data
  every time you want a figure).  This helper also saves the figures
  to eps and png image files; note that the former are very large.

* obliviousImplicit: Computes the solution for either the fully
  implicit or the decoupled implicit formulations of the pursuit of an
  oblivious vehicle example from section 6.1.  The results are used to
  create the top and middle rows of figure 7 and both parts of figure
  8.

* obliviousMIE: Computes the solution for the MIE formulation of the
  pursuit of an oblivious vehicle example from section 6.1.  The
  results are used to create the bottom row of figure 7.

* rotatingIntegratorImplicit: The initial condition is the left
  subplot of figure 4, and the final result is the right subplot of
  figure 4.

* rotatingIntegratorMIE: The initial condition is the left subplot of
  figure 4, and the final result is the middle subplot of figure 4
  (after setting all negative solution values to NaN so that they do
  not get plotted).

Questions and bug reports (and any examples of the use of this
technique on other problems) can be send to mitchell@cs.ubc.ca

Ian M. Mitchell 
April 2011
