Chapter 21: Loop Shaping and Servo Design

Lesson 4: High-Frequency Roll-Off and Noise/Unmodeled Dynamics

In this lesson we study how the high-frequency shape of the open-loop transfer function influences sensor-noise amplification and robustness against unmodeled dynamics. We derive closed-loop noise transfer functions, analyze their high-frequency asymptotics, and connect these to practical roll-off mechanisms in servo controllers used in robotics and mechatronic systems.

1. Conceptual Role of High-Frequency Roll-Off

In classical loop shaping, we design the open-loop transfer \( L(s) = C(s)G(s) \), where \( C(s) \) is the controller and \( G(s) \) is the plant. Previous lessons focused on low- and mid-frequency properties: high low-frequency gain for tracking/disturbance rejection and appropriate phase margin around the bandwidth. In this lesson we focus on the high-frequency region of \( L(s) \), where:

  • Sensor noise is typically concentrated (e.g. quantization noise, electronic noise).
  • Model uncertainty and neglected dynamics (flexibilities, fast modes) are largest.
  • Actuators and sampling impose physical bandwidth limits.

A well-shaped loop has:

  • High gain for \( \omega \) below the bandwidth \( \omega_b \) (good tracking/rejection).
  • Moderate gain around \( \omega_b \) with sufficient phase margin.
  • A fast decay (roll-off) of \( |L(\mathrm{j}\omega)| \) for \( \omega \gg \omega_b \), often at least as fast as \( \omega^{-2} \) (−40 dB/dec).

High-frequency roll-off is therefore the main design lever to limit noise amplification and to prevent unmodeled dynamics from destabilizing the closed loop.

flowchart TD
  A["Choose target bandwidth wb"] --> B["Shape L(s) for tracking/disturbance rejection"]
  B --> C["Check phase margin at wb"]
  C --> D["Add high-frequency rolloff poles"]
  D --> E["Evaluate noise amplification (n -> y, n -> u)"]
  E --> F["Check robustness vs unmodeled dynamics"]
  F --> G["Adjust controller C(s) if needed"]
  G --> B
        

In servo applications (e.g., robot joint control), high-frequency roll-off protects the loop from encoder quantization noise and unmodeled structural resonances in gears and links.

2. Closed-Loop Equations with Measurement Noise

Consider a standard unity-feedback configuration with additive measurement noise at the sensor output. Let \( r \) be the reference, \( y \) the plant output, \( n \) the sensor noise, and \( u \) the control input. The measured output is \( y_m = y + n \), and the error is \( e = r - y_m \). In the Laplace domain:

\[ \begin{aligned} e(s) &= r(s) - \bigl(y(s) + n(s)\bigr),\\ u(s) &= C(s)\,e(s),\\ y(s) &= G(s)\,u(s). \end{aligned} \]

Eliminating \( e(s) \) and \( u(s) \), and introducing the open-loop transfer function \( L(s) = C(s)G(s) \), we obtain:

\[ \begin{aligned} y(s) &= G(s)C(s)\bigl(r(s) - y(s) - n(s)\bigr) \\ &= L(s)\,r(s) - L(s)\,y(s) - L(s)\,n(s). \end{aligned} \]

Collecting the terms in \( y(s) \):

\[ y(s)\bigl(1 + L(s)\bigr) = L(s)\,r(s) - L(s)\,n(s). \]

Hence the closed-loop transfer functions from reference and noise to the output are

\[ \begin{aligned} T_{r\to y}(s) &= \frac{y(s)}{r(s)} = \frac{L(s)}{1 + L(s)},\\[4pt] T_{n\to y}(s) &= \frac{y(s)}{n(s)} = -\frac{L(s)}{1 + L(s)}. \end{aligned} \]

The transfer from noise to the control input \( u \) is obtained from \( u(s) = C(s)\,e(s) \) with \( e(s) = r(s) - y(s) - n(s) \). Setting \( r(s) = 0 \) and solving similarly yields

\[ \begin{aligned} T_{n\to u}(s) &= \frac{u(s)}{n(s)} = -\frac{C(s)}{1 + L(s)}. \end{aligned} \]

These relations are fundamental for understanding how the loop shape affects noise at both the output and the actuator.

3. High-Frequency Asymptotics and Noise Energy

Assume that for large \( \omega \), the open-loop transfer has the asymptotic behaviour \( L(\mathrm{j}\omega) \sim K\,(\mathrm{j}\omega)^{-m} \) with \( m > 0 \). At high frequency we typically have \( \lvert L(\mathrm{j}\omega)\rvert \ll 1 \), so

\[ \begin{aligned} T_{n\to y}(\mathrm{j}\omega) &= -\frac{L(\mathrm{j}\omega)}{1 + L(\mathrm{j}\omega)} \approx -L(\mathrm{j}\omega),\\[4pt] T_{n\to u}(\mathrm{j}\omega) &= -\frac{C(\mathrm{j}\omega)}{1 + L(\mathrm{j}\omega)} \approx -C(\mathrm{j}\omega). \end{aligned} \]

Thus, at high frequency:

  • Output noise is shaped essentially by the open-loop magnitude \( \lvert L(\mathrm{j}\omega)\rvert \).
  • Actuator noise is shaped essentially by the controller magnitude \( \lvert C(\mathrm{j}\omega)\rvert \).

Let measurement noise \( n(t) \) be wide-sense stationary with power spectral density \( S_n(\omega) \). Then the output noise spectrum is

\[ S_y(\omega) = \left\lvert T_{n\to y}(\mathrm{j}\omega) \right\rvert^2 S_n(\omega), \]

and the variance of the output noise is

\[ \sigma_y^2 = \frac{1}{2\pi}\int_0^{\infty} \left\lvert T_{n\to y}(\mathrm{j}\omega)\right\rvert^2 S_n(\omega)\, \mathrm{d}\omega. \]

For (approximately) white measurement noise, \( S_n(\omega) \approx S_0 \) (constant). In the high-frequency region where \( \lvert L(\mathrm{j}\omega)\rvert \ll 1 \), we can approximate

\[ \sigma_y^2 \approx \frac{S_0}{2\pi} \int_{\omega_h}^{\infty} \left\lvert L(\mathrm{j}\omega)\right\rvert^2 \,\mathrm{d}\omega \approx \frac{S_0 K^2}{2\pi} \int_{\omega_h}^{\infty} \omega^{-2m}\,\mathrm{d}\omega, \]

where \( \omega_h \) is a frequency beyond which the asymptotic regime holds. The integral converges only if \( 2m > 1 \), i.e. \( m > \tfrac{1}{2} \). In terms of Bode magnitude slope, this means:

  • \( m = 1 \) corresponds to −20 dB/dec roll-off: integrable, but relatively weak attenuation.
  • \( m = 2 \) corresponds to −40 dB/dec roll-off: significantly stronger suppression of high-frequency noise energy.

This calculation justifies the common loop-shaping rule that at least −20 dB/dec roll-off is required for well-behaved noise energy, and that −40 dB/dec is often preferred in precision servo systems.

4. Unmodeled High-Frequency Dynamics

Real plants have additional modes that are not included in the nominal model used for design. Examples include:

  • Unmodeled flexible modes in robot links or gearboxes.
  • Fast actuator dynamics neglected in a low-order model.
  • Sensor dynamics and anti-aliasing filters.

Let the nominal plant be \( G_0(s) \) and the true plant be \( G_{\text{true}}(s) \). A simple representation of unmodeled high-frequency dynamics is

\[ G_{\text{true}}(s) = G_0(s)\,\Delta(s), \]

where \( \Delta(s) \) is stable and represents the multiplicative deviation. For example, adding an unmodeled first-order pole at \( -\omega_u \) gives

\[ \Delta(s) = \frac{1}{1 + \dfrac{s}{\omega_u}}. \]

Then the true open-loop transfer becomes \( L_{\text{true}}(s) = C(s)G_{\text{true}}(s) = L_0(s)\Delta(s) \), where \( L_0(s) = C(s)G_0(s) \) is the nominal loop used for design.

In the frequency domain, the unmodeled pole contributes:

\[ \left\lvert \Delta(\mathrm{j}\omega)\right\rvert = \frac{1}{\sqrt{1 + \left(\dfrac{\omega}{\omega_u}\right)^2}}, \qquad \angle \Delta(\mathrm{j}\omega) = -\arctan\!\left(\frac{\omega}{\omega_u}\right). \]

At the gain crossover frequency \( \omega_c \) (where \( \lvert L_0(\mathrm{j}\omega_c)\rvert \approx 1 \)), the additional phase lag due to the unmodeled pole is approximately

\[ \varphi_{\text{add}}(\omega_c) = \arctan\!\left(\frac{\omega_c}{\omega_u}\right). \]

To keep this phase loss small (and preserve phase margin), we require \( \omega_c \ll \omega_u \). Typical design rules of thumb are:

  • Conservative: \( \omega_c \leq 0.1\,\omega_u \) (phase loss < 6°).
  • Moderate: \( \omega_c \leq 0.2\,\omega_u \) (phase loss ≈ 11°).

High-frequency roll-off of \( L(s) \) guarantees that for frequencies where the model is unreliable, the loop gain is already small, so the Nyquist curve stays close to the origin and far from the critical point \( -1 \). This is a classical way to obtain robust stability without explicitly modeling all high-frequency dynamics.

flowchart TD
  R["Reference r"] --> E["Error e"]
  Y["Output y"] --> SUM["Summing node"]
  N["Measurement noise n"] --> SUM
  SUM -->|"y + n"| E
  E --> C["Controller C(s)"]
  C --> U["Control u"]
  U --> G["Plant G0(s)"]
  G --> D["Unmodeled dyn Delta(s)"]
  D --> Y
        

In robot joint control, unmodeled flexible modes of the link occur at higher frequencies than the main rigid-body mode. By keeping the closed-loop bandwidth at least a factor of 3–10 lower than these flexible modes and enforcing strong high-frequency roll-off, we prevent excitation of these resonances.

5. Controller Structures for High-Frequency Roll-Off

In practice, high-frequency roll-off is implemented by adding poles to the controller or by filtering signals. Common patterns include:

5.1 First- and Second-Order Rolloff Factors

A simple first-order roll-off factor at frequency \( \omega_h \) is

\[ F_1(s) = \frac{1}{1 + \dfrac{s}{\omega_h}}. \]

For \( \omega \gg \omega_h \), we have \( \lvert F_1(\mathrm{j}\omega)\rvert \approx \omega_h/\omega \), corresponding to −20 dB/dec. A second-order roll-off factor is

\[ F_2(s) = \frac{1}{\left(1 + \dfrac{s}{\omega_h}\right)^2}, \]

which yields approximately −40 dB/dec beyond \( \omega_h \). A typical servo controller may be written as

\[ C(s) = C_{\text{low}}(s)\,F_k(s), \]

where \( C_{\text{low}}(s) \) is designed for low- and mid-frequency behaviour (e.g., PI or lead–lag) and \( F_k(s) \) imposes the desired high-frequency roll-off.

5.2 Filtered Derivative Action

Derivative action amplifies high-frequency noise because \( \lvert s \rvert = \omega \) grows without bound. The filtered derivative form

\[ C_D(s) = K_D\,\frac{s}{1 + \dfrac{s}{\omega_f}} \]

behaves like an ideal derivative for \( \omega \ll \omega_f \), but saturates to a finite gain \( K_D \omega_f \) for \( \omega \gg \omega_f \), thus limiting noise amplification at very high frequencies.

Often, the overall PID controller is implemented as

\[ C_{\text{PID}}(s) = K_P + \frac{K_I}{s} + K_D\,\frac{s}{1 + \dfrac{s}{\omega_f}}, \]

possibly multiplied by an additional roll-off factor \( F_1(s) \) or \( F_2(s) \) to ensure sufficiently fast decay of \( \lvert C(\mathrm{j}\omega)\rvert \) and therefore of \( \lvert L(\mathrm{j}\omega)\rvert \).

6. Python Illustration — Loop Shaping with High-Frequency Roll-Off

We now illustrate high-frequency roll-off in Python using the python-control library, which is widely used in robotics research together with roboticstoolbox-python. Consider a simplified robot joint model with transfer function \( G(s) = \dfrac{1}{Js^2 + Bs} \) and a PI controller with roll-off.


import numpy as np
import matplotlib.pyplot as plt
import control as ct  # python-control: pip install control

# Robot joint parameters (simplified)
J = 0.01   # inertia
B = 0.1    # viscous friction

# Plant: 1 / (J s^2 + B s)
G = ct.tf([1.0], [J, B, 0.0])

# PI controller without rolloff: C_low(s) = Kp + Ki/s
Kp = 30.0
Ki = 80.0
s = ct.tf([1.0, 0.0], [1.0])             # s
C_int = Ki / s                           # integral term
C_low = Kp + C_int

# First-order rolloff at wh = 200 rad/s
wh = 200.0
F1 = 1.0 / (1.0 + s / wh)

# Second-order rolloff at same corner
F2 = 1.0 / (1.0 + s / wh)**2

C_no_rolloff = C_low
C_rolloff_1  = C_low * F1
C_rolloff_2  = C_low * F2

L_no   = C_no_rolloff * G
L_ro1  = C_rolloff_1 * G
L_ro2  = C_rolloff_2 * G

# Bode magnitude of L(jw)
w = np.logspace(0, 4, 400)  # 1 to 10^4 rad/s

mag_no, phase_no, _ = ct.bode(L_no,  w, Plot=False)
mag_1,  phase_1,  _ = ct.bode(L_ro1, w, Plot=False)
mag_2,  phase_2,  _ = ct.bode(L_ro2, w, Plot=False)

plt.figure()
plt.loglog(w, mag_no, label="no rolloff")
plt.loglog(w, mag_1,  label="1st-order rolloff")
plt.loglog(w, mag_2,  label="2nd-order rolloff")
plt.xlabel("w (rad/s)")
plt.ylabel("|L(jw)|")
plt.legend()
plt.grid(True, which="both")

# Noise simulation: white noise at sensor
# Closed-loop with measurement noise
T_n_no  = -L_no  / (1.0 + L_no)
T_n_1   = -L_ro1 / (1.0 + L_ro1)
T_n_2   = -L_ro2 / (1.0 + L_ro2)

t = np.linspace(0.0, 1.0, 5000)
dt = t[1] - t[0]
sigma_n = 0.01  # noise std
n = sigma_n * np.random.randn(len(t))

_, y_n_no  = ct.forced_response(T_n_no,  T=t, U=n)
_, y_n_1   = ct.forced_response(T_n_1,   T=t, U=n)
_, y_n_2   = ct.forced_response(T_n_2,   T=t, U=n)

plt.figure()
plt.plot(t, y_n_no, label="no rolloff")
plt.plot(t, y_n_1,  label="1st-order")
plt.plot(t, y_n_2,  label="2nd-order")
plt.xlabel("time (s)")
plt.ylabel("output due to measurement noise")
plt.legend()
plt.grid(True)

plt.show()

# NOTE:
# In a robotics setting, the same C(s) would be discretized and implemented
# in middleware such as ROS using the robot joint states as feedback.
      

The Bode plot demonstrates faster decay of \( \lvert L(\mathrm{j}\omega)\rvert \) when first- and second-order roll-off factors are applied, and the time-domain simulation shows reduced output noise variance.

7. C++ and Java Snippets — Discrete Implementation of Rolloff Filters

In embedded robot controllers (e.g., using ROS and ros_control in C++ or WPILib in Java), high-frequency roll-off is typically realized as digital filters on measured signals or controller outputs. A simple first-order low-pass filter with cutoff frequency \( \omega_h \) and sample time \( T_s \) has difference equation

\[ y_k = \alpha\,y_{k-1} + (1 - \alpha)\,x_k, \qquad \alpha = \mathrm{e}^{-\omega_h T_s}, \]

where \( x_k \) is the filter input (e.g. noisy measurement) and \( y_k \) is the filtered output used in the feedback loop.

7.1 C++ Example (ROS-Style Robot Joint Controller)


#include <cmath>
#include <vector>

// In practice you would integrate this into a ROS controller node and use Eigen
// for vector operations. Here we show a scalar example.

class LowPassFilter {
public:
    LowPassFilter(double Ts, double w_h)
    : Ts_(Ts), w_h_(w_h)
    {
        alpha_ = std::exp(-w_h_ * Ts_);
        y_prev_ = 0.0;
    }

    double step(double x_k) {
        double y_k = alpha_ * y_prev_ + (1.0 - alpha_) * x_k;
        y_prev_ = y_k;
        return y_k;
    }

private:
    double Ts_;
    double w_h_;
    double alpha_;
    double y_prev_;
};

class PIDWithRolloff {
public:
    PIDWithRolloff(double Kp, double Ki, double Kd,
                   double Ts, double w_h)
    : Kp_(Kp), Ki_(Ki), Kd_(Kd),
      Ts_(Ts), filt_(Ts, w_h),
      integ_(0.0), prev_meas_(0.0)
    {}

    double step(double ref, double meas_raw) {
        // filter measurement to suppress high-frequency noise
        double meas = filt_.step(meas_raw);

        double error = ref - meas;
        integ_ += error * Ts_;
        double deriv = (meas - prev_meas_) / Ts_; // derivative on measurement
        prev_meas_ = meas;

        // filtered derivative term reduces high-frequency gain
        double u = Kp_ * error + Ki_ * integ_ - Kd_ * deriv;
        return u;
    }

private:
    double Kp_, Ki_, Kd_;
    double Ts_;
    LowPassFilter filt_;
    double integ_;
    double prev_meas_;
};
      

7.2 Java Example (e.g. for Mobile Robot / FRC Controller)


public class LowPassFilter {
    private final double alpha;
    private double yPrev = 0.0;

    public LowPassFilter(double Ts, double w_h) {
        this.alpha = Math.exp(-w_h * Ts);
    }

    public double step(double xk) {
        double yk = alpha * yPrev + (1.0 - alpha) * xk;
        yPrev = yk;
        return yk;
    }
}

public class PIDWithRolloff {
    private final double Kp, Ki, Kd;
    private final double Ts;
    private final LowPassFilter measFilter;
    private double integ = 0.0;
    private double measPrev = 0.0;

    public PIDWithRolloff(double Kp, double Ki, double Kd,
                          double Ts, double w_h) {
        this.Kp = Kp;
        this.Ki = Ki;
        this.Kd = Kd;
        this.Ts = Ts;
        this.measFilter = new LowPassFilter(Ts, w_h);
    }

    public double step(double ref, double measRaw) {
        double meas = measFilter.step(measRaw);
        double error = ref - meas;
        integ += error * Ts;
        double deriv = (meas - measPrev) / Ts;
        measPrev = meas;

        return Kp * error + Ki * integ - Kd * deriv;
    }
}
      

In both snippets, the measurement is low-pass filtered before being used in the PID calculation, implementing a discrete roll-off that limits high-frequency noise entering the loop. In practical robot control software, these building blocks are integrated with kinematic/dynamic models and actuator interfaces.

8. MATLAB/Simulink and Mathematica Implementations

8.1 MATLAB/Simulink (Control System Toolbox, Robotics System Toolbox)

In MATLAB, we can analyze loop shaping with roll-off for a robot joint model using tf and Bode plots. The same transfer functions can be implemented in Simulink as blocks (e.g. using PID Controller blocks with derivative filtering and additional low-pass blocks).


J = 0.01;
B = 0.1;

s = tf('s');
G = 1 / (J*s^2 + B*s);       % robot joint model

Kp = 30; Ki = 80;
C_low = Kp + Ki/s;           % PI

wh = 200;                    % rolloff corner
F2 = 1 / (1 + s/wh)^2;       % 2nd-order rolloff
C = C_low * F2;

L = C*G;

figure; bodemag(L)
grid on
title('Open-loop with high-frequency rolloff')

Tny = -L / (1 + L);          % noise -> output

% Simulate measurement noise
t = linspace(0,1,5000);
dt = t(2)-t(1);
sigma_n = 0.01;
n = sigma_n*randn(size(t));

y = lsim(Tny, n, t);

figure;
plot(t, y);
xlabel('time (s)');
ylabel('y due to measurement noise');
grid on
title('Output noise with rolloff')

% In Simulink:
%   - Use a Plant block with transfer function G
%   - Implement C using a PID Controller block with derivative filter
%   - Add extra low-pass filters to controller output or measurement line
%   - Use 'Bode Plot' or 'Linear Analysis Tool' to inspect loop shape
      

8.2 Wolfram Mathematica

Mathematica can be used to symbolically and numerically analyze noise transfer and high-frequency roll-off. The following code uses TransferFunctionModel and BodePlot.


J = 0.01;
B = 0.1;

s = LaplaceTransformVariable[s];

G = TransferFunctionModel[1/(J*s^2 + B*s), s];

Kp = 30; Ki = 80;
Clow = TransferFunctionModel[Kp + Ki/s, s];

wh = 200;
F2  = TransferFunctionModel[1/(1 + s/wh)^2, s];

C   = SystemsModelSeries[Clow, F2];
L   = SystemsModelSeries[C, G];

Tny = -SystemsModelSeries[L, SystemsModelFeedback[1, L]];

BodePlot[L, {1, 10^4},
  PlotRange -> All,
  FrameLabel -> {"w (rad/s)", "Magnitude / Phase"},
  PlotLegends -> {"L(jw) with rolloff"}
]

(* Time-domain noise simulation *)
tmax = 1;
Ts   = 1/5000;
tvec = Range[0, tmax, Ts];

sigmaN = 0.01;
nvec   = RandomVariate[NormalDistribution[0, sigmaN], Length[tvec]];

yres = OutputResponse[Tny, nvec, {0, tmax}];

ListLinePlot[
  Transpose[{tvec, yres}],
  AxesLabel -> {"t (s)", "y due to noise"},
  PlotRange -> All
]
      

Mathematica is particularly useful when deriving symbolic high-frequency asymptotics or exploring how additional unmodeled poles affect phase margin in loop shaping.

9. Problems and Solutions

Problem 1 (Noise Transfer High-Frequency Approximation): Consider a unity-feedback loop with nominal open-loop \( L(s) = C(s)G(s) \). The measurement noise enters additively at the sensor. Show that if \( \lvert L(\mathrm{j}\omega)\rvert \ll 1 \) for \( \omega \geq \omega_h \), then \( \lvert T_{n\to y}(\mathrm{j}\omega)\rvert \approx \lvert L(\mathrm{j}\omega)\rvert \) and \( \lvert T_{n\to u}(\mathrm{j}\omega)\rvert \approx \lvert C(\mathrm{j}\omega)\rvert \).

Solution:

From Section 2 we have \( T_{n\to y}(s) = -\dfrac{L(s)}{1 + L(s)} \). For \( \lvert L(\mathrm{j}\omega)\rvert \ll 1 \), we approximate \( 1 + L(\mathrm{j}\omega) \approx 1 \), so

\[ T_{n\to y}(\mathrm{j}\omega) \approx -L(\mathrm{j}\omega), \qquad \lvert T_{n\to y}(\mathrm{j}\omega)\rvert \approx \lvert L(\mathrm{j}\omega)\rvert. \]

Similarly, \( T_{n\to u}(s) = -\dfrac{C(s)}{1 + L(s)} \), and with the same approximation we get

\[ T_{n\to u}(\mathrm{j}\omega) \approx -C(\mathrm{j}\omega), \qquad \lvert T_{n\to u}(\mathrm{j}\omega)\rvert \approx \lvert C(\mathrm{j}\omega)\rvert. \]

Hence, at high frequency the output noise is shaped by the open-loop, while actuator noise is shaped by the controller.

Problem 2 (Noise Energy and Rolloff Order): Assume measurement noise is white with PSD \( S_n(\omega) = S_0 \). Suppose that for \( \omega \geq \omega_h \), the open-loop magnitude satisfies \( \lvert L(\mathrm{j}\omega)\rvert \approx K\omega^{-m} \). Under the high-frequency approximation \( T_{n\to y}(\mathrm{j}\omega) \approx -L(\mathrm{j}\omega) \), determine for which \( m \) the contribution of high-frequency noise to the variance \( \sigma_y^2 \) is finite.

Solution:

Using the approximation, the high-frequency contribution to the variance is

\[ \sigma_{y,\text{HF}}^2 \approx \frac{1}{2\pi}\int_{\omega_h}^{\infty} \lvert L(\mathrm{j}\omega)\rvert^2 S_0\,\mathrm{d}\omega \approx \frac{S_0 K^2}{2\pi}\int_{\omega_h}^{\infty} \omega^{-2m}\,\mathrm{d}\omega. \]

The improper integral \( \int_{\omega_h}^{\infty} \omega^{-2m}\,\mathrm{d}\omega \) converges if and only if \( 2m > 1 \), i.e. \( m > \tfrac{1}{2} \). Therefore, any roll-off steeper than \( \omega^{-1/2} \) yields finite noise variance; in practice we use \( m \geq 1 \) (−20 dB/dec) or \( m \geq 2 \) (−40 dB/dec) for robust noise suppression.

Problem 3 (Effect of Unmodeled Pole on Phase Margin): A loop is designed using a nominal plant \( G_0(s) \) and controller \( C(s) \), giving a nominal open-loop \( L_0(s) \) with gain crossover \( \omega_c \) and phase margin \( \phi_m^{(0)} \). Later it is discovered that the true plant has an extra unmodeled pole at \( -\omega_u \). Using the first-order factor approximation, estimate the new phase margin \( \phi_m^{(\text{true})} \) at \( \omega_c \).

Solution:

The unmodeled pole introduces the factor \( \Delta(s) = \dfrac{1}{1 + \dfrac{s}{\omega_u}} \) with phase lag

\[ \angle \Delta(\mathrm{j}\omega) = -\arctan\!\left(\frac{\omega}{\omega_u}\right). \]

At \( \omega = \omega_c \) the additional phase lag is \( \varphi_{\text{add}} = \arctan\!\left(\dfrac{\omega_c}{\omega_u}\right) \), so the true phase margin is approximately

\[ \phi_m^{(\text{true})} \approx \phi_m^{(0)} - \varphi_{\text{add}} = \phi_m^{(0)} - \arctan\!\left(\frac{\omega_c}{\omega_u}\right). \]

This formula shows why \( \omega_c \) must be chosen much smaller than \( \omega_u \) to preserve adequate phase margin.

Problem 4 (Filtered Derivative and High-Frequency Gain): Consider the filtered derivative term \( C_D(s) = K_D\dfrac{s}{1 + \dfrac{s}{\omega_f}} \). Show that its magnitude satisfies \( \lvert C_D(\mathrm{j}\omega)\rvert \approx K_D\omega \) for \( \omega \ll \omega_f \) and \( \lvert C_D(\mathrm{j}\omega)\rvert \approx K_D\omega_f \) for \( \omega \gg \omega_f \).

Solution:

The frequency response is

\[ C_D(\mathrm{j}\omega) = K_D\,\frac{\mathrm{j}\omega}{1 + \dfrac{\mathrm{j}\omega}{\omega_f}} = K_D\,\frac{\mathrm{j}\omega}{1 + \mathrm{j}\omega/\omega_f}. \]

For \( \omega \ll \omega_f \), the denominator is approximately 1, so

\[ C_D(\mathrm{j}\omega) \approx K_D\,\mathrm{j}\omega, \quad \lvert C_D(\mathrm{j}\omega)\rvert \approx K_D\omega. \]

For \( \omega \gg \omega_f \), the denominator has magnitude \( \left\lvert 1 + \mathrm{j}\omega/\omega_f \right\rvert \approx \omega/\omega_f \). Then

\[ \lvert C_D(\mathrm{j}\omega)\rvert \approx K_D\,\frac{\omega}{\omega/\omega_f} = K_D\,\omega_f. \]

Thus the derivative behaves ideally at low frequency but has bounded gain \( K_D\omega_f \) at high frequency, providing high-frequency roll-off.

Problem 5 (Bandwidth vs Unmodeled Mode Location): A robot joint has an unmodeled flexible mode at \( \omega_u = 2000 \) rad/s. The nominal loop is designed with crossover \( \omega_c \). Use the rule of thumb \( \phi_m^{(\text{true})} \approx \phi_m^{(0)} - \arctan\!\left(\dfrac{\omega_c}{\omega_u}\right) \) with \( \phi_m^{(0)} = 60^\circ \) and the requirement \( \phi_m^{(\text{true})} \geq 40^\circ \) to estimate an upper bound on \( \omega_c \).

Solution:

The phase margin condition reads \( 60^\circ - \arctan\!\left(\dfrac{\omega_c}{\omega_u}\right) \geq 40^\circ \), i.e.

\[ \arctan\!\left(\frac{\omega_c}{\omega_u}\right) \leq 20^\circ. \]

Taking tangent on both sides and using \( \omega_u = 2000 \) rad/s gives

\[ \frac{\omega_c}{2000} \leq \tan(20^\circ) \quad\Rightarrow\quad \omega_c \leq 2000 \tan(20^\circ) \approx 2000 \times 0.364 \approx 728\ \text{rad/s}. \]

Thus, the crossover should be kept below approximately 700 rad/s to maintain at least 40° phase margin in the presence of the unmodeled flexible mode.

10. Summary

In this lesson we analyzed the impact of high-frequency roll-off on sensor noise and robustness to unmodeled dynamics. Starting from the closed-loop equations for a unity-feedback system with measurement noise, we derived the noise-to-output and noise-to-actuator transfer functions and examined their high-frequency asymptotics. We showed how the order of roll-off determines the convergence of noise energy, and we studied how unmodeled high-frequency poles reduce phase margin if the bandwidth is chosen too large.

Finally, we examined practical realization of high-frequency roll-off via controller poles and filtered derivatives, and we provided implementation examples in Python, C++, Java, MATLAB/Simulink, and Mathematica, all of which are relevant for servo and robotics control applications. These ideas form the foundation for the more formal sensitivity-based trade-off analysis in the next chapter.

11. References

  1. Horowitz, I.M. (1963). Synthesis of feedback systems. Academic Press.
  2. MacFarlane, A.G.J., & Kouvaritakis, B. (1977). Design of multivariable control systems using the inverse Nyquist array. IEE Proceedings, 124(5), 425–430.
  3. 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.
  4. Middleton, R.H., & Goodwin, G.C. (1988). Improved finite-word-length characteristics in digital control using delta operators. IEEE Transactions on Automatic Control, 33(1), 97–104.
  5. Skogestad, S., & Postlethwaite, I. (1996). Multivariable Feedback Control: Analysis and Design. John Wiley & Sons. (See early chapters for classical loop-shaping insights.)
  6. Francis, B.A., & Tannenbaum, A. (1990). Feedback Control Theory. Macmillan.
  7. Åström, K.J., & Hägglund, T. (1995). PID Controllers: Theory, Design, and Tuning. Instrument Society of America.
  8. Doyle, J.C., Francis, B.A., & Tannenbaum, A.R. (1992). Feedback Control Theory. Macmillan Publishing.
  9. Glover, K., & McFarlane, D.C. (1989). Robust stabilization of normalized coprime factor plant descriptions with H∞-bounded uncertainty. IEEE Transactions on Automatic Control, 34(8), 821–830.
  10. Safonov, M.G., & Athans, M. (1977). Gain and phase margin for multiloop LQG regulators. IEEE Transactions on Automatic Control, 22(2), 173–179.