Chapter 22: Sensitivity, Complementary Sensitivity, and Trade-Offs

Lesson 4: “Waterbed Effect” and Fundamental Trade-Offs

This lesson explains the so-called waterbed effect: a rigorous integral constraint on the sensitivity function that makes some performance trade-offs in feedback control unavoidable. Starting from the Bode sensitivity integral, we examine how shaping the loop gain to improve disturbance rejection or tracking at some frequencies necessarily worsens robustness or noise amplification at others. We also provide software-oriented implementations (Python, C++, Java, MATLAB/Simulink, and Wolfram Mathematica) that compute sensitivity and complementary sensitivity for simple robotic joint models.

1. Conceptual Overview of the Waterbed Effect

Consider a standard unity-feedback loop with plant \( P(s) \), controller \( C(s) \), and loop transfer function \( L(s) = C(s)P(s) \). The sensitivity function and complementary sensitivity function are

\[ S(s) = \frac{1}{1 + L(s)}, \qquad T(s) = \frac{L(s)}{1 + L(s)}, \qquad S(s) + T(s) = 1. \]

In the frequency domain, \( S(j\omega) \) measures how strongly low-frequency disturbances and model errors penetrate to the output, and how sensitive the closed-loop is to plant variations. The function \( T(j\omega) \) describes how the reference and sensor noise are transmitted to the output.

Intuitively, we would like \( |S(j\omega)| \) to be small over a wide low-frequency band for good tracking and disturbance rejection, and \( |T(j\omega)| \) to be small at high frequency to avoid amplifying sensor noise and unmodeled dynamics. However, because \( S(s) \) and \( T(s) \) are derived from a single stable rational loop transfer function, they satisfy integral constraints. The most important one is the Bode sensitivity integral, which roughly says:

“If you push \( |S(j\omega)| \) down below 1 in some frequency range, it must pop up above 1 somewhere else.” This is called the waterbed effect.

flowchart TD
  A["Design goals: tracking, disturbance rejection, noise attenuation"] --> B["Shape loop gain L(jw)"]
  B --> C["Low freq: make |S(jw)| \nsmall (good tracking / \ndisturbance rejection)"]
  B --> D["Mid freq: choose crossover \nand bandwidth"]
  B --> E["High freq: keep |T(jw)| \nsmall (limit noise / \nunmodeled dynamics)"]
  C --> F["Bode sensitivity integral constrains ln|S(jw)|"]
  E --> F
  F --> G["Result: 'waterbed' trade-off in |S(jw)| and |T(jw)|"]
        

The rest of this lesson makes this statement precise and shows how it limits what is achievable even with ideal controllers, especially in robotic servo systems.

2. Bode Sensitivity Integral (Waterbed Effect Theorem)

Let \( L(s) \) be a proper, scalar, rational loop transfer function with relative degree \( n_r \) (number of poles minus number of zeros), and suppose the closed-loop is internally stable so that \( S(s) \) has no poles in the closed right-half plane. Let \( p_k \) be the poles of \( L(s) \) in the open right-half plane (unstable poles).

The Bode sensitivity integral states that

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = \pi \sum_k \operatorname{Re}(p_k) - \frac{\pi}{2} \lim_{s \to \infty} s L(s). \]

For many engineering plants, we design \( L(s) \) such that it has at least two more poles than zeros (\( n_r \ge 2 \)), so \( \lim_{s \to \infty} s L(s) = 0 \). In this case the formula simplifies to

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = \pi \sum_k \operatorname{Re}(p_k). \]

In particular, if \( L(s) \) has no unstable poles (\( \operatorname{Re}(p_k) < 0 \) for all poles), then \( \sum_k \operatorname{Re}(p_k) = 0 \) and

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = 0. \]

This is the most common “waterbed” formula: the signed area under the curve \( \ln |S(j\omega)| \) must be zero. Regions where \( |S(j\omega)| < 1 \) (negative log) must be balanced by regions where \( |S(j\omega)| > 1 \) (positive log).

2.1 Sketch of the Proof (Open-Loop Stable Case)

Assume \( L(s) \) is proper, stable, and the closed loop is stable. Then \( S(s) = (1 + L(s))^{-1} \) is analytic and nonzero in the closed right-half plane. Define \( F(s) = \ln S(s) \), choosing a continuous branch of the complex logarithm on the right-half plane.

Consider the semicircular contour \( \Gamma_R \) consisting of

  • the imaginary axis from \( -jR \) to \( jR \),
  • the large semicircle of radius \( R \) in the right-half plane.

Since \( F(s) \) is analytic in the interior of \( \Gamma_R \), Cauchy’s theorem gives

\[ \oint_{\Gamma_R} F(s) \, ds = 0. \]

Split this into integrals along the imaginary axis and the large semicircle. On the semicircle, use the fact that \( L(s) \) is proper with relative degree \( n_r \ge 2 \), so \( L(s) \to 0 \) as \( |s| \to \infty \). Then \( S(s) = (1 + L(s))^{-1} \to 1 \) and hence \( \ln S(s) \to 0 \). A standard estimation argument shows that the contribution of the large semicircle tends to zero as \( R \to \infty \).

What remains is the integral of \( F(s) \) along the imaginary axis. Writing \( s = j\omega \) and separating real and imaginary parts, one can show (via symmetry of the contour and the fact that \( S(-j\omega) = \overline{S(j\omega)} \) for real-rational systems) that

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = 0. \]

When \( L(s) \) has unstable poles, small detours around these poles add extra terms that yield \( \pi \sum_k \operatorname{Re}(p_k) \) in the general formula. The details use residue calculus but the key message is already visible: \( \ln |S(j\omega)| \) cannot be made negative everywhere.

3. Fundamental Trade-Offs Implied by the Waterbed Effect

To see the trade-off explicitly, approximate \( |S(j\omega)| \) as piecewise constant:

\[ |S(j\omega)| \approx \begin{cases} \varepsilon, & 0 \le \omega \le \omega_b,\\[4pt] M_s, & \omega_1 \le \omega \le \omega_2,\\[4pt] 1, & \text{otherwise}, \end{cases} \qquad 0 < \varepsilon < 1, \quad M_s > 1. \]

Using the open-loop-stable Bode integral \( \int_0^{\infty} \ln |S(j\omega)| \, d\omega = 0 \), we get the approximate balance

\[ 0 \approx \int_0^{\omega_b} \ln(\varepsilon) \, d\omega + \int_{\omega_1}^{\omega_2} \ln(M_s) \, d\omega = \omega_b \ln(\varepsilon) + (\omega_2 - \omega_1)\,\ln(M_s). \]

Solving for the peak sensitivity \( M_s \) gives

\[ \ln(M_s) \approx - \frac{\omega_b}{\omega_2 - \omega_1}\, \ln(\varepsilon), \qquad M_s \approx \varepsilon^{-\omega_b / (\omega_2 - \omega_1)}. \]

This simple model reveals three core trade-offs:

  • Making \( \varepsilon \) very small (strong disturbance rejection / tracking at low frequency) forces \( M_s \) to be large.
  • Extending the good low-frequency band (increasing \( \omega_b \)) also increases \( M_s \).
  • Spreading the necessary amplification over a broader mid-frequency band (increasing \( \omega_2 - \omega_1 \)) can reduce the peak \( M_s \), but makes the system more fragile to uncertainty over a wide range of frequencies.

3.1 Effect of Unstable Poles

If the plant (or loop) has unstable poles with real parts \( \operatorname{Re}(p_k) > 0 \), then

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = \pi \sum_k \operatorname{Re}(p_k) > 0. \]

This means the positive area of \( \ln |S(j\omega)| \) must dominate: it is impossible to make \( |S(j\omega)| \) small over a large band without large peaks elsewhere. Unstable plants are fundamentally harder to control; their unstable poles “consume” some of the allowable performance budget.

3.2 Complementary Sensitivity Trade-Offs

There is a related “complementary sensitivity Bode integral” (CSBI) for \( T(s) \). For a closed-loop stable, type-I (or higher) system with closed-loop poles \( -\tilde{p}_i \) and transmission zeros \( -z_i \) (including nonminimum-phase zeros on the right-half plane), one can show that

\[ \int_0^{\infty} \frac{\ln\!\bigl| T(j\omega) \bigr|}{\omega^2}\, d\omega = \frac{\pi}{2}\Biggl( \sum_i \frac{1}{\tilde{p}_i} - \sum_i \frac{1}{z_i} + \text{terms from nonminimum-phase zeros} \Biggr). \]

The weighting by \( 1/\omega^2 \) emphasizes low and intermediate frequencies. Fast closed-loop poles (large \( \tilde{p}_i \)) and nonminimum-phase zeros limit how small \( |T(j\omega)| \) can be across frequencies, giving a complementary waterbed effect for noise and reference tracking.

flowchart TD
  A["Push |S(jw)| down at low frequencies"] --> B["Bode integral keeps total ln|S(jw)| area fixed"]
  B --> C["|S(jw)| must peak above 1 in some mid-frequency band"]
  C --> D["Trade-offs: overshoot, reduced robustness, higher sensitivity to plant uncertainty"]
        

4. Example: Second-Order Plant with Proportional Control

Consider the stable, minimum-phase plant \( P(s) = \dfrac{1}{(s+1)^2} \) and a proportional controller \( C(s) = k \). The loop transfer function and sensitivity functions are

\[ L(s) = \frac{k}{(s+1)^2}, \qquad S(s) = \frac{1}{1 + L(s)} = \frac{(s+1)^2}{(s+1)^2 + k}, \qquad T(s) = \frac{L(s)}{1 + L(s)} = \frac{k}{(s+1)^2 + k}. \]

The closed-loop characteristic polynomial is \( s^2 + 2s + (1 + k) \), so the closed-loop poles are

\[ s_{1,2} = -1 \pm j\sqrt{k}. \]

In standard second-order form \( s^2 + 2\zeta\omega_n s + \omega_n^2 \), we identify

\[ \omega_n = \sqrt{1 + k}, \qquad \zeta = \frac{1}{\omega_n} = \frac{1}{\sqrt{1 + k}}. \]

As \( k \) increases:

  • The natural frequency \( \omega_n \) increases, so the servo becomes faster and the bandwidth of \( T(j\omega) \) grows.
  • The damping ratio \( \zeta \) decreases, so \( |T(j\omega)| \) develops a resonance peak and \( |S(j\omega)| \) develops a mid-frequency hump.
  • The low-frequency sensitivity improves, since \( S(0) = 1/(1 + k) \) decreases with \( k \).

The Bode sensitivity integral is satisfied automatically. For this loop, \( L(s) \) is proper with relative degree 2 and stable, so

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = 0, \]

regardless of \( k \). When we choose a larger \( k \), the low-frequency portion of \( \ln |S(j\omega)| \) becomes more negative (better disturbance rejection), forcing a larger positive hump (larger \( M_s \)) at intermediate frequencies to preserve the zero integral. This hump is directly related to overshoot and reduced robustness: a familiar consequence in robot joint and servo motor control when “aggressive” gains are used.

5. Python Lab — Computing \( S \) and \( T \) for a Robotic Joint Model

In robotics, a single revolute joint of a robot arm is often approximated by a second-order plant such as \( P(s) = \dfrac{1}{Js^2 + bs} \) (inertia \( J \), viscous damping \( b \)). Below we implement the waterbed effect numerically in Python using python-control. Libraries like python-control and Peter Corke’s roboticstoolbox-python are commonly used in robotic simulation and control design.


import numpy as np
import matplotlib.pyplot as plt

# Control/robotics libraries
# pip install control roboticstoolbox-python
import control as ctl

# Simple robot joint model: J * q_ddot + b * q_dot = u
J = 0.01   # kg m^2
b = 0.05   # N m s/rad

# Plant P(s) = 1/(J s^2 + b s)
s = ctl.TransferFunction.s
P = 1 / (J * s**2 + b * s)

# Proportional-derivative-like controller (here just proportional for simplicity)
k = 5.0
C = k

L = C * P                  # Loop transfer
S = ctl.feedback(1, L)     # S(s) = 1 / (1 + L(s))
T = ctl.feedback(L, 1)     # T(s) = L(s) / (1 + L(s))

# Bode magnitude of S and T, and numeric approximation of the Bode integral
w = np.logspace(-1, 3, 1000)   # rad/s
magS, phaseS, wS = ctl.bode(S, w, Plot=False)
magT, phaseT, wT = ctl.bode(T, w, Plot=False)

# Approximate Bode sensitivity integral int_0^inf ln|S(jw)| dw via trapezoidal rule
lnS = np.log(magS)
integral_lnS = np.trapz(lnS, w)

print("Approximate Bode integral of ln|S(jw)| =", integral_lnS)

# Plot in dB to visualize the waterbed effect
plt.figure()
plt.semilogx(w, 20 * np.log10(magS), label="S(jw)")
plt.semilogx(w, 20 * np.log10(magT), label="T(jw)", linestyle="--")
plt.axhline(0.0, linestyle=":", linewidth=0.8)
plt.xlabel("Frequency (rad/s)")
plt.ylabel("Magnitude (dB)")
plt.title("Sensitivity and Complementary Sensitivity for Robot Joint Loop")
plt.legend()
plt.grid(True, which="both")
plt.show()
      

By adjusting k, you can observe how reducing low-frequency sensitivity (S well below 0 dB) forces a larger hump in S or T around crossover, consistent with the waterbed effect. In a robotics context, this often appears as increased joint resonance or oscillations when high gains are used to improve tracking.

6. C++ and Java — Embedded/Robotic Implementations of \( S(j\omega) \)

In embedded robotic controllers (for example, ROS ros_control controllers in C++ or rosjava nodes in Java), one typically evaluates transfer functions or their discrete equivalents to tune gain parameters while respecting waterbed constraints. The following snippets numerically evaluate the sensitivity magnitude for the example \( P(s) = 1/(s+1)^2 \), \( C(s) = k \).

6.1 C++ Example (Using <complex>)


#include <iostream>
#include <complex>
#include <vector>
#include <cmath>

// L(s) = k / (s + 1)^2
std::complex<double> loop_transfer(const std::complex<double> &s, double k) {
    std::complex<double> denom = (s + 1.0) * (s + 1.0);
    return k / denom;
}

int main() {
    double k = 5.0;
    std::vector<double> w;   // frequencies (rad/s)
    for (int i = -1; i <= 3; ++i) {
        // simple decade sweep: 10^i, 3 * 10^i, 10^(i+1)
        double w1 = std::pow(10.0, static_cast<double>(i));
        double w2 = 3.0 * w1;
        double w3 = 10.0 * w1;
        w.push_back(w1);
        w.push_back(w2);
        w.push_back(w3);
    }

    std::size_t N = w.size();
    for (std::size_t i = 0; i != N; ++i) {
        double wi = w[i];
        std::complex<double> s(0.0, wi);
        std::complex<double> L = loop_transfer(s, k);
        std::complex<double> S = 1.0 / (1.0 + L);
        double magS = std::abs(S);
        std::cout << "w = " << wi
                  << " rad/s, |S(jw)| = " << magS << std::endl;
    }

    return 0;
}
      

In a real robot control stack, this type of frequency-response computation can be run offline during controller tuning to avoid choosing gains that produce an excessive sensitivity peak \( M_s \), which would reduce robustness to unmodeled flexibilities and delays.

6.2 Java Example (No Complex Arithmetic, Closed-Form |S|)

For \( P(s) = 1/(s+1)^2 \) and \( C(s) = k \), we derived \( |S(j\omega)| = \dfrac{\omega^2 + 1}{\sqrt{(1 + k - \omega^2)^2 + 4\omega^2}} \), which can be evaluated directly in Java without a complex library:


public class SensitivityWaterbed {
    public static double S_mag(double w, double k) {
        double num = w * w + 1.0;
        double a = 1.0 + k - w * w;
        double b = 2.0 * w;
        double den = Math.sqrt(a * a + b * b);
        return num / den;
    }

    public static void main(String[] args) {
        double k = 5.0;
        double[] w = {0.1, 0.3, 1.0, 3.0, 10.0, 30.0};

        for (int i = 0; i != w.length; ++i) {
            double wi = w[i];
            double mag = S_mag(wi, k);
            double magDb = 20.0 * Math.log10(mag);
            System.out.println("w = " + wi + " rad/s, |S(jw)| = "
                               + mag + " (" + magDb + " dB)");
        }
    }
}
      

Such code can be integrated into Java-based robotic control frameworks (for example, rosjava nodes that tune joint controllers) to visualize how aggressive gain choices alter the shape of \( |S(j\omega)| \) and to detect potentially dangerous waterbed-induced peaks.

7. MATLAB/Simulink and Wolfram Mathematica Implementations

MATLAB with the Control System Toolbox and Robotics System Toolbox is widely used in robotics and mechatronics. Simulink models can visualize how sensitivity and complementary sensitivity change as we retune controllers. Wolfram Mathematica offers similar symbolic and numeric tools.

7.1 MATLAB/Simulink Script


% Second-order plant P(s) = 1/(s+1)^2 and proportional controller C(s) = k
s = tf('s');
P = 1/(s + 1)^2;

k = 5;
C = k;
L = C * P;
S = feedback(1, L);
T = feedback(L, 1);

% Bode magnitude of S and T
w = logspace(-1, 3, 1000);
[magS, ~] = bode(S, w);
[magT, ~] = bode(T, w);
magS = squeeze(magS);
magT = squeeze(magT);

% Approximate Bode sensitivity integral
lnS = log(magS);
I = trapz(w, lnS);
fprintf('Approximate Bode integral of ln|S(jw)| = %g\n', I);

figure;
semilogx(w, 20*log10(magS), 'LineWidth', 1.5); hold on;
semilogx(w, 20*log10(magT), '--', 'LineWidth', 1.5);
yline(0, ':');
grid on;
xlabel('Frequency (rad/s)');
ylabel('Magnitude (dB)');
title('Waterbed Effect in S(jw) and T(jw)');
legend('S(jw)', 'T(jw)', 'Location', 'Best');

% Simulink note:
% In Simulink, you can create a block diagram with:
% - Transfer Fcn block for P(s)
% - Gain block for C(s)
% - Sum block for feedback
% Then use the "Bode Plot" or "Frequency Response Estimation" tools
% to visualize the same waterbed effect interactively.
      

7.2 Wolfram Mathematica Notebook Snippet


(* Continuous-time transfer functions for P(s) and C(s) *)
Clear[s, w];
k = 5.0;
P = TransferFunctionModel[1/(s + 1)^2, s];
C = k;

L = C * P;
S = SystemsModelFeedback[1, L];   (* S(s) = 1/(1 + L(s)) *)
T = SystemsModelFeedback[L, 1];   (* T(s) = L(s)/(1 + L(s)) *)

(* Bode magnitude plots for S and T *)
BodePlot[{S, T},
         {w, 0.1, 100},
         PlotLayout -> "Magnitude",
         PlotLegends -> {"S(jw)", "T(jw)"}]

(* Numeric approximation of Bode sensitivity integral *)
wGrid = Table[10^(x), {x, -1, 3, 0.01}];
magS = Abs /@ (FrequencyResponse[S, wGrid]);
lnS = Log[magS];
I = NIntegrate[Interpolation[Transpose[{wGrid, lnS}]][x], {x, 0.1, 100}];
Print["Approximate Bode integral of ln|S(jw)| = ", I];
      

In both MATLAB/Simulink and Mathematica, you can reuse the same plant and controller models when moving from single-joint servo control to multi-axis robotic manipulators; the waterbed effect remains present in each SISO joint loop and, in generalized form, in MIMO sensitivity matrices.

8. Problems and Solutions

Problem 1 (Bode Integral for a Stable Second-Order Loop). For \( L(s) = k/(s+1)^2 \) with \( k > 0 \), show that the assumptions of the open-loop-stable Bode sensitivity integral are satisfied, and conclude that \( \int_0^{\infty} \ln |S(j\omega)| \, d\omega = 0 \).

Solution. The loop transfer function \( L(s) = k/(s+1)^2 \) is proper with relative degree \( n_r = 2 \) (two more poles than zeros) and has a double pole at \( s = -1 \) in the left-half plane. Thus \( L(s) \) has no unstable poles and \( \lim_{s \to \infty} s L(s) = 0 \). If we choose \( k \) so that the closed-loop characteristic polynomial \( s^2 + 2s + (1 + k) \) has roots strictly in the left-half plane (\( k > 0 \) suffices), then the closed loop is internally stable. All assumptions of the theorem are satisfied and therefore

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = 0. \]

Problem 2 (Approximate Waterbed Bound on \( M_s \)). Consider an open-loop-stable loop where \( |S(j\omega)| \approx 0.1 \) for \( 0 \le \omega \le 2 \), and \( |S(j\omega)| \approx M_s \) for \( 2 \le \omega \le 6 \), with \( |S(j\omega)| \approx 1 \) elsewhere. Use the Bode sensitivity integral to estimate \( M_s \).

Solution. Using the piecewise-constant approximation and the fact that \( \int_0^{\infty} \ln |S(j\omega)| \, d\omega = 0 \), we obtain

\[ 0 \approx \int_0^2 \ln(0.1)\, d\omega + \int_2^6 \ln(M_s)\, d\omega = 2 \ln(0.1) + 4 \ln(M_s). \]

Therefore

\[ 4 \ln(M_s) = -2 \ln(0.1) \quad \Rightarrow \quad \ln(M_s) = -\tfrac{1}{2}\ln(0.1) = \ln\bigl(0.1^{-1/2}\bigr) = \ln\bigl(\sqrt{10}\bigr). \]

Hence \( M_s \approx \sqrt{10} \approx 3.16 \), corresponding to a peak of about \( 10 \log_{10}(M_s^2) \approx 10 \log_{10}(10) = 10 \) dB. This demonstrates quantitatively how strong low-frequency disturbance rejection forces a noticeable sensitivity peak.

Problem 3 (Effect of an Unstable Pole). Suppose the loop transfer function has a single unstable pole at \( p = 1 \) and is otherwise proper with relative degree at least 2. Assume again the piecewise approximation \( |S(j\omega)| \approx \varepsilon \) for \( 0 \le \omega \le \omega_b \), \( |S(j\omega)| \approx M_s \) for \( \omega_1 \le \omega \le \omega_2 \), and \( |S(j\omega)| \approx 1 \) elsewhere. Derive the approximate balance equation implied by the Bode sensitivity integral, and explain why \( M_s \) must be larger than in the open-loop-stable case.

Solution. With a single unstable pole at \( p = 1 \), the general Bode integral gives

\[ \int_0^{\infty} \ln\!\bigl| S(j\omega) \bigr| \, d\omega = \pi \operatorname{Re}(p) = \pi. \]

Using the same piecewise approximation as before,

\[ \pi \approx \omega_b \ln(\varepsilon) + (\omega_2 - \omega_1)\,\ln(M_s). \]

Since \( \ln(\varepsilon) < 0 \), the term \( \omega_b \ln(\varepsilon) \) is negative. To make the sum equal to \( \pi > 0 \), the positive term \( (\omega_2 - \omega_1)\ln(M_s) \) must be not only large enough to cancel the negative low-frequency contribution but also large enough to produce the positive area \( \pi \). Thus \( M_s \) must be larger (for given bandwidths) than in the open-loop-stable case, where the integral is zero.

Problem 4 (Pointwise Trade-Off Between \( S \) and \( T \)). Show that at any fixed frequency \( \omega \), if \( |S(j\omega)| \le \alpha \) with \( 0 < \alpha < 1 \), then \( |T(j\omega)| \ge 1 - \alpha \). Interpret this inequality.

Solution. From \( S(j\omega) + T(j\omega) = 1 \), we have \( T(j\omega) = 1 - S(j\omega) \). Using the reverse triangle inequality,

\[ |T(j\omega)| = |1 - S(j\omega)| \ge \bigl|\,|1| - |S(j\omega)|\,\bigr| = 1 - |S(j\omega)|. \]

If \( |S(j\omega)| \le \alpha \), then

\[ |T(j\omega)| \ge 1 - |S(j\omega)| \ge 1 - \alpha. \]

Thus at each frequency, we cannot make both \( S \) and \( T \) small: reducing sensitivity to disturbances and plant variations (\( S \)) increases the transmission of reference and noise (\( T \)) at that same frequency.

Problem 5 (Qualitative Robot Joint Design Trade-Off). A position-controlled robot joint is modeled by a second-order plant plus a lightly damped flexible mode around \( \omega_f \). The designer requires \( |S(j\omega)| \le 0.05 \) for \( 0 \le \omega \le 20 \) rad/s to ensure excellent tracking of slow trajectories. Explain qualitatively, using the Bode sensitivity integral, why the sensitivity \( |S(j\omega)| \) is likely to be large near \( \omega_f \), and what this implies for robustness to flexible-mode uncertainty.

Solution. The constraint \( |S(j\omega)| \le 0.05 \) on \( [0,20] \) rad/s implies a large negative area in \( \ln |S(j\omega)| \) over that band. By the Bode sensitivity integral, this must be compensated by positive area where \( |S(j\omega)| > 1 \), typically near the bandwidth and around any lightly damped flexible modes. When a flexible mode exists at \( \omega_f \), the loop gain often produces a strong resonance there, leading to \( |S(j\omega)| \) that is significantly greater than 1. This means the joint becomes highly sensitive to modeling errors in the flexible dynamics (e.g., stiffness or damping uncertainties), and small mismatches can produce large oscillations. Reducing the low-frequency requirement or adding targeted notch filters in the loop are typical strategies to rebalance this waterbed effect.

9. Summary

In this lesson we formalized the waterbed effect via Bode’s sensitivity integral and its complementary-sensitivity analogue. For open-loop-stable loops with sufficient roll-off, the integral of \( \ln |S(j\omega)| \) must be zero, so improvements in disturbance rejection at some frequencies necessarily worsen sensitivity at others. Unstable poles and nonminimum-phase zeros further tighten these constraints, forcing larger sensitivity peaks and making aggressive high-bandwidth designs risky. Through a simple second-order example and multi-language implementations, we connected these mathematical results to practical tuning of robotic servo loops, where overlooking the waterbed effect leads to oscillatory or fragile behavior. These ideas provide the foundation for interpreting and refining controller designs using \( S \) and \( T \) in the next lesson.

10. References

  1. Bode, H. W. (1945). Network Analysis and Feedback Amplifier Design. Van Nostrand. (Classical derivation of Bode’s sensitivity integral.)
  2. Åström, K. J., & Murray, R. M. (2008). Feedback Systems: An Introduction for Scientists and Engineers. Princeton University Press. (See Chapter on frequency-domain design and sensitivity.)
  3. Stein, G. (2003). Respect the unstable. IEEE Control Systems Magazine, 23(4), 12–25.
  4. Emami-Naeini, A., & de Roover, D. (2019). Bode’s sensitivity integral constraints: The waterbed effect revisited. arXiv preprint arXiv:1902.11302.
  5. Wan, N., Li, D., & Hovakimyan, N. (2018). A simplified approach to analyze complementary sensitivity trade-offs in continuous-time and discrete-time systems. arXiv preprint arXiv:1811.09884.
  6. Mohtadi, C. (1990). Bode’s integral theorem for discrete-time systems. International Journal of Control, 52(4), 897–906.
  7. Sandberg, H., & Bernhardsson, B. (2004). A Bode sensitivity integral for linear time-periodic systems. Proceedings of the 43rd IEEE Conference on Decision and Control, 305–310.
  8. Skogestad, S., & Postlethwaite, I. (2005). Multivariable Feedback Control: Analysis and Design (2nd ed.). Wiley. (Chapters on fundamental performance limitations.)