May 13, 2024

Pole Placement to Meet the Requirements on Desired Overshoot and Rise Time – Control Engineering Tutorials


In this control engineering tutorial, we explain how to design a state feedback control law such that the poles of the closed-loop system are placed at the appropriate locations that guarantee that the step response meets the desired specifications. The important technique presented in this tutorial is widely used in the control system engineering practice. The YouTube tutorial accompanying this post is given below.

Problem Formulation and Solution

We explain this technique by using a particular example that is presented in the sequel. Consider the following open-loop transfer function:

(1)   \begin{align*}W(s)=\frac{1}{s^{2}(s+4)}\end{align*}

We need to design a state feedback control system such that the following requirements are satisfied

1.) The rise time should not be larger than 1 second.
2.) The overshoot should not be larger than 10 percent.

Solution:

The first step is to develop a state-space model corresponding to the system (1). To develop the state-space model, we use the controllable canonical form explained in our previous tutorial. We use this approach since the controllable canonical form enables us to quickly compute the characteristic polynomial of the closed-loop system. We can also use other methods for pole placement, such as MATLAB’s function place().

First, we expand the transfer function:

(2)   \begin{align*}\frac{1}{s^{2}(s+4)}=\frac{1}{s^{3}+4s^{2}}\end{align*}

We can observe that the polynomials in the numerator and denominator are

(3)   \begin{align*}b(s)=1 \\a(s)=s^{3}+4s^{2}\end{align*}

Then, the controllable canonical form is given below

(4)   \begin{align*}\dot{\mathbf{x}}=\underbrace{\begin{bmatrix} -4 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}}_{A}\mathbf{x}+\underbrace{\begin{bmatrix}1 \\ 0 \\ 0  \end{bmatrix}}_{B}u \\y=\underbrace{\begin{bmatrix} 0 & 0 & 1  \end{bmatrix}}_{C}\mathbf{x}\end{align*}

Our goal is to design a feedback control law

(5)   \begin{align*}u=-K\mathbf{x}=-\begin{bmatrix}k_{1} &  k_{2} & k_{3} \end{bmatrix}\mathbf{x}\end{align*}

such that the poles of the closed-loop system are placed at proper locations that we need to determine in the sequel. Later on, we will modify this control law to introduce a reference signal and an additional gain to ensure that step responses are properly tracked.

To determine the pole locations, we need to recall the basic pole parametrization in terms of the damping ratio \zeta and natural undamped frequency \omega_{n}. The figure below shows the parametrization idea.

Figure 1: Pole parametrization.

The poles are parametrized by

(6)   \begin{align*}s_{1}=-\zeta\omega_{n}+j\omega_{n}\sqrt{1-\zeta^{2}} \\s_{2}=-\zeta\omega_{n}-j\omega_{n}\sqrt{1-\zeta^{2}}\end{align*}

Although our system is of the third order, for selection of the parameters \zeta and \omega_{n} we use a second order approximation of the dynamics. This approximation is justified for dominant poles. That is, it approximates the dynamics of the dominant poles fairly well, as long as the third pole is placed far away from these dominant poles. The second-order prototype system is parametrized by

(7)   \begin{align*}T(s)=\frac{\omega_{n}^{2}}{s^{2}+2\zeta\omega_{n}s+\omega_{n}^{2}}\end{align*}

For such a system, we can relate overshoot and rise time with the damping ratio \zeta and natural undamped frequency \omega_{n}. We can use the formulas given in Chapter 7 (pages 334,335, and 336) of “Automatic Control Systems” by Benjamin Kuo. The maximum overshoot is given by the following formula:

(8)   \begin{align*}M_{os}=100\cdot e^{-\frac{\pi\zeta}{\sqrt{1-\zeta^{2}}}},\;\;\; \text{expressed in percentages}\end{align*}

where M_{os} is the maximum overshoot. On the other hand, the rise time is given by the following equation

(9)   \begin{align*}t_{r}=\frac{1-0.4167\zeta+2.917\zeta^{2}}{\omega_{n}}\end{align*}

From (8), we can find \zeta by using the desired specification of the maximum overshoot. Then, by using the desired specifications on the rise time and the computed \zeta, we can determine \omega_{n}. Once we determine \zeta and \omega_{n}, we substitute them in (6), to determine the pole locations that approximately produce the desired transient response.

From (8), we have

(10)   \begin{align*}\zeta=\sqrt{\frac{\ln^{2}\big(M_{os}/100 \big)}{\pi^{2}+\ln^{2}\big(M_{os}/100 \big)} }\end{align*}

By substituting the desired M_{ov} in the last equation, we obtain the value for \zeta:

(11)   \begin{align*}\zeta=0.5912\end{align*}

Since for larger values of \zeta we obtain smaller overshoots, we round this computed value of \zeta to

(12)   \begin{align*}\zeta=0.6\end{align*}

On the other hand, from (9), we have

(13)   \begin{align*}\omega_{n}=\frac{1-0.4167\zeta +2.917\zeta^2}{t_{r}}\end{align*}

By substituting this value in (12), we obtain the value of \omega_{n}

(14)   \begin{align*}\omega_{n}=1.7731\end{align*}

Since larger values of \omega_{n} produce smaller rise time, we round this number to obtain the final value for \omega_{n}

(15)   \begin{align*}\omega_{n}=1.8\end{align*}

Having these values, and by using (6) we can design the closed loop poles:

(16)   \begin{align*}s_{1}=-1.0481+j1.4301\\s_{2}=-1.0481-j1.4301\end{align*}

We place the third pole relatively far away from these poles. We choose a real third pole

(17)   \begin{align*}s_{3}=-6\end{align*}

The desired closed-loop characteristic polynomial has the following form

(18)   \begin{align*}f(s)=(s-s_{1})(s-s_{2})(s-s_{3})=s^{3} +8.0963s^{2} +15.7215s +18.8623\end{align*}

This is our target characteristic polynomial that will guarantee the desired system transient behavior. On the other hand, let us consider the feedback control system obtained by substituting the feedback (5) in (4):

(19)   \begin{align*}\dot{\mathbf{x}}=A\mathbf{x}+Bu=A\mathbf{x}-BK\mathb{x}=\big(A-BK\big) \mathbf{x}\end{align*}

We have

(20)   \begin{align*}& A-BK=\begin{bmatrix} -4 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix}-\begin{bmatrix} 1 \\ 0 \\ 0 \end{bmatrix}\begin{bmatrix}k_{1} & k_{2} & k_{3}  \end{bmatrix} \\& A-BK =\begin{bmatrix} -4-k_{1} & -k_{2} & -k_{3} \\ 1 & 0 & 0 \\ 0 & 1 & 0  \end{bmatrix}\end{align*}

We can observe that the closed-loop matrix A-BK is the controllable canonical form, and consequently, we can immediately write the closed-loop characteristic polynomial

(21)   \begin{align*}f_{cl}(s)=s^{3}+(4+k_{1})s^{2}+k_{2}s+k_{3}\end{align*}

This parametrized polynomial should be equal to (18), that is,

(22)   \begin{align*}& f_{cl}(s)=f(s) \\& s^{3}+(4+k_{1})s^{2}+k_{2}s+k_{3}=s^{3} +8.0963s^{2} +15.7215s +18.8623\end{align*}

Two polynomials are equal if their coefficients are equal, consequently, we have

(23)   \begin{align*}4+k_{1}=8.0963,\;\; k_{2}=15.7215,\;\; k_{3}=18.8623\end{align*}

That is,

(24)   \begin{align*}k_{1}=4.0963,\;\; k_{2}=15.7215,\;\; k_{3}=18.8623\end{align*}

These coefficients of the feedback control matrix should guarantee the desired transient response characteristics. The final step is to add a reference signal to the control input.

To add the reference signal, we need to make the following analysis. Consider the system

(25)   \begin{align*}\dot{\mathbf{x}}=A\mathbf{x}+Bu \\y=C\mathbf{x}\end{align*}

Let us assume that there exist a constant u_{s} that produces a steady-state output y_{s} and steady state \mathbf{x}_{s}. Then, u_{s}, y_{s}, and \mathbf{x}_{s} satisfy

(26)   \begin{align*}0=A\mathbf{x}_{s}+Bu_{s} \\y_{s}=C\mathbf{x}_{s}\end{align*}

where \dot{\mathbf{x}}_{s}=0 in the steady state. By subtracting the state equations of the state space models (25) and (26), we obtain

(27)   \begin{align*}\dot{\mathbf{x}}=A\underbrace{(\mathbf{x}-\mathbf{x}_{s})}_{\tilde{\mathbf{x}}}+B\underbrace{(u-u_{s})}_{\tilde{u}}\end{align*}

where \tilde{\mathbf{x}}=\mathbf{x}-\mathbf{x}_{s}, and \tilde{u}=u-u_{s}. Since

(28)   \begin{align*}\dot{\tilde{\mathbf{x}}}=\frac{d}{dt}(\mathbf{x}-\mathbf{x}_{s})=\frac{d}{dt}\mathbf{x}-0=\dot{\mathbf{x}}\end{align*}

We have that (27) can be written as follows

(29)   \begin{align*}\dot{\tilde{\mathbf{x}}}=A\tilde{\mathbf{x}}+B\tilde{u}\end{align*}

Here it should be noted that this system has the same state-space matrices as the original system (25). That is the K matrices computed for such a system and for the original system are identical. Consequently, we can use the K matrix for the original system to assign the poles to this system. The feedback control law will have the following form

(30)   \begin{align*}\tilde{u}=K\tilde{\mathbf{x}}\end{align*}

By expanding the last equation, we obtain

(31)   \begin{align*}u=u_{s}-K\mathbf{x}+K\mathbf{x}_{s}\end{align*}

Now, let us assume that the reference signal r (desired constant signal that we want to follow) satisfies these equations

(32)   \begin{align*}u_{s}=K_{u}r,\;\; \mathbf{x}_{s}=K_{x}r\end{align*}

where K_{u} is a scalar and K_{x} is a column vector that we want to determine. The equation (32) has a physical explanation. If the reference signal r is constant, and the system is asymptotically stable, then, as the time approaches infinity the steady-state of the system \mathbf{x}_{s} will be reached. This means that there exist a linear relationship between \mathbf{x}_{s} and r, and the coefficient of the linear relationship is precisely the vector K_{x}. The scalar K_{u} is just a scaling of the reference signal. On the other hand, for precise following of the reference signal in the steady-state, the following equations should be satisfied

(33)   \begin{align*}0 =A\underbrace{K_{x}r}_{\mathbf{x}_{s}}+B\underbrace{K_{u}r}_{u_{s}} \\r=C\underbrace{K_{x}r}_{\mathbf{x}_{s}}\end{align*}

These equations are obtained by substituting (32) and y_{s}=r in (26). From (33), we obtain by eliminating r

(34)   \begin{align*}0 =AK_{x}+BK_{u} \\1=CK_{x}\end{align*}

or

(35)   \begin{align*}\begin{bmatrix}0 \\ 1\end{bmatrix}=\begin{bmatrix}A & B \\ C & 0\end{bmatrix} \begin{bmatrix}K_{x} \\ K_{u}  \end{bmatrix}\end{align*}

We can solve these equations to compute the gains K_{x} and K_{u}, the solution is

(36)   \begin{align*}\begin{bmatrix}K_{x} \\ K_{u}  \end{bmatrix}=\begin{bmatrix}A & B \\ C & 0\end{bmatrix}^{-1}\begin{bmatrix}0 \\ 1\end{bmatrix}\end{align*}

By using the computed values and by substituting (32) in (31), we obtain the final control law

(37)   \begin{align*}&u=K_{u}r-K\mathbf{x}+KK_{x}r=-K\mathbf{x}+\underbrace{(K_{u}+KK_{x})}_{B_{r}}r \\&B_{r}=K_{u}+KK_{x}\end{align*}

By substituting this control law in the state-space model (25), we obtain the final regulated system with the reference input

(38)   \begin{align*}& \dot{\mathbf{x}}=(A-BK)\mathbf{x}+BB_{r}r \\& y=C\mathbf{x}\end{align*}

The system (38) is regulated in the sense that it satisfies the desired transient characteristics and it follows the step signal r.

The MATLAB code is shown below.

clear
% overshoot
Mos=10
MlogSq=(log(Mos/100))^2
% damping ratio
zeta=sqrt(MlogSq/(pi^2+MlogSq))
% rise time
tr=1;
% natural undamped frequency
omegaN=(1-0.4167*zeta+2.917*zeta^2)/tr;
% real part
realPart=omegaN*zeta;
% imaginary part
imaginaryPart=omegaN*sqrt(1-zeta^2);
% third pole
c=-6;
% closed loop polynomial
fcl=[1 -(c+2*(-realPart)) (2*(-realPart)*c+(-realPart)^2+(-imaginaryPart)^2) -c*((-imaginaryPart)^2+(-realPart)^2)]
roots(fcl)
realPart
imaginaryPart

A=[-4 0 0; 1 0 0; 0 1 0]; B=[1; 0; 0]; C=[0 0 1];
matrix1=[A, B; C, 0]; leftSide=[0;0;0; 1];
gainMatrix=inv(matrix1)*leftSide;

% this the feedback gain matrix
Kmatrix=[4.0963, 15.7215, 18.8623];
% closed loop matrix
Acl=A-B*Kmatrix;
% check the eigenvalues
eig(Acl)
% B matrix for the reference signal
Br=gainMatrix(4)+Kmatrix*gainMatrix(1:3);
Bcl=B*Br;
ssCl=ss(Acl,Bcl,C,[]);

step(ssCl)
tf(ssCl)

The computed closed-loop transfer function is

(39)   \begin{align*}Q(s)=\frac{18.86}{s^3 + 8.096 s^2 + 15.72 s + 18.86}\end{align*}


The step response of the closed-loop function (step reference signal r) is shown in the figure below. This figure shows the rise time.

Figure 2: Step response of the closed-loop system (39) showing the rise time.

Figure 3 below shows the overshoot value of the same step response.

Figure 3: Step response of the closed-loop system (39) showing the overshoot.

From figures 2 and 3, we can observe that the desired transient response specifications are achieved by placing the poles at the proper locations.