Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

2.5 Stability and Transient Response

Stability is a feasibility condition

For the linear closed-loop system

x˙=Acl(p,c)x,\dot{x}=A_{\mathrm{cl}}(p,c)x,

asymptotic stability requires every continuous-time eigenvalue of AclA_{\mathrm{cl}} to have negative real part. In discrete time, every eigenvalue must lie inside the unit circle. Stability should normally be enforced as a constraint, not traded against cost as if mild instability were acceptable.

Physical design changes open-loop poles. Stiffness and inertia change natural frequencies; damping changes decay; aerodynamics can add negative damping; flexible modes add lightly damped poles. The controller moves closed-loop poles only within limits imposed by authority, sensing, delay, uncertainty, and unmodeled dynamics.

Plant design moves open-loop poles and changes the region available for closed-loop placement.

Second-order interpretation

For

s2+2ζωns+ωn2=0,s^2+2\zeta\omega_n s+\omega_n^2=0,

ωn\omega_n sets a response time scale and ζ\zeta controls oscillation and decay. For the passive mass-spring-damper,

ωn=k/m,ζ=c2km.\omega_n=\sqrt{k/m}, \qquad \zeta=\frac{c}{2\sqrt{km}}.

Changing mass or stiffness therefore changes the bandwidth a controller must address. Raising stiffness may speed the rigid-body mode while introducing or exposing structural modes that limit gain.

Transient metrics

Rise time, settling time, overshoot, peak acceleration, vibration decay, and disturbance amplification describe different aspects of response. CCD should use metrics tied to the mission. A pole-placement target alone does not enforce actuator effort, comfort, stress, or saturation.

Pole calculation

import numpy as np

def passive_poles(m, c, k):
    A = np.array([[0.0, 1.0], [-k/m, -c/m]])
    return np.linalg.eigvals(A)

for k in (50.0, 150.0, 450.0):
    poles = passive_poles(m=2.0, c=8.0, k=k)
    print(f"k={k:5.1f} N/m -> poles {poles}")

Robust stability

Nominal poles are not enough. Plant uncertainty, delay, neglected modes, and controller implementation can erode margins. A physical design that permits high nominal feedback gain may amplify an uncertain flexible mode. Gain margin, phase margin, structured uncertainty, and worst-case analysis become design criteria when robustness drives feasibility.

Activity 2.5: interpret a redesign