prev | index | next

Viability Envelopes

This page illustrates examples of application of viability envelopes; for particulars of the method please see our ICRA2004 paper. Also available are the ICRA 2004 talk slides, or Powerpoint slides of the DGP Research day talk.

Abstract

This work presents a numerical method for the containment of the state of a dynamic system within some arbitrarily shaped region of state-space. One such useful region, as employed in all the examples, is the subject's vability region, the set of all states in which the subject is controllable. Containment is achieved by constraining the allowed control inputs. The region can be specified externally, or in the case of viability, may be automatically discovered (further details here). Application to simple vehicle motion is shown.

Example: vertical rocket

A vertical axis rocket that is constrained using a viability envelope to avoid collision with the ground.

Legend for the state-space view:

• green & red dots: sample rocket states which are known to be viable(green) and non-viable(red); their non-uniform placement is a result of the stochastic nature of the process used to obtain them
• grey lines: the Voronoi regions defined by the above samples
• yellow line: the decision surface (i.e., the approximation of the viability envelope derived from the above sample set)
• blue curve: the rocket's trajectory in the movie
• orange "rake": the set of short-term simulations performed by the system to gauge which control inputs are viable; the white line indicates the control input chosen

Legend for the world-space view:

• blue "tail" on rocket: indicates amount of thrust being applied (i.e., the control input)
• color bar across top: display of the tested control inputs and their "time to envelope breach"; red indicates 0s, green indicates the time is equal or larger than the "time horizon"; the inputs across the top are varying amounts of (constant) thrust, with zero thrust on left, and full thrust on right

Example: car

In this example we have a car constrained to a viability envelope for a rectangular track, while the user applies a roughly sinusoidal control input (steering angle).

This is a plot of user's control input (red), final applied control input (blue), and the unviability of particular control inputs at various points in time (pale green). In essence the system tries to track the user's (red) control input, except when it is unviable (pale green region). Click on the plot for a full size image of the plot.

The corresponding world-space view of the run is shown below, on the left, while on the right is the viability envelope (click for movie):

Below is another car example, in a different terrain:

example: bike

Finally here is an example of a bike under viability envelope constraint. The envelope ensures the bike does not fall over.

In the world-space view of the bike, in the color/viability bar at top, the red arrow indicates the control input being requested by the user, while the green arrow indicates the control input actually applied. The cell color for the various control inputs at top is same as in the rocket scenario. In this example the control input consists of the steering angle, as well as the forward velocity, hence why the viability envelope is embedded in the 3D space: (lean, dlean/dt, forward velocity).

Movies

The remaining is a quick dump of all movies created. Please note that these are "raw", unaltered movies obtained in the course of research, and as such are neither polished nor as clear and helpful as they could be.

• all movies
• movie: rocket landing using analytic envelope; of note is how exact the system is, despite the control input space having been discretized to only 9 values. The lights at the top indicate proximity of a breach (red = breached immediate, green = no breach in time horizon). The two tiny arrows below them indicate the user's input (red arrow), and the final applied input (green arrow). Left end is 0 thrust, right is max thrust.
• movie: rocket landing using approximate envelope; here the user applies full thrust for an initial period, then cuts power to 0% for the remainder of the run.
• movie: state-space view of same run. The red and green points are the "out" and "in" samples that give rise to the viability envelope (jagged yellow line) using a Nearest Neighbour classifier. The orange tree is the set of trajectories of the system for the various candidate control inputs. The white one is the one curretly adopted by the system (only shown if applied input is from the discrete set).
• movie: a closer look at the state-space behaviour; note that the x and y axes have been swapped.
• movie: bike balancing using a viability envelope; note that although only the steering angle is being monitored and corrected, the user is allowed full freedom in controlling the bike's velocity. In the future we plan to look at performing corrections in such multi-dimensional control input spaces explicitly.
• movie: the state-space behaviour of a car's state; this introduces the simplified "car on straight road" model, where the state-space consists of car's orientation plotted on y axis vs the car's displacement from the middle of the road in the x axis.
• movie: the same car being contained within the envelope for this scenario. This was our first testcase and uses a hand generated polygonal envelope instead of the typical NN one.
• movie: car on a rectangular track under envelope containment; the purple arrow indicates the difference between the applied input and the user's originally requested input.
• movie: the 3D envelope in state-space for the above example
• movie: a more unconventional terrain for the car; symmetry was used purely for aesthetic reasons, and is not necessary
• movie: the 3D envelope in state-space for the above example