We present a toolbox for the creation and study of controllers for hybrid systems. It contains modules for
- working with n-dimensional polytopes,
- refining continuous state space partitions to satisfy reachability properties,
- synthesizing, manipulating, and visualizing finite automata as winning strategies for a class of temporal logic-based games,
- simulating hybrid executions, and
- reading and writing problem solutions to an XML format.
The toolbox is named TuLiP (for "Temporal Logic Planning") and written almost entirely in Python, making critical use of NumPy, SciPy, CVXOPT, and matplotlib. While software for hybrid systems research is commonly written in Matlab scripts or otherwise requires the end-user to build from source for her particular platform, TuLiP requires neither. For a standard scientific Python environment, the only additional library may be CVXOPT. Code (re)use and experimentation are easy, and because of this, TuLiP has provided a natural basis for further research and development.
Source code and documentation are currently available at http://tulip- control.sourceforge.net
In this talk we will describe the problem domain addressed by TuLiP, various use cases, and lessons learning in the Python implementation. We shall include a full example making use of all components and show ways that individual modules are useful more broadly. Major items of the talk will be
- related work, and the paucity of Python use in hybrid control research, which we argue is a matter of inheritance rather than best practices;
- overview of the type of hybrid systems represented in TuLiP and relevance to other fields;
- summary of the major steps going from problem statement to solution;
- using only the "polytope computations" module;
- using only "discrete reactive synthesis" related modules, with a brief description about temporal logic synthesis to provide background for those not working on computer aided verification;
- snippets about recent research using and building on TuLiP; and
- discussion about the Python-based implementation and lessons learned.
For the last item, we will describe challenges faced while developing TuLiP, given its role of "stitching together" several external tools, e.g., Gephi <http://gephi.org/> for large graph visualization and gr1c <http://scottman.net/2012/gr1c> for game solving. We will also touch on liberation from a Matlab-only tool (Mult- Parametric Toolbox; see http://control.ee.ethz.ch/~mpt/), achieved by creating our own Python module for working with polytopes, using NumPy and CVXOPT for computations and matplotlib for visualization.
A tool paper describing an earlier version of TuLiP was presented at the conference Hybrid Systems: Computation and Control (HSCC) in April 2011. There have since been substantial additions and improvements. Furthermore, a broader audience can be reached at SciPy 2012, with new opportunity to address designs issues likely shared by other scientific Python developers.
Development of TuLiP has been supported in part by the AFOSR through the MURI program, the Multiscale Systems Center (MuSyC) and the Boeing Company.