๐ Documents (GitHub)
ยฉ๏ธ License CC BY 4.0
๐ | Code | ๐ | Worked Example |
๐ | Graph | ๐งฉ | Exercise |
๐ท๏ธ | Definition | ๐ป | Numerical Method |
๐ | Theorem | ๐งฎ | Analytical Method |
๐ | Remark | ๐ง | Theory |
โน๏ธ | Information | ๐๏ธ | Hint |
โ ๏ธ | Warning | ๐ | Solution |
When the system
is not asymptotically stable at the origin, maybe there are some
inputs
that we can use to stabilize asymptotically the system?
We search for
for some
In this scheme
โ ๏ธ The full system state
๐ท๏ธ This information is then fed back into the system.
๐ท๏ธ The feedback closes the loop.
When
the state
The closed-loop system is asymptotically stable iff every eigenvalue of the matrix
is in the open left-hand plane.
Multisets remember the multiplicity of their elements. Itโs convenient to describe the spectrum of matrices:
The system
is controllable.
Consider the double integrator
(in standard form)
โ The place_poles
function rejects eigenvalues whose
multiplicity is higher than the rank of
In the previous example,
โ poles = [-1, -1]
wonโt work.
โ๏ธ poles = [-1, -2]
will.
Consider the system with dynamics
We apply the control law
Can we assign the poles of the closed-loop system freely by a
suitable choice of
Explain this result.
Since the characteristic polynomial is also
Thus we have
and both poles cannot be assigned freely; for example if we select
We have not checked the assumptions of ๐ Pole Assignment yet.
The commandability matrix is
Since the system is not controllable, pole assignment may fail and it does here.
Consider the pendulum with dynamics:
Numerical Values:
Compute the linearized dynamics of the system around the equilibrium
Design a control law
Simulate this control law on the nonlinear systems when
Let
We notice that
The system dynamics can be approximated around
or in standard form
Consider the dynamics:
Numerical values:
Compute the poles of the system.
Is the origin asymptotically stable?
Use a linear feedback to:
kill the oscillatory behavior of the solutions,
โspeed upโ the dynamics.
Let
>>> eigenvalues
array([-15.64029062 +0.j ,
-3.15722141+11.45767938j,
-3.15722141-11.45767938j,
-0.04526657 +0.j ])
Since all eigenvalues have a negative real part, the double-spring system is asymptotically stable.
figure()
x = [real(s) for s in eigenvalues]
y = [imag(s) for s in eigenvalues]
plot(x, y, "kx")
plot(0.0, 0.0, "k.")
gca().set_aspect(1.0)
title("Spectrum of $A$"); grid(True)
>>> eigenvalues
array([-15.64029062 +0.j ,
-3.15722141+11.45767938j,
-3.15722141-11.45767938j,
-1. +0.j ])
figure()
x = [real(s) for s in eigenvalues]
y = [imag(s) for s in eigenvalues]
plot(x, y, "kx")
plot(0.0, 0.0, "k.")
gca().set_aspect(1.0)
title("Spectrum of $A - B K$"); grid(True)
>>> eigenvalues
array([-15.64029062+0.j,
-12.5 +0.j,
-11.11111111+0.j,
-10. +0.j])
figure()
x = [real(s) for s in eigenvalues]
y = [imag(s) for s in eigenvalues]
plot(x, y, "kx")
plot(0.0, 0.0, "k.")
ylim(-12, 12)
gca().set_aspect(1.0)
title("Spectrum of $A - B K$"); grid(True)