H-infinity synthesis with Scilab Part I : Problem Setup

After the introduction by George Zames in the late 1970’s, H_\infty control has become an active research, with tons of articles published each year. Despite that academic growth, Its usage in practical industry remains minimal. While most control design software has toolbox functions for H_\infty synthesis and beyond, the user-unfriendliness of these functions are well-known. It’s fair to say, if you don’t know much about robust control theory, leave them alone. Anyway, in this article we discuss introductory H_\infty synthesis in a nutshell, and provide examples using functions and features available in Scilab/Xcos, an open-source alternative to MATLAB/Simulink.

To narrow down the scope, we focus on a particular H_\infty scheme called “mixed-sensitivity approach” in [1]. Controller synthesis is formulated as closed-loop transfer function shaping problems, mostly the sensitivity S, complementary sensitivity T, or some combination like KS, where K is the resulting stabilizing controller, hence the name “mixed-sensitivity.” The discussion is restricted to SISO (single-input/single-output) systems. Moreover, we only show the how-to’s and omit the underlying math/theory to save space. Please consult robust control texts xuch as [1], my all-time favorite on the subject.

Problem Formulation

H_\infty is a model-based, output-feedback control. First a plant model must be available, either from physics or experiments. The latter, often referred to as system identification (Sys-ID) process, is prefered for control design, since it generally gives a good model that represents the real plant. For best result, the acquired model must be validated using different datasets from the ones you use in the Sys-ID.

Control synthesis is no different from any other computer algorithm: garbage-in, garbage-out applies. So the first and important step in the process is to put valid problem data to a form that the algorithm can interpret. This setup is sometimes called a “modern” paradigm, even though it’s quite dated already. Whatever the name, the framework is shown in Figure 1, consisting of the generalized plant P connected with the stabilizing controller K. Data in P contains the plant together with all weighting functions, while K is the controller we want to synthesize. Port w and u are exogenous input and control variable, and z and v are exogenous output to be minimized, and measured output to the controller, respectively. In a feedback diagram the signal v and u normally corresponds to the input and output of the controller. On the other hand, the signal w and z are defined according to the problem at hand.

Figure 1: general control configuration

As an example, consider the feedback system in Figure 2 with signals at certain points labeled as r =command, d = disturbance, n = measurement noise, e = tracking error, y_p = plant output, u and v are controller input and output. It is straightforward to arrange the diagram to the framework shown in Figure 3. Typically it’s not necessary to include all the signals shown here. For a regulation problem, say, the command signal r should be neglected.

Figure 2: a standard feedback system with defined signals

Figure 3: feedback system put into synthesis framework

Now we provide more details to the two common problems: disturbance attenuation (or regulation) and tracking

Disturbance Attenuation

For disturbance attenuation setup, the exogenous input is a disturbance signal d entering at the plant output. Normally the disturbance signal has low frequency spectrum, so it can be attenuated if the gain of S is made small in that low frequency range. A performance weighting function w_1 is used to cast S to a desired shape; i.e., a stabilizing controller is synthesized to minimize \left\parallel w_1S\right\parallel. This requirement alone is impractical because there is no bandwidth limitation for the closed-loop system. So another weighting function w_2 is imposed on a suitable transfer function, a good choice is KS. So the goal of this S/KS mixed-sensitivity problem is to find a stabilizing controller that minimizes

    \begin{displaymath} \left| \left| \left[ \begin{array}{c} w_1S\\ w_2KS\\ \end{array} \right] \right| \right| _\infty. \end{displaymath}

With this setup, a generalized plant can be formed as shown in Figure 4, in transfer function (left) and state space (right) structures.

Figure 4: generalzied plant for disturbance attenuation problem


Tracking performance is evaluated as the ability of feedback system to minimize error between command signal r and plant output y. Since a typical command signal changes gradually, It can be easily verified that this amounts to the gain of S be made small in the low-frequency range as well. So, for SISO feedback system, the performance requirement for disturbance attenuation and tracking is similar; that is, to minimize \parallel w_1S \parallel where w_1 is a performance weighting function. We also need to constrain closed-loop bandwidth as before. It is customary for a tracking problem to cast another weight w_2 on T. Hence, the resulting stabilizing controller must minimize

    \begin{displaymath} \left|\left| \left[ \begin{array}{c} w_1S\\ w_2T\\ \end{array} \right] \right| \right| _\infty. \end{displaymath}

This setup is also called S/T mixed-sensitivity problem. Figure 5 shows how to form a generalized plant.

Figure 5: generalzied plant for tracking problem

Weight Selection

For performance requirement, the minimization of \parallel w_1S\parallel _\infty < 1 is equivalent to S(j\omega)| < 1/|w_1(j\omega)|, \forall\omega. In words, we want the sensitivity gain |S| to lie below the inverse of weighting function w_1 for all frequency. Roughly speaking, we simply plot gain of 1/w_1 and see if it looks like the desired sensitivity gain. The three quantities of interest, shown in Figure 6, are A=minimum steady-state tracking error, \omega_B=minimum bandwidth (where 1/|w_1| crosses 0.707), and M= maximum peak magnitude of S.

Figure 6: criteria for inverse of performance weight

With these criteria, a weighting function can then be selected as

    \begin{displaymath} w_1(s) = \frac{s/M+\omega_B}{s+\omega_BA}. \end{displaymath}

In case a steeper slope in low-frequency region is required, an n^{th} order weight

    \begin{displaymath} w_1(s) = \frac{\left(s/M^{1/n}+\omega_B\right)^n}{\left(s+\omega_BA^{1/n}\right)^n} \end{displaymath}

may be used.

A weighting function w_2 to constrain bandwidth can be chosen such that the gain of 1/w_2 forces a rolloff at desired frequency.

The next article in this series will provide an example of servo robot joint control using Scilab/Xcos. Stay tuned.


  1. Skogestad S. and I. Postlethwaite, Multivariable Feedback Control: Analysis and Design, 2nd ed., John Wiley & Sons, 2005



Comments are closed.