You can skip right to the demo if you click here.
If you took an introductory linear systems class you learned, given a system, how to determine system behavior (usually a step response or a Bode plot). As an engineer the problem is typically the reverse. You know what kind of system response you want, and it is your job to design a sysetem that meets design goals. One common technique for doing this design is based on what is called a "root locus" plot.
To understand what root locus plots are, and why they are important, let's examine the behavior of a system when it is in a control system. Assume that the system is defined by the transfer function:
\[G(s) = \frac{1}{{s(s + 3)}}\]
We'll control this system with a very simple proportional controller in which the input to the system to be controlled is proportional (with gain, K) to the difference between the input, R(s), and the output, C(s).
The loop gain is K·G(s), so the closed loop gain is given by
\[\eqalign{H(s) &= \frac{{C(s)}}{{R(s)}} = \frac{{K \cdot G(s)}}{{1 + K \cdot G(s)}} = \frac{{K \cdot \frac{1}{{s(s + 3)}}}}{{1 + K \cdot \frac{1}{{s(s + 3)}}}} \hfill \\ &= \frac{K}{{s(s + 3) + K}} = \frac{K}{s^2 + 3s + K} } \]Note: This expression for H(s) is easily derived: E(s)=R(s)-C(s) and C(s)=K·E(s)=K·(C(s)-R(s)). Collect terms and solve for H(s)=C(s)/R(s).
We want to examine how the behavior of the system varies as K changes, so let's try several values of K. Let's arbitrarily try K=1, 10 and 100 so that we have a wide range of K values.
K, Xfer Function | Step Response |
---|---|
\[K = 1,\quad \frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{1}{{{s^2} + 3s + 1}}\] | |
\[K = 10,\quad \frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{10}{{{s^2} + 3s + 10}}\] | |
\[K = 100,\quad \frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{100}{{{s^2} + 3s + 100}}\] |
The response with K=1 (blue) is very slow, the response with K=100 (maroon) is faster but very oscillatory. However the response with K=10 (green) is fast and has about 20% overshoot (we'll show later that we can reduce this overshoot and maintain the speed of the response). Clearly this method is rather "hit-or-miss" and it may take us a long time to find a suitable value for K, especially for more complicated systems.
A more analytical method might involve finding the poles of the closed loop transfer function. Since the transfer function is second order, we can factor the denominator using the quadratic equation. The roots of the denominator are at:
\[s = \frac{{ - 3 \pm \sqrt {9 - 4K} }}{2} = - \frac{3}{2} \pm \frac{{\sqrt {9 - 4K} }}{2}\]This will give overdamped response for 9>4K, underdamped response for 9<4K, and critically damped response for 9=4K. If we specify that we want an underdamped response with ζ=1/√2 (which is known to give a relatively fast response with only about 5% overshoot) then (note that the term in the square root had the sign reversed, and a 'j' term was added before it).
\[s = - \frac{3}{2} \pm j \frac{3}{2} = - \frac{3}{2} \pm j \frac{{\sqrt {4K-9} }}{2}\]we must set the magnitudes of the real and imaginary parts of the roots equal to each other.
\[\frac{3}{2} = \frac{{\sqrt {4K-9} }}{2}\]So,
\[\eqalign{ 3 &= \sqrt {4K-9} \hfill \\ 9 &= 4K-9 \hfill \\ K &= \frac{{18}}{4} = 4.5 \hfill } \]Let's try this value in our design. If we use K=4.5 we get the transfer function
\[\frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{{4.5}}{{{s^2} + 3s + 4.5}}\]and the step response is shown below. As you can see, it is superior to our other attempts; it is reasonably fast with fairly small overshoot.
While this technique is suitable for simple problems, like the one given, it quickly becomes untenable for more complicated systems. For example what would we do if $G\left( s \right) = \frac{{s + 1}}{{{s^3} + 4{s^2} + 6s + 4}}$?We will need another approach to deal with such systems. This is introduced in the next section (though in the context of the simple system we have been dealing with).
For the very simple problem described above, it was possible to calculate the precise location of the roots, and choose a value of K that gave us a good response. For more complicated systems it is not so straightforward so we need a more general method for finding K. This more general method is called the "root locus" method. With this technique we make a plot of the path of the roots as a parameter (usually the gain, as above) varies. We then choose pole locations, and find the value of K necessary. (Note)
For our purposes, a locus is defined as the set of all points on a plane that satisfy a given requirement.
Consider the simple example from above,
\[\frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{K}{{{s^2} + 3s + K}}\]If we want to plot the path of the roots as K varies we can calculate the roots of the equation s2 + 3s + K = 0, for many values of K by using the quadratic equation.
K | Roots |
---|---|
1 | -2.62, -0.38 |
2 | -2, -1 |
4 | -1.5 ± j1.32 |
10 | -1.5 ± j2.78 |
20 | -1.5 ± j4.21 |
40 | -1.5 ± j6.14 |
100 | -1.5 ± j9.89 |
These values are plotted below (for complex conjugate roots, the value of K is only shown for the root with a positive imaginary part).
There is a lot of information in this diagram. It tells us that the system starts out overdamped for small values of K, and becomes underdamped as K increases, and becomes increasingly underdamped as K continues to increase.
A root locus plot is a variation on this kind of plot. It shows the path of the roots as K is varied, but does not show the actual values of K. This kind of plot is sufficiently important that Matlab has a command specifically for generating these plots. A root locus plot for this system is shown below, along with the Matlab used to create it.
>> G=tf(1,[1 3 0]) %Define loop gain transfer function Transfer function: 1 --------- s^2 + 3 s >> rlocus(G) >> axis([-4 0 -4 4])
The starting points for the roots, when K=0 (Note) , are shown by the two small "×" marks at s=0 and s=-3. As K increases, the two roots move horizontally towards each other, meet at s=-1.5, and then move vertically away from each other.
Of course we would never use K=0, because this effectively breaks the closed loop system by always making the input to the controlled system equal to zero. However, it does give us a starting point for the root locus.
Though the value of K isn't plotted on the graph it is easily found. For example, if we want to know the value of K at s=-1.5+j0 we can use the fact that the characteristic equation of
\[\frac{{C\left( s \right)}}{{R\left( s \right)}} = \frac{{K \cdot G\left( s \right)}}{{1 + K \cdot G\left( s \right)}}\]is given by the denominator,
\[1 + K \cdot G\left( s \right) = 0,\quad {\text{ or K = }} - \frac{1}{{G\left( s \right)}}\]Let's create a design where the roots of the system are at s=-1.5.The equation above is true for any point on the root locus (more on this on the next page), and in particular it is true at s=-1.5. Since at s=-1.5
\[\begin{gathered} G\left( s \right) = \frac{1}{{s\left( {s + 3} \right)}} \\ G\left( { - 1.5} \right) = \frac{1}{{ - 1.5\left( { - 1.5 + 3} \right)}} = \frac{1}{{ - 1.5 \cdot 1.5}} = - \frac{1}{2.25} = - 0.44 \hfill \\ \end{gathered} \]We can use this information to calculate the desired value of K:
\[K = - \frac{1}{{G\left( s \right)}} = 2.25\]This process is important (and common) enough that MATLAB has a way to do it automatically. If you click on the root locus plot at s=-1.5+j0, MATLAB will calculate and display the gain K as is shown in the diagram at right (along with some information about the system behavior). You can also make use of MATLAB's rlocfind() function.
You can try this yourself. We will use the same system as before, shown here to refresh your memory
Congratulations. You have just done a (very simple) root locus design.
For the very simple system of this problem, there were many ways to find how the roots varied as we varied the gain of the system. For a more complicated system this is not easy. The root locus plot gives us a graphical way to observe how the roots move as the gain, K, is varied. The next page (click on the right arrow at the top left of this page) gives a description of techniques for sketching the location of the closed loop poles of a system for systems that are much more complicated than the one displayed here..
The root locus plot indicates how the closed loop poles of a system vary with a system parameter (typically a gain, K).
We can choose a value of 's' on this locus that will give us good results. The shape of the locus can also give us information on design of a more complex (lead/lag, PID controller) - though that wasn't discussed here.