The Aircraft Is Flying Under Wind Disturbance
This problem builds directly on the wind-disturbance controller problem. The aircraft is exposed to atmospheric disturbance, and the controller tries to reject altitude and pitch error.
But now an additional reality is included: the actuator has physical limits. The controller may calculate a large elevator or thrust correction, but the real aircraft cannot always apply the command.
This creates a mismatch between what the control law wants and what the aircraft actually receives.
Commanded Control Is Not Always Applied Control
In an ideal simulation, the controller output is applied directly to the aircraft:
In a physical system, the actuator can only apply a command within its maximum authority:
The controller thinks it is applying the full correction, but the aircraft only receives the saturated command.
| Ideal Simulation | Physical Aircraft |
|---|---|
| Controller demand is applied directly | Controller demand is limited by actuator authority |
| No elevator/thrust limit | Elevator/thrust command is clipped |
| Stability may look clean | Performance may collapse under disturbance |
Velocity, Altitude, Pitch, and Limited Control
The simplified aircraft model uses the same basic states from the previous wind-disturbance problem:
- \(V\) = velocity
- \(h\) = altitude
- \(\theta\) = pitch angle
- \(u\) = elevator/thrust correction command
The applied input is not always equal to the commanded input:
The terms \(w_V(t)\) and \(w_h(t)\) represent wind disturbance effects. The control input \(u_{applied}\) represents the actual correction delivered by the actuator after saturation.
The Controller May Ask for More Than the Aircraft Can Give
During a wind gust, altitude and pitch error increase. The controller reacts by demanding a larger correction.
But if \(u_{cmd}\) goes outside the physical actuator limit, the command is clipped:
What Saturation Means Physically
Suppose the controller asks for \(+20^\circ\) elevator, but the actuator limit is \(+8^\circ\). The aircraft only receives \(+8^\circ\).
Saturation does not only reduce control authority. It also changes the closed-loop behaviour of the system, because the feedback law is no longer being applied as designed.
Run the Controller With and Without Saturation
Adjust the controller gain, wind strength, gust frequency, damping, actuator limit, and simulation time. Then compare ideal control against physically limited control.
Why Saturation Can Break a Stable Controller
The controller assumes that control authority is available. But when the actuator cannot deliver the command, the correction becomes insufficient.
Under strong wind disturbance, this creates a dangerous feedback loop:
This is why a controller can appear stable in theory but fail in a physical system. The equations may be stable, but the actuator cannot supply the required control.
How This Connects to Actuator Saturation & Anti-Windup
This aircraft disturbance problem is the physical-flight version of the same control-limit issue shown in the spacecraft anti-windup page.
In both cases, the controller computes a command that the real actuator cannot fully apply.
The spacecraft page focuses on torque saturation and integral windup. This page focuses on wind disturbance and limited flight-control authority. Together, they show the same engineering truth from two different systems.
Stability Must Be Tested Against Actuator Authority
A controller should not only be tested for mathematical stability. It must also be tested against physical authority limits.
Why This Matters for HAPS
High-altitude aircraft have limited control authority, limited thrust margin, slow response, and long exposure to atmospheric disturbance. A gust may require more correction than the aircraft can provide at that altitude and flight condition.
What the Engineer Should Check
- How often the actuator saturates
- Whether the aircraft recovers after a gust
- Whether controller gain increases saturation
- Whether damping reduces oscillation
- Whether the available actuator authority is enough for the disturbance environment
Reproducing the Saturation Effect in Python
The key implementation step is clipping the controller output before applying it to the aircraft model.
import numpy as np
dt = 0.05
t_final = 100
t = np.arange(0, t_final, dt)
h_target = 1000
V = np.zeros_like(t)
h = np.zeros_like(t)
theta = np.zeros_like(t)
u_cmd = np.zeros_like(t)
u_applied = np.zeros_like(t)
V[0] = 25
h[0] = 950
theta[0] = 0
K = 0.04
K_theta = 0.8
damping = 0.25
u_max = 0.16
wind_strength = 7
gust_frequency = 0.10
def wind_gust(time):
return wind_strength * np.sin(2*np.pi*gust_frequency*time)
for k in range(len(t)-1):
error = h_target - h[k]
wind = wind_gust(t[k])
u_cmd[k] = K*error - K_theta*theta[k]
u_applied[k] = np.clip(u_cmd[k], -u_max, u_max)
V_dot = -0.015*(V[k] - 25) + 0.03*u_applied[k] + 0.03*wind
h_dot = V[k]*np.sin(theta[k]) + 0.7*wind
theta_dot = 1.2*u_applied[k] - damping*theta[k]
V[k+1] = V[k] + V_dot*dt
h[k+1] = h[k] + h_dot*dt
theta[k+1] = theta[k] + theta_dot*dt
Stable in Theory Does Not Mean Stable Under Physical Limits
A controller can be stable in the equation but fail on the aircraft because the actuator cannot deliver the requested command.
The full controller output is applied directly.
The command is clipped by elevator or thrust authority.
Always test control laws against actuator limits.