Chapter 24: Robustness Analysis with Classical Tools
Lesson 5: Limitations of Classical Robustness Analysis
This lesson critically examines the limitations of classical robustness tools (gain/phase margins, Nyquist/Bode/Nichols plots, and sensitivity-based conditions) when dealing with uncertainty, especially in high-performance servo and robotic systems. We connect these limitations to fundamental constraints such as the Bode sensitivity integral and highlight why more advanced frameworks are needed beyond single-loop, frequency-domain design.
1. Conceptual Overview of Classical Robustness
In previous lessons, robustness of a single-loop feedback system with plant \( G(s) \) and controller \( C(s) \) was analyzed via the loop transfer function \( L(s) = C(s)G(s) \) and the closed-loop sensitivity functions
\[ S(s) = \frac{1}{1 + L(s)}, \qquad T(s) = \frac{L(s)}{1 + L(s)} . \]
Classical robustness analysis, as developed in Chapters 17, 18, 22, and 24, is mainly based on:
- Stability margins: gain margin (GM), phase margin (PM), and delay margin, extracted from Bode or Nyquist plots of \( L(j\omega) \).
- Performance and robustness measures expressed in terms of \( S(j\omega) \) and \( T(j\omega) \), such as bounds on \( \lVert S \rVert_{\infty} = \sup_{\omega} |S(j\omega)| \).
- Nyquist-based geometric reasoning on how the closed-loop responds to perturbations of plant poles and zeros.
A typical scalar multiplicative uncertainty model around a nominal plant \( G(s) \) is
\[ G_{\Delta}(s) = G(s)\bigl(1 + W(s)\Delta(s)\bigr), \qquad |\Delta(j\omega)| \le 1 , \]
where \( W(s) \) is a (known) shaping transfer function. For such models, a classical sufficient condition for robust stability is
\[ \sup_{\omega \in \mathbb{R}}\, \bigl|W(j\omega)T(j\omega)\bigr| < 1 . \]
In practice, rather than verifying this inequality exactly for all frequencies and uncertainty shapes, engineers often rely on a small set of indicators such as PM, GM, and the peak of \( |S(j\omega)| \). This simplification introduces important limitations that we study in this lesson.
flowchart TD
M["Nominal model G(s)"] --> L["Loop L(s) = C(s)G(s)"]
L --> F1["Margins (GM, PM, delay)"]
L --> F2["Sensitivity S(jw), T(jw)"]
F1 --> CL["Classical robustness judgment"]
F2 --> CL
CL --> RISK["Hidden risks: unmodeled modes, large uncertainty, multi-loop effects"]
2. Gain and Phase Margins as Local Indicators
Gain and phase margins are defined in terms of the Nyquist or Bode plot of \( L(j\omega) \) at specific crossover frequencies. Recall:
- The gain crossover frequency \( \omega_c \) solves \( |L(j\omega_c)| = 1 \).
- The phase margin is \( \mathrm{PM} = \pi + \arg L(j\omega_c) \) (in radians), evaluated at \( \omega_c \).
- The phase crossover frequency \( \omega_p \) solves \( \arg L(j\omega_p) = -\pi \).
- The gain margin is \( \mathrm{GM} = 1/|L(j\omega_p)| \).
These are essentially local quantities: they sample \( L(j\omega) \) at one or two frequencies, yet robust stability and performance depend on the entire frequency range. As a result,
- Two loops can have identical GM and PM but very different \( |S(j\omega)| \) profiles and disturbance rejection.
- Delays or parametric variations that mainly affect higher or lower frequency ranges may cause instability even when nominal margins satisfy standard "rules of thumb" (e.g. PM ≈ 60°).
For example, consider a nominal loop \( L(s) = C(s)G(s) \) with a known time delay \( e^{-s\tau} \) absorbed into the plant \( G(s) \). Adding an additional delay \( \Delta\tau \) modifies the loop to
\[ L_{\Delta}(s) = L(s)\,e^{-s\Delta\tau} . \]
At the gain crossover frequency \( \omega_c \), the additional delay contributes an extra phase \( -\omega_c \Delta\tau \). A textbook approximation of the delay margin is
\[ \Delta\tau_{\text{dm}} \approx \frac{\mathrm{PM}}{\omega_c} . \]
However, this approximation assumes that:
- The magnitude \( |L(j\omega)| \) near \( \omega_c \) is not significantly changed by the delay, and
- Stability is determined mainly by the phase at \( \omega_c \).
Both assumptions can fail for high-order plants, plants with resonant peaks, or when the delay interacts with lightly damped modes (common in robotic manipulators with flexible joints or long communication delays). Thus, classical margins can significantly overestimate the true robustness of the closed-loop system.
3. Limitations of Sensitivity-Based Classical Tests
In Lesson 2 of this chapter, we used the sensitivity function \( S(s) \) and complementary sensitivity \( T(s) \) to state sufficient conditions for robust stability and robust performance. For multiplicative uncertainty \( G_{\Delta}(s) = G(s)(1 + W(s)\Delta(s)) \) with \( |\Delta(j\omega)| \le 1 \), the small-gain theorem yields the robust stability condition
\[ \sup_{\omega} |W(j\omega)T(j\omega)| < 1 . \]
While mathematically sound, this condition has several practical limitations in classical frequency-domain design:
- Scalar uncertainty only. Classical SISO analysis treats \( W(s)\Delta(s) \) as a scalar, but real systems (e.g. multi-joint robots) involve structured and correlated uncertainties in masses, inertias, and couplings. Capturing such structure in a single frequency weight \( W(s) \) is crude.
- Conservatism vs realism. If \( W(s) \) is chosen too large, the condition becomes overly conservative and may rule out perfectly acceptable controllers. If it is too small, the robustness claim is unjustified.
- Frequency-by-frequency view. The inequality is checked independently at each frequency, but some uncertainties couple across frequencies (e.g. parametric changes that move several poles simultaneously).
- Performance-robustness trade-off. Low \( |S(j\omega)| \) at low frequency (good tracking) inevitably forces peaks at higher frequencies. The scalar bound on \( |W(j\omega)T(j\omega)| \) does not fully express trade-offs between disturbance rejection, noise attenuation, and actuator limits.
In summary, sensitivity-based tests are precise for the chosen uncertainty model, but classical practice often relies on rough uncertainty models and only partial checks, which weakens the reliability of robustness conclusions.
4. Fundamental Performance Limits — Bode Sensitivity Integral
Classical loop-shaping seeks to make \( |S(j\omega)| \) small over a wide frequency range in order to achieve good tracking and disturbance rejection. However, there are fundamental limits on how small \( |S(j\omega)| \) can be made.
For a strictly proper, open-loop stable, minimum-phase plant \( G(s) \) and stabilizing controller \( C(s) \), one version of the Bode sensitivity integral states that
\[ \frac{1}{\pi}\int_{0}^{\infty} \ln |S(j\omega)|\, d\omega = 0 . \]
This means that if we reduce \( |S(j\omega)| \) below 1 (i.e. \( \ln |S(j\omega)| < 0 \)) over some frequency band, there must be another band where \( \ln |S(j\omega)| > 0 \), i.e. \( |S(j\omega)| > 1 \). This is a precise mathematical formulation of the waterbed effect discussed in Chapter 22.
If \( G(s) \) has right-half-plane (RHP) poles \( p_i \) or RHP zeros \( z_k \), the situation is even worse. A typical generalized integral becomes
\[ \frac{1}{\pi}\int_{0}^{\infty} \ln |S(j\omega)|\, d\omega = \sum_{p_i \in \mathbb{C}, \,\Re(p_i) > 0} \Re(p_i) + \sum_{z_k \in \mathbb{C}, \,\Re(z_k) > 0} \Re(z_k), \]
so the integral is strictly positive. This enforces a minimum size for the peaks of \( |S(j\omega)| \), i.e. it limits how robust the loop can ever be, independently of the design method.
Classical robustness indicators (GM, PM, and local bounds on \( |S| \) or \( |T| \)) do not explicitly reveal these integral constraints. As a consequence, a design might appear acceptable from the viewpoint of margins, but still be very fragile because the inevitable sensitivity peaks are placed at frequencies where unmodeled dynamics or neglected resonances occur.
5. When Single-Loop Classical Analysis Becomes Inadequate
Classical robustness tools are fundamentally single-input single-output (SISO) and loop-based. They become inadequate or unreliable when:
- Strong coupling: The system is naturally multi-input multi-output (MIMO), such as a multi-joint robotic arm with joint coupling and shared actuators. Analyzing each joint independently ignores cross-coupling dynamics.
- Structured, correlated uncertainty: Parameters such as link masses, inertias, and friction coefficients vary together in correlated ways; SISO scalar uncertainty models cannot capture this.
- Nonlinearities and saturation: Near actuator limits, the effective loop gain becomes state-dependent. GM and PM computed from the linearized loop around one operating point may not predict what happens under large commands or large disturbances.
- Multiple loops and cascades: In cascade or multi-loop architectures (Chapter 25), independent classical analysis of each loop cannot detect interactions that appear when the loops are closed simultaneously.
In such situations, classical analysis is still informative but must be complemented by other tools (simulation, parameter sweeps, time-delay analysis, and eventually more advanced robust control methods beyond this course).
flowchart TD
START["Nominal SISO design with good margins"] --> Q1["Uncertainty small and mostly scalar?"]
Q1 -->|yes| Q2["Single dominant loop, weak coupling?"]
Q1 -->|no| FAIL["Classical robustness not reliable alone"]
Q2 -->|yes| OK["Classical analysis reasonably indicative"]
Q2 -->|no| FAIL
FAIL --> NEXT["Use simulations, parameter sweeps, multi-loop analysis"]
6. Example — Delay Sensitivity vs Phase Margin
Consider a simple DC motor velocity loop, a common sub-problem in robot joint control. The plant is approximated by
\[ G(s) = \frac{K}{Js + B}, \]
where \( J \) is the rotor inertia, \( B \) the viscous friction, and \( K \) an input gain. With a proportional controller \( C(s) = K_c \), the loop is
\[ L(s) = \frac{K_c K}{Js + B} . \]
Suppose the nominal design yields phase margin \( \mathrm{PM}_{\text{nom}} \approx 60^{\circ} \) at \( \omega_c \). Now introduce a communication delay \( e^{-s\tau} \) (e.g. due to a field bus in a robot controller):
\[ L_{\tau}(s) = \frac{K_c K}{Js + B}\,e^{-s\tau}. \]
At the nominal crossover \( \omega_c \) the added phase is \( -\omega_c \tau \), so a simple estimate of the delay margin is \( \tau_{\text{dm}} \approx \mathrm{PM}_{\text{nom}}/\omega_c \). However:
- The presence of the delay changes \( \omega_c \) itself.
- For larger \( \tau \), the Nyquist curve can wrap around \( -1 \) multiple times or acquire additional encirclements not predictable from the local PM estimate.
As a result, the true delay margin can be significantly smaller than \( \mathrm{PM}_{\text{nom}}/\omega_c \). This illustrates that phase margin is a local descriptor and not a complete measure of robustness to time delay.
7. Python Lab — Exploring Margins vs Parametric Uncertainty
In this Python example, we use the python-control library
(widely used in robotics research) to study how a loop with comfortable
margins at the nominal inertia can lose robustness when the inertia of a
robot joint changes (e.g. due to payload variations).
import numpy as np
import control # python-control: classical control for robotics and mechatronics
# Nominal DC motor velocity plant: G(s) = K / (J s + B)
J_nom = 0.01 # nominal inertia
B_nom = 0.1 # viscous friction
K_gain = 1.0 # motor gain
s = control.TransferFunction([1, 0], [1])
G_nom = K_gain / (J_nom * s + B_nom)
# Proportional velocity controller (this could be part of a cascaded robot joint loop)
Kc = 2.0
C = Kc
L_nom = C * G_nom
T_nom = control.feedback(L_nom, 1)
# Nominal margins
gm, pm, wcg, wcp = control.margin(L_nom)
print("Nominal gain margin (dB):", 20 * np.log10(gm))
print("Nominal phase margin (deg):", pm)
print("Gain crossover (rad/s):", wcp)
# Now sweep inertia to represent payload changes (e.g., ±50 %)
J_values = np.linspace(0.5 * J_nom, 1.5 * J_nom, 7)
def closed_loop_for_inertia(J):
G = K_gain / (J * s + B_nom)
L = C * G
T = control.feedback(L, 1)
return L, T
for J in J_values:
L, T = closed_loop_for_inertia(J)
gm_J, pm_J, wcg_J, wcp_J = control.margin(L)
cl_poles = control.pole(T)
stable = np.all(np.real(cl_poles) < 0)
print("\nJ = {:.4f}".format(J))
print(" phase margin (deg): {:.2f}".format(pm_J))
print(" stable?:", stable)
print(" closed-loop poles:", cl_poles)
# Observe that phase margin does not always give a clear picture of robustness
# when J deviates significantly from its nominal value.
Even when the nominal phase margin is large (e.g. around 60°), the closed-loop poles for significantly different values of \( J \) can approach the imaginary axis or cross it, revealing that classical margins alone do not guarantee robustness to substantial parametric variations.
8. C++ Lab — Sensitivity Peak for an Uncertain Plant
In C++, robotic controllers are frequently implemented using the
Eigen linear algebra library and integrated into middleware
such as ROS. The following sketch computes an approximation of the
sensitivity peak \( M_S = \sup_{\omega} |S(j\omega)| \)
for different values of a plant parameter, using a simple frequency
grid.
#include <iostream>
#include <complex>
#include <vector>
#include <Eigen/Dense>
// Simple second-order loop: L(s) = Kc * K / (J s^2 + B s)
// approximated at s = j w.
double sensitivity_peak(double J, double Kc, double K, double B)
{
using std::complex;
const double w_min = 0.1;
const double w_max = 100.0;
const int N = 2000;
double Ms = 0.0;
for (int k = 0; k < N; ++k) {
double w = w_min * std::exp(std::log(w_max / w_min) * k / (N - 1));
complex<double> s(0.0, w);
complex<double> G = K / (J * s * s + B * s);
complex<double> L = Kc * G;
complex<double> S = 1.0 / (1.0 + L);
double mag = std::abs(S);
if (mag > Ms) Ms = mag;
}
return Ms;
}
int main()
{
double J_nom = 0.01;
double B_nom = 0.1;
double K_gain = 1.0;
double Kc = 2.0;
std::vector<double> J_values = {0.005, 0.01, 0.015};
for (double J : J_values) {
double Ms = sensitivity_peak(J, Kc, K_gain, B_nom);
std::cout << "J = " << J
<< ", approximated M_S = " << Ms << std::endl;
}
return 0;
}
For some parameter values, the sensitivity peak \( M_S \) may become very large even though the nominal gain and phase margins look acceptable. In a robotic joint, a large sensitivity peak implies amplified vibration and poor disturbance rejection.
9. Java Lab — Monte Carlo Parametric Robustness Check
In Java-based robotic platforms (for example, some educational robot stacks), one can use Apache Commons Math to model simple closed-loop dynamics and perform Monte Carlo tests over uncertain parameters. The following sketch uses a discrete-time approximation of a first-order plant with proportional control:
import org.apache.commons.math3.complex.Complex;
import java.util.Random;
// Simple discrete-time closed loop: x_{k+1} = a x_k + b u_k, y_k = x_k
// with u_k = -Kc (y_k - r_k), here r_k = 1 (step input).
public class MonteCarloRobustness {
static double simulateClosedLoop(double a, double b, double Kc, int steps) {
double x = 0.0;
double r = 1.0;
double maxOvershoot = 0.0;
for (int k = 0; k < steps; ++k) {
double y = x;
double e = r - y;
double u = Kc * e;
x = a * x + b * u;
if (y > maxOvershoot) {
maxOvershoot = y;
}
}
return maxOvershoot;
}
public static void main(String[] args) {
double Ts = 0.001; // sample time
double J_nom = 0.01;
double B_nom = 0.1;
double K_gain = 1.0;
double Kc = 2.0;
// First-order plant discretization (Euler) for nominal parameters:
// dx/dt = -(B/J) x + (K/J) u
// a = 1 + Ts * (-(B/J)), b = Ts * (K/J)
Random rng = new Random(0);
int trials = 100;
int unstableCount = 0;
for (int i = 0; i < trials; ++i) {
// Randomize J and B by ±40 %
double J = J_nom * (0.6 + 0.8 * rng.nextDouble());
double B = B_nom * (0.6 + 0.8 * rng.nextDouble());
double a = 1.0 + Ts * (-(B / J));
double b = Ts * (K_gain / J);
double overshoot = simulateClosedLoop(a, b, Kc, 10000);
// A crude stability/robustness check:
// if overshoot is extremely large, we treat it as "unstable/fragile".
if (Double.isNaN(overshoot) || overshoot > 10.0) {
unstableCount++;
}
}
System.out.println("Trials with large overshoot or numerical blow-up: "
+ unstableCount + " out of " + trials);
}
}
A non-zero count of trials with large overshoot or numerical blow-up indicates that the loop is fragile with respect to the chosen parametric uncertainty, even if the nominal GM and PM are large. This Monte Carlo approach highlights limitations of purely classical margin-based analysis.
10. MATLAB/Simulink Lab — Margins vs Monte Carlo for a Robot Joint
MATLAB and Simulink, especially with the Control System Toolbox and Robotics System Toolbox, are standard tools in control and robotics. The following script compares nominal stability margins to Monte Carlo simulations over uncertain inertia for a velocity loop:
J_nom = 0.01; % nominal inertia
B_nom = 0.1; % viscous friction
K_gain = 1.0; % motor gain
s = tf('s');
G_nom = K_gain / (J_nom * s + B_nom);
Kc = 2.0;
C = Kc;
L_nom = C * G_nom;
T_nom = feedback(L_nom, 1);
[gm, pm, wcp, wcg] = margin(L_nom);
fprintf('Nominal GM (dB): %.2f\n', 20*log10(gm));
fprintf('Nominal PM (deg): %.2f\n', pm);
% Monte Carlo over uncertain inertia (e.g. payload changes)
N = 200;
J_vals = J_nom * (0.5 + rand(N,1)); % J in [0.5 J_nom, 1.5 J_nom]
isStable = false(N,1);
Ms_vals = zeros(N,1);
for k = 1:N
J = J_vals(k);
G = K_gain / (J * s + B_nom);
L = C * G;
T = feedback(L, 1);
cl_poles = pole(T);
isStable(k) = all(real(cl_poles) < 0);
S = 1 / (1 + L);
[magS, ~] = bode(S);
Ms_vals(k) = max(magS(:));
end
fprintf('Stable trials: %d / %d\n', sum(isStable), N);
fprintf('Max sensitivity peak over trials: %.2f\n', max(Ms_vals));
% Optional: visualize distribution of M_S
figure; histogram(Ms_vals, 20);
xlabel('M_S'); ylabel('count'); grid on;
title('Distribution of sensitivity peak over uncertain inertia');
If a significant fraction of trials are unstable, or if the sensitivity peak \( M_S \) becomes very large for some trials, we conclude that the design is not robust with respect to the specified uncertainty, despite the nominal margins.
11. Mathematica Lab — Analytic Delay Margin Approximation
Mathematica can be used to symbolically study how time delay affects stability. For a simple first-order loop with proportional gain and delay,
\[ G(s) = \frac{K}{Ts + 1}, \quad C(s) = K_c, \quad L_{\tau}(s) = \frac{K_c K}{Ts + 1}e^{-s\tau}, \]
the characteristic equation of the closed loop is
\[ 1 + \frac{K_c K}{Ts + 1}e^{-s\tau} = 0. \]
The following Mathematica code solves for purely imaginary roots \( s = j\omega \) to approximate the delay margin:
Clear["Global`*"];
K = 1; Tc = 0.5; Kc = 2; (* example parameters: K, T, Kc *)
(* Characteristic equation with delay tau *)
charEq[s_, tau_] := 1 + (Kc*K*Exp[-s*tau])/(Tc*s + 1);
(* Solve for purely imaginary root s = j*w, separating real/imag parts *)
sol = FindRoot[
{
Re[charEq[I*om, tau]],
Im[charEq[I*om, tau]]
} /. {K -> 1, Tc -> 0.5, Kc -> 2},
{om, 1.0}, {tau, 0.1}
];
omCrit = om /. sol;
tauCrit = tau /. sol;
Print["Critical frequency: ", omCrit];
Print["Approximate delay margin: ", tauCrit];
(* Compare to classical approximation tau_dm ≈ PM / ω_c *)
(* PM and ω_c can be obtained numerically using built-in frequency response tools. *)
Comparing \( \tau_{\text{crit}} \) from the root search with the classical estimate \( \mathrm{PM}/\omega_c \) reveals the discrepancy between phase margin and true delay margin, which becomes more pronounced for higher-order or lightly damped systems.
12. Problems and Solutions
Problem 1 (Local nature of phase margin): Consider a loop \( L(s) \) with phase margin \( \mathrm{PM} \) at gain crossover frequency \( \omega_c \). Assume an additional pure delay \( e^{-s\tau} \) is inserted in the loop. Derive the classical approximation \( \tau_{\text{dm}} \approx \mathrm{PM}/\omega_c \) and discuss why this is only an approximation.
Solution:
With the delay, the new loop is \( L_{\tau}(s) = L(s)e^{-s\tau} \). At the original crossover \( \omega_c \), the added phase is \( -\omega_c \tau \), so the new phase at that frequency is
\[ \arg L_{\tau}(j\omega_c) = \arg L(j\omega_c) - \omega_c \tau . \]
The phase margin is defined by \( \mathrm{PM} = \pi + \arg L(j\omega_c) \). To reach the stability boundary, we need the total phase at the frequency where the magnitude is unity to be \( -\pi \), i.e.
\[ \arg L_{\tau}(j\omega_c) \approx -\pi \quad \Rightarrow \quad \arg L(j\omega_c) - \omega_c \tau \approx -\pi. \]
Using \( \arg L(j\omega_c) = -\pi + \mathrm{PM} \) yields
\[ -\pi + \mathrm{PM} - \omega_c \tau \approx -\pi \quad \Rightarrow \quad \tau \approx \frac{\mathrm{PM}}{\omega_c}. \]
This derivation implicitly assumes that the gain crossover frequency does not change much when the delay is added, and that only the phase at \( \omega_c \) matters for stability. For higher-order or lightly damped plants these assumptions fail, so the approximation can be inaccurate.
Problem 2 (Two loops with identical margins): Consider two stable, minimum-phase plants \( G_1(s) \) and \( G_2(s) \) controlled by proportional gains \( K_1 \) and \( K_2 \), respectively, such that both loops have identical gain and phase margins. Show that their sensitivity functions \( S_1(s) \) and \( S_2(s) \) can still have very different peak values \( M_{S1} \) and \( M_{S2} \), and hence different robustness properties.
Solution:
Let \( L_i(s) = K_i G_i(s) \) and \( S_i(s) = 1/(1 + L_i(s)) \) for \( i = 1,2 \). Gain and phase margins depend on properties of \( L_i(j\omega) \) only at specific crossover frequencies, say \( \omega_{c1} \) and \( \omega_{c2} \). By suitably choosing \( G_1(s) \) and \( G_2(s) \), we can enforce identical margins while reshaping the magnitude of \( L_i(j\omega) \) away from the crossovers.
For example, let \( G_1(s) \) be a low-order plant with a smooth roll-off, and \( G_2(s) \) a higher-order plant with a lightly damped pair of poles at higher frequency. By adjusting \( K_1 \) and \( K_2 \) we can match the margins, but the lightly damped poles in \( G_2(s) \) will create a pronounced bump in \( |L_2(j\omega)| \) near their resonance, causing a large peak in \( |S_2(j\omega)| \). Thus \( M_{S2} \gg M_{S1} \) is possible, even though both loops share the same GM and PM.
This shows that margins alone do not capture the full robustness picture, since \( M_S \) is more directly linked to disturbance amplification and uncertainty sensitivity.
Problem 3 (Bode integral constraint): Assume \( G(s) \) is strictly proper, stable, and minimum phase, and that \( C(s) \) stabilizes the loop. Explain why the Bode sensitivity integral implies that making \( |S(j\omega)| \) very small over a decade of low frequencies forces it to be larger than 1 over some other frequency band.
Solution:
The Bode sensitivity integral states that
\[ \frac{1}{\pi}\int_{0}^{\infty} \ln |S(j\omega)|\, d\omega = 0. \]
Suppose \( |S(j\omega)| \ll 1 \) for \( \omega \in [\omega_1, \omega_2] \), with \( \omega_2 > \omega_1 \) spanning about a decade. Then \( \ln |S(j\omega)| \ll 0 \) over a region of non-zero measure, so the integral of \( \ln |S| \) over that band is negative and bounded away from zero.
To make the total integral zero, the contribution from other frequencies must be positive. That is, there exists a set of frequencies where \( \ln |S(j\omega)| > 0 \), equivalently \( |S(j\omega)| > 1 \). Thus, improving tracking and disturbance rejection (small \( |S| \)) at low frequency inevitably leads to degraded robustness (large \( |S| \)) at some other frequencies.
Problem 4 (Single-loop analysis for a coupled system): A two-joint planar robot arm is controlled by independent joint PID controllers. The dynamics are coupled, but each controller is designed as if the joints were independent, using classical margins on the single-joint transfer functions. Explain why this approach can be misleading, and name at least two issues that are not detected by single-loop classical robustness analysis.
Solution:
Treating each joint as an independent SISO system ignores the dynamic coupling between joints. Single-loop margins are computed from a model in which the coupling torques are assumed to be disturbances or are neglected entirely. This can be misleading because:
- Loop interaction: Closing both loops simultaneously can create new feedback paths through the coupling dynamics, leading to oscillations or instability that are not predicted by individual joint Nyquist plots.
- Structured uncertainty: Variations in link masses and inertias affect both joint dynamics in a correlated way. A scalar uncertainty model per joint does not capture these correlations.
- Mode excitation: The coupled system may have lightly damped modes that are not visible in single-joint models, so classical margins computed on decoupled models do not reveal potential excitation of these modes.
Hence, while single-loop classical analysis is useful for initial tuning, it must be complemented by multi-DOF simulation and, eventually, more advanced analysis tools to ensure robust behavior of the full robotic system.
13. Summary
In this lesson we critically examined the limitations of classical robustness analysis. We saw that gain and phase margins are local indicators that sample the loop transfer function at a small number of frequencies, and thus can be misleading in the presence of delays, high-order dynamics, or lightly damped modes. Sensitivity-based inequalities such as \( |W(j\omega)T(j\omega)| < 1 \) are mathematically rigorous, but their practical usefulness depends strongly on how well the scalar uncertainty model captures the true structured uncertainty of the physical system.
The Bode sensitivity integral shows that there are unavoidable trade-offs between performance and robustness: reducing sensitivity at some frequencies forces increased sensitivity at others. Finally, we discussed how single-loop SISO analysis becomes inadequate for strongly coupled multi-DOF systems, such as robotic manipulators, and illustrated via Python, C++, Java, MATLAB/Simulink, and Mathematica examples how numerical exploration often reveals fragilities that are invisible to classical margin-based reasoning.
14. References
- Bode, H. W. (1945). Network Analysis and Feedback Amplifier Design. Van Nostrand.
- Horowitz, I. M. (1963). Synthesis of Feedback Systems. Academic Press.
- Freudenberg, J. S., & Looze, D. P. (1985). Right half plane poles and zeros and design tradeoffs in feedback systems. IEEE Transactions on Automatic Control, 30(6), 555–565.
- Middleton, R. H. (1991). Trade-offs in linear control system design. Automatica, 27(2), 281–292.
- Zames, G. (1981). Feedback and optimal sensitivity: Model reference transformations, multiplicative seminorms, and approximate inverses. IEEE Transactions on Automatic Control, 26(2), 301–320.
- Doyle, J. C. (1978). Guaranteed margins for LQG regulators. IEEE Transactions on Automatic Control, 23(4), 756–757.
- Skogestad, S., & Postlethwaite, I. (1996). Multivariable Feedback Control: Analysis and Design. Wiley. (Chapters on classical limitations and robustness trade-offs.)
- Vinnicombe, G. (2000). Uncertainty and Feedback: H-infinity Loop-Shaping and the ν-Gap Metric. Imperial College Press.