This paper proposes a hierarchical construction of motion primitives for motion planning of multi-vehicle systems. The framework allows designers to incrementally build up more complex motion primitives from simpler ones in a systematic, rigorous way, without the need to redesign feedback controllers. This approach dramatically reduces the overall complexity of motion planning.
The main idea is simple. Consider a control system with two outputs. Suppose the output space has been gridded into boxes, and we have feedback controllers for a finite set of atomic motion primitives. In Figure 2 we show five atomic motion primitives. Motion primitives at level are formed from sets of sequences of Level motion primitives. For example, two successive atomic motion primitives from level form the motion primitive at level . Progressively more complex behaviors can be similarly defined, as shown in Figure 2.
Hierarchy is a common theme to simplify and scale up control design and has many applications [19, 9, 12, 4]. Motion primitives often serve as an important layer in the hierarchy and have been applied in various forms [6, 16, 7]. Abstraction as it relates to hierarchy has been studied in more general settings [1, 21, 3, 8, 25], but can be difficult to apply to practical applications. One of our motivating applications is efficient formation coordination of quadrotors, which boasts a broad literature [5, 2, 14, 10, 20, 18, 15].
Though our main idea is simple, and while many concepts and methods involving hierarchy, abstractions, and quadrotor control have been well studied, we place extra demands on our design that take it a step beyond what has been done. First, we allow for an arbitrary number of hierarchical levels, and the design of any level depends in the same way only on the level below. One of the benefits of this uniformity of the architecture is that a designer can apply a planning algorithm at any level to obtain a control synthesis to the problem. Second, motion primitives at any level must be implementable by the low level continuous dynamics, for instance by adhering to safety and continuity constraints on positions and velocities. Effectively, we are implementing a notion of hierarchical consistency, but with the addition of a continuous state feedback at the lowest level . As a final constraint, we expect a design that gives dramatic computational advantages, especially in the multi-agent setting. To this end, we construct hierarchical motion primitives on a grid, as shown in Figure 2.
There are three main contributions of this paper. First, we provide an architectural formulation of hierarchical motion primitives, which involves careful attention to suitable, parsimonious data structures and relationships. Second, we solve a reach-avoid problem with behavior constraints, in which the vehicles must safely reach goal locations while maintaining predefined sequences of motions; here our analysis employs fairly standard notions from hybrid control theory. Finally, we supply an elegant and highly efficient design to address the formation control of quadrotors. For example, we are able to navigate a formation of quadrotors interleaving them around a set of obstacles, while maintaining strict safety guarantees.
This research is an outgrowth of our modular framework for motion planning based on motion primitives [22, 23]; the notions of atomic motion primitives and the maneuver automaton were introduced there. As those constructions were limited only to level 0, this paper concerns itself with describing how to build hierarchical motion primitives at higher levels and illustrating the computational advantages of employing a multi-level hierarchy. Moreover, we have introduced the notion of behavior constraints in addition to the usual reach-avoid problem as a mechanism to address the formation control problem of quadrotors in a hierarchical manner. At the same time we suppress theoretical details including proofs, which will be made available in a forthcoming journal paper.
Notation. Let denote the cardinality of a set. If is a set, let denote its power set. The set difference of and is denoted . For a collection of sets , the cartesian product is denoted ; when , we may write , and when for all , we may write (which in general should not be confused with superscripts for indexing in other contexts). Let and denote the integers and the real numbers, respectively.
Ii Problem Statement
Consider the general nonlinear control system
where is the state, is the input, and is the output. Let denote the output trajectory of (1) starting at initial condition and under some open-loop or feedback control. We make a standing assumption that the outputs of (1
) are a subset of the states and that the vector field is invariant to the value of the output. This symmetry property is satisfied for many robotic systems, for example when the outputs are positions, and it allows motion primitives to be designed only over a single box in a gridded output space[6, 23].
Fix a grid length vector where . The gridded output space is constructed by translating the canonical box . That is, associated with each is a shifted box . We call the box index of . We identify a (non-empty) set of feasible boxes in terms of their box indices . The feasible boxes arise from control specifications including obstacle avoidance, collision avoidance, communication constraints, and others. Similarly, we identify a (non-empty) set of goal boxes in terms of their box indices .
Now consider an output trajectory for some control and initial condition . We associate to a discretized trajectory called a run that records the boxes that the output trajectory visits; see  for a formal definition. The run is denoted as , where is a box index. We define the behavior induced by to be the sequence of box index increments , where . Because records every box visited by the output trajectory, we have that . That is, the increment in any coordinate is of magnitude at most , and the overall increment is never . Let denote the empty sequence and all finite and infinite sequences on . We define a behavioral constraint to be any non-empty subset of .
Problem II.1 (Behavior-Constrained Reach-Avoid)
Consider the system (1) with a gridded output space in terms of grid length vector . We are given goal boxes , feasible boxes , and a behavioral constraint . Find a feedback control and a set of initial conditions such that for each :
Avoid: for all ,
Reach: there exists such that for all , ,
Iii Hierarchical Motion Primitives
In this section we present the hierarchical construction of motion primitives. First we recall the definition of a maneuver automaton (MA) from our previous work [22, 23], as it serves as the level or base case of the construction.
Iii-a Maneuver Automaton
A maneuver automaton (MA) is a hybrid system whose discrete modes correspond to motion primitives. Each level motion primitive has associated to it a continuous time closed-loop vector field obtained by applying a state feedback law to (1). The edges of the MA model feasible successive motion primitives. A motion primitive generates some desired behavior of the output trajectories of the closed-loop system over a box in the output space. Because of the uniform gridding of the output space into boxes and because of the symmetry assumption on the outputs, level motion primitives are designed only over . The MA applies state resets to ensure that output trajectories remain in . Real, physical trajectories clearly do not undergo such resets and instead output trajectories move continuously from box to box.
Consider the system (1) and the box with grid length vector . The level maneuver automaton (0-MA) is a tuple , where
- State Space
is the hybrid state space, where is a finite set of level motion primitives, and is the continuous state space.
is a finite set of event labels, where describes a possible neighbouring direction from the -dimensional box at location 0.
, is a finite set of edges, describing allowable concatenations of motion primitives.
assigns a bounded invariant set to each that defines the region on which the vector field is defined.
- Initial Conditions
is a set of initial conditions.
- Vector Field
assigns to each a globally Lipschitz closed-loop vector field of the form , where is the state feedback controller associated with .
- Enabling Conditions
assigns to each edge a non-empty enabling or guard condition .
- Reset Conditions
assigns to each edge a reset map . Resets of states are determined by the event , and they only affect the output coordinates in order to maintain output trajectories inside the canonical box .
The semantics of a level MA involve the standard notion of an execution of a hybrid system [13, 23]. Informally, the continuous state evolves over the invariant of the current discrete mode according to the vector field assigned to , and an edge is taken when the continuous state reaches an enabling condition, thereby updating the discrete mode as well as resetting the continuous state. We shall denote a level execution as , where is a hybrid time domain consisting of time intervals (e.g. ), is a sequence of level motion primitives recording the motion primitive over each time interval, and is the continuous state as a function of time.
Iii-B Higher Level Maneuver Automata
We want to extend the notions of motion primitives, maneuver automata, and executions of an MA from level to higher levels by a hierarchical construction that builds level using only information from level . We begin with the discrete part of since its extension to level is straightforward.
The discrete part of is given by the tuple , representing a graph with nodes (the level motion primitives), edges , and labels . Analogously, the discrete part of the level MA, , is a tuple , representing a graph over level motion primitives. Because level motion primitives may be defined over more boxes than just , the event labels on transitions must be accordingly generalized.
For example, consider the level motion primitive in Figure 2 called U-Turn. It is constructed by concatenating three level motion primitives: Up, Right, and Down. U-Turn may, in turn, be concatenated with other level motion primitives encoded by an edge where denotes U-Turn and denotes a possible next level motion primitive. First we attach a reference frame in the gridded output space for primitive with an arbitrary base point , say the lower left box. The role of is then to encode the fact that the transition from to occurs downwards from the upper right box . Therefore .
Now consider the continuous time part of . It consists of a continuous state space , a set of continuous time closed-loop vector fields , a set of invariants that specify the domain of each vector field, and the enabling conditions and reset maps that specify how continuous states must be reset upon reaching an enabling condition. These notions are extended to level as follows.
The continuous state space is reinterpreted at level as a (discrete) state space , consisting of the pairs , with identifying a box index (or offset) and identifying a level motion primitive. Similarly, the notion at level of a continuous state trajectory, which is a function of time, is replaced at level by a discrete sequence of pairs.
The continuous time vector fields at level are replaced by a set of discrete maps. For motion primitive , the discrete map defines the internal transitions on pairs that make up motion primitive . These discrete maps must adhere to the constraints on successive level motion primitives as specified in (formal details are below). The invariant is the set of pairs that the discrete map acts on. The index in the pair identifies the origin of the frame for w.r.t. the frame for .
The enabling conditions and reset maps take the analogous meanings as in . They define the external transitions from primitive to other level motion primitives (including itself). To properly define reset maps, it is necessary to keep track of reference frames for the various primitives involved. Suppose we have three frames for the three primitives , and , respectively. When an internal or external transition occurs, the next primitive effectively starts from a shifted frame. This shift is recorded in terms of the base point of each frame, denoted , , and , respectively. For example, the origin of the frame for w.r.t. the frame for is denoted by . Similarly, the origin of the frame for w.r.t. the frame for is denoted by .
Suppose we are given a level MA , where . A MA at level is a tuple , where
- State Space
is the hybrid state space, where is a finite set of motion primitives at level , and is the analogue of the notion of a continuous state space at level .
is a finite set of event labels. If , then is the box index w.r.t. a frame for some primitive from which an external transition occurs, and identifies the face of the box through which the transition occurs.
is a finite set of edges describing which level motion primitives can be concatenated.
assigns to each motion primitive a non-empty, finite set of states on which the transition function (defined below) acts. The box indices for pairs correspond to the origin of the frame for w.r.t. the frame for . The invariant is different from the envelope of , denoted , which is the collection of all box indices w.r.t. the frame for accumulated from the envelopes of the lower level primitives that constitute .
- Initial Conditions
assigns a set of initial states, satisfying: if , then .
- Transition Functions
assigns to each a transition function that specifies all the allowable internal transitions between pairs that together constitute the level motion primitive. Consider and , such that (identifying that this is an internal transition) and such that for some . If , then (i) ; (ii) ; and (iii) , , and .
- Enabling Conditions
assigns to each edge a non-empty enabling condition . If , the first requirement is that , identifying that this is an external transition. Then consists of all those pairs for which an external transition to a consecutive level motion primitive can occur. That is, if there exists (a unique) such that (i) there exists such that ; (ii) , is the index w.r.t. the frame for for the box from which the external transition occurs, and is the index w.r.t. the frame for for the same box. Therefore and .
- Reset Conditions
assigns to each edge a reset map that characterizes the external transitions of . Associated with is a unique transformation relating the frames of and for this external transition. Consider , , and such that and . If , then (i) ; (ii) ; (iii) , , and .
Returning to the two level hierarchy of Figure 2, suppose we want to design motion primitives at level 2 based on the existing motion primitives at level 1. Consider the candidate motion primitive formed by the concatenation of the two level motion primitives and . Figure 3 shows all the geometric information to understand how and are laid out relative to each other to construct .
The invariant for is , where and are the indices w.r.t. to the frame for for the boxes to which the frames for and , respectively, are attached. Three internal transitions are encoded in the transition function , corresponding to the level edges , . For example, the level 2 internal transition is implemented by a level edge with associated event . In the frame of , the transition occurs from the box through its right face .
There is one level external transition for with an associated edge . In turn, it corresponds to a level edge and event . Thus, for some . The event is expressed in the frame of , while the event is expressed in the frame of . Thus, , , , and .
For we define the notation to mean that is an abstraction built up from according to Definition III.2. In analogy with , we define an execution at level , denoted as . There are two differences from . First, the hybrid time domain is a sequence of sets of discrete times (e.g. ), where each set consists of the discrete times when internal transitions occur. Second, continuous and discrete transitions at level are replaced by internal and external transitions, respectively, at level .
Iii-C Hierarchical Maneuver Automaton
Now consider a collection of maneuver automata, , where , such that for all , . We call a hierarchical maneuver automaton (HMA).
Next, we can also define an overall hierarchical execution by stacking together each execution at level . Suppose that a level event occurs from the current level motion primitive. This event is either interpreted as an internal or external transition at level . If it is internal, the transition function determines the next motion primitive at level (and the continuous state is reset with ). Otherwise, this event is propagated up the hierarchy until it is registered as internal at some level or external at level . In the former case, the transition function determines the next motion primitive at level , while in the latter case the reset map determines the next motion primitive at level . An internal transition at level is always implemented as an external transition at the levels to . The reset maps update the motion primitive at each level below. For example, if there is an internal transition at level , then at level , determines the next level primitive, determines the next level primitive, and resets the continuous state.
Recalling our definition of the behavior induced by an output trajectory , we can likewise define the behavior induced by a hierarchical execution.
Let be an HMA and let be a hierarchical execution of . The behavior of is defined to be the behavior of its associated ; namely it is a sequence where is the -th event at level . The language of denoted by is the set of all behaviors induced by the hierarchical executions of .
Iv Solution of Problem ii.1
In this section we give the main elements of the solution to Problem II.1 using hierarchical motion primitives.
Let be a HMA. We say that is well-posed if (i) each hierarchical execution induces a unique behavior in , and (ii) for all initial conditions of a hierarchical execution, there exists a maximal extension to a hierarchical execution such that its level 0 execution is infinite.
Ideally, we would provide a collection of checkable conditions in terms of HMA parameters, and then prove that we obtain a well-posed HMA. See  where such proofs are supplied for only. We have adopted Definition IV.1 in order to focus this paper on high level ideas.
Let be a HMA with . We say that is complete if the following hold:
That is, at level there is only one motion primitive, there are no external transitions, and all states are valid initial conditions.
Completeness provides a hierarchy whose top level acts as a control policy dictating the assignment of motion primitives one level below, with those motion primitives dictating the assignment of motion primitives below that, and so on. In practice, the control policy yielding a complete is obtained by running a planning algorithm at level using only the discrete part , which is a (non-deterministic) graph with labeled transitions. For the reach-avoid problem, one may adapt our algorithm from  for planning at level , or other graph search methods may be employed.
There are two main advantages associated with planning at higher levels. First, a policy produced at a higher level would be much more efficiently computed and represented, composed of only a few high level motion primitives and the transitions between them. Second, the application of planning algorithms to generate policies at higher levels would not need modifications to enforce behavioral constraints explicitly, provided that the concatenation of the constituent high level motion primitives automatically preserve the desired behavioral constraint.
Our main result, Theorem IV.1, states conditions to solve Problem II.1. We can see that conditions (i), (ii), and (iii) correspond to the avoid, reach, and behavior specifications, respectively. The significance of the result is that if a planning algorithm can meet these conditions, then they satisfy the requirements of Problem II.1 at the lowest, continuous time level.
Consider the system (1) with a gridded output space in terms of grid length vector . We are given a feasible and goal set of boxes, and a behavior constraint . Consider a HMA , which is well-posed and complete. Suppose that
all hierarchical executions of reach some subset of boxes of and never leave,
Then there exists a set of initial conditions and an associated feedback control strategy solving Problem II.1.
V Formation Control
In this section we show how hierarchical motion primitives can be used to solve a formation control problem. To illustrate ideas, we consider two agents, each modeled as a double integrator with a scalar output. The behavioral constraint to maintain a formation of two agents, each with one output, is that if one agent incurs an increment in its output value due to the application of a motion primitive, then the other agent experiences the same increment in the successive motion primitive. Consider a behavior of the multi-agent system, where . We require that for all ,
Under this behavioral constraint, the relative value of the two outputs is maintained while at the same time a sequence of motion primitives to achieve a reach-avoid specification is executed by the multi-agent system. The behavioral constraint can be easily generalized to agents.
To implement the formation behavioral constraint using hierarchical motion primitives, we propose a two level hierarchy consisting of the MA’s, and . Level 0 is based on our previous design presented in [22, 23], which we now briefly summarize.
First, the level (atomic) motion primitives for each agent are: Hold (), Forward (), and Backward (), corresponding to the agent’s output holding its value (remaining in the current box of the gridded 1D output space), increasing its value (moving to a box to the right), or decreasing its value (moving to a box to the left). Each agent is equipped with a level maneuver automaton denoted , , as shown in Figure 4.
Second, to obtain a level maneuver automaton for the two agent system, we take the parallel composition of the individual MA’s to form the MA . Informally, parallel composition is based on the cartesian product to account for the asynchronous possibilities that arise when combining two independent subsystems. More generally, for agents we would form . Figure 4 illustrates some of the level motion primitives for the two agents, including , , and so forth for all the possible neighboring directions in 2D.
Finally, the level motion primitives for the two agent system are: Formation Forward (), Formation Backward (), and Formation Hold (). These are depicted in Figure 5. It is easy to see that the concatenation of these level 1 motion primitives satisfies the desired behavior (2). Once again, this design is easily generalized to agents.
Vi Experimental Results
It is well known that the model of a quadrotor is differentially flat, and so the nonlinear dynamics can be effectively treated as three independent double integrators for each of the world frame coordinates . Suppose we have a collection of quadrotors. The corresponding multi-vehicle system (1) has outputs with states. We use our formation hierarchical motion primitives to solve Problem II.1 with a formation behavior constraint.
First, we grid the 3D physical space and identify obstacles. A formation configuration is specified in terms of the relative box offsets between the vehicles to a chosen representative vehicle and a goal box is specified for the representative. Although the full gridded output space for the agent system is obtained by composing the gridded 3D physical space times, we do not compute it explicitly because may be large. Moreover, instead of specifying the feasible boxes , we define virtual obstacles in 3D based the representative vehicle locations, the formation configuration, and physical obstacles. The behavioral constraint on the full gridded space consists of the constraint (2) applied to each physical directions independently on the vehicles.
Next, we group together all outputs of the agents corresponding to each workspace direction , , and , and to each such group we appropriate one level MA, . Then we take the parallel composition of these three MA’s for the three workspace directions to obtain , which has motion primitives, independent of . The resulting HMA is guaranteed to generate the correct behavior, , because the individual components satisfy (2).
Finally, we generate a control policy to yield a complete HMA , which also preserves the formation. The control policy can be generated efficiently based on the 27 motion primitives of and the box locations of the representative vehicle using any shortest path planning algorithm. More specifically, the computation of the control policy is equivalent to the complexity of planning as with a single agent, and the computation of the virtual obstacles is linear in the number of agents. Thus we satisfy our aim to dramatically improve the overall computation time.
|[width=.48trim=0cm 0cm 3.7cm 0cm, clip=true]figs/exp_xylow.pdf||[width=.48trim=3.7cm 0cm 0cm 0cm, clip=true]figs/exp_xyhigh.pdf|
|[width=.9trim=3cm 0.5cm 0cm 3cm, clip=true]figs/plot3d_xyz.pdf|
Experimental results are demonstrated for four Crazyflie quadrotors flown indoors using a VICON motion capture system. The top row of Figure 6 shows the gridded 3D workspace, the physical obstacles (red), and the goal boxes (colored). The behavioral constraint is imposed to maintain a square formation. This scenario is challenging because of the intermingling of obstacles amidst the moving formation and because 3D maneuvers are required for obstacle avoidance. The middle row of Figure 6 shows the resulting 3D trajectories in the workspace, demonstrating that the reach-avoid task was successfully executed. A video is available at http://tiny.cc/hier-moprim. It also shows different scenarios involving more vehicles in order to demonstrate the applicability to a variety of formations and settings as well as the computational scalability of our approach.
In conclusion, we have introduced hierarchical motion primitives to solve the motion planning problem for a large collection of agents. Hierarchical motion primitives are constructed recursively using a hierarchical maneuver automaton. The framework was applied to multi-vehicle formations, yielding novel behaviors such as the ability to pass “through” obstacles while maintaining a formation. Future work includes developing an automated procedure to generate efficient structures of hierarchical motion primitives for arbitrary reach-avoid behavior-constrained problems and discovering additional applications of our hierarchical approach.
-  R. Alur, T.A. Henzinger, G. Lafferriere, and G.J. Pappas, Discrete abstractions of hybrid systems. Proceedings of the IEEE, vol. 88, no 7, pp. 971-984, 2000.
-  N. Ayanian and V. Kumar, Abstractions and controllers for groups of robots in environments with obstacles. Proc. of the IEEE International Conference on Robotics and Automation, 2010.
-  P. E. Caines and Yuan-Jun Wei, Hierarchical hybrid control systems: a lattice theoretic formulation. IEEE Transactions on Automatic Control, vol. 43, no. 4, pp. 501-508, 1998.
-  M. Deni a and A. Ude, Synthesis of new dynamic movement primitives through search in a hierarchical database of example movements. International Journal of Advanced Robotic Systems, vol. 12, no. 10, pp. 137-150, 2015.
-  M. Egerstedt and X. Hu, Formation constrained multi-agent control. IEEE Transactions on Robotics and Automation, vol. 17, no. 6, pp. 947-951, 2001.
-  E. Frazzoli, M. A. Dahleh, and E. Feron, Maneuver-based motion planning for nonlinear systems with symmetries. IEEE Transactions on Robotics, vol. 21, no. 6, pp. 1077-1091, 2005.
-  D. J. Grymin, C. B. Neas, and M. Farhood, A hierarchical approach for primitive-based motion planning and control of autonomous vehicles. Robotics and Autonomous Systems, vol. 62, no. 2, pp. 214-228, 2014.
-  P. Hubbard and P. E. Caines, Dynamical consistency in hierarchical supervisory control. IEEE Transactions on Automatic Control, vol. 47, no. 1, pp. 37-52, 2002.
-  L. P. Kaelbling and T. Lozano-P rez, Hierarchical task and motion planning in the now. Proc. of the IEEE International Conference on Robotics and Automation, 2011.
-  M. Kloetzer and C. Belta, Temporal logic planning and control of robotic swarms by hierarchical abstractions. IEEE Transactions on Robotics, vol. 23, no. 2, pp. 320-330, 2007.
-  M. Kloetzer and C. Belta, A fully automated framework for control of linear systems from temporal logic specifications. IEEE Transactions on Automatic Control. Vol. 53, no. 1, pp. 287-297, 2008.
-  D. Kulic, C. Ott, D. Lee, J. Ishikawa, and Y. Nakamura, Incremental learning of full body motion primitives and their sequencing through human motion observation. International Journal of Robotics Research, vol. 31, no. 3, pp. 330-345, 2012.
-  J. Lygeros, K.H. Johansson, S. Sastry, and M. Egerstedt. On the existence of executions of hybrid automata. IEEE Conference on Decision and Control, 1999.
-  S. Nagavalli, N. Chakraborty, K. Sycara, Automated sequencing of swarm behaviors for supervisory control of robotic swarms. Proc. of the IEEE International Conference on Robotics and Automation, 2017.
-  K-K. Oh, M-C. Park, and H-S. Ahn, A survey of multi-agent formation control. Automatica, vol 53, no. 3, pp. 424-440, 2015.
-  M. Pivtoraiko and A. Kelly, Kinodynamic motion planning with state lattice motion primitives. Proc. of the International Conference on Intelligent Robots and Systems, 2011.
S. J. Russell and P. Norvig, Artificial Intelligence, a Modern Approach. Prentice Hall, third edition, 2010.
-  I. Saha, R. Ramaithitima, V. Kumar, G. J. Pappas, and S. A. Seshia, Automated composition of motion primitives for multi-robot systems from safe LTL specifications. International Conference on Intelligent Robots and Systems, 2014.
-  L. Sentis and O. Khatib, Synthesis of whole-body behaviors through hierarchical control of behavioral primitives. International Journal of Humanoid Robotics, vol. 2, no. 4, pp. 505-518, 2005.
-  X. Sun and C. G. Cassandras, Optimal dynamic formation control of multi-agent systems in constrained environments. Automatica, vol. 73, no. 11, pp. 169-179, 2016.
-  P. Tabuada, G. J. Pappas, and P. Lima, Compositional abstractions of hybrid control systems. Proc. of the IEEE Conference on Decision and Control, 2001.
-  M. Vukosavljev, Z. Kroeze, M. E. Broucke, and A. P. Schoellig. A Framework for Multi-Vehicle Navigation Using Feedback-Based Motion Primitives. Proc. of the International Conference on Intelligent Robots and Systems, 2017.
-  M. Vukosavljev, Z. Kroeze, A. P. Schoellig, and M. E. Broucke. A modular framework for motion planning using safe-by-design motion primitives. IEEE Transactions on Robotics, accepted January 2019.
-  E. M. Wolff, U. Topcu, and R. Murray. Optimal control of non-deterministic systems for a computationally efficient fragment of temporal logic. Proc. of the IEEE Conference on Decision and Control, 2013.
-  W.M. Wonham and K. Cai, “Supervisory Control of Discrete-Event Systems,” [Online]. Available: http://www.control.utoronto.ca/~wonham/Research.html.