Quadrotor control under disturbances such as wind gusts and payload variations remains challenging. First-order sliding mode control (SMC) and matched/unmatched uncertainty distinction are classical approaches; however, neither tells a practitioner which loops in a cascaded controller should be made robust to sustain disturbances, how to tune those loops, nor what the additional costs are on an embedded processor. Applying robust control uniformly across all axes addresses disturbances indiscriminately, adding tuning effort on axes where no disturbance acts. On inherently underactuated vehicles, disturbances along some axes cannot be opposed directly at all. We propose a principled methodology for deciding where robust control belongs in a cascaded architecture, with all control running onboard the vehicle. We recover the acting disturbance from PID hover flights under disturbance by inverting the equations of motion, use the recovered signal to identify and quantify the excited axes, and deploy robust control where it counts. Experiments on a Crazyflie 2.1 quadrotor under slung-payload and oblique-wind disturbances show tracking improvements concentrated on the axes the rule selects, and gain sweeps confirm that the switching gain reduces error on matched axes but has no effect on an excited unmatched axis, as the analysis predicts.
Figures & tables
Fig. 1 : Selective SMC deployment workflow. PID hover flights under disturbance are inverted through the equations of motion ➀. The recovered per-axis disturbance d^(t) is scored by its excitation δ^ against a threshold from nominal hovers to identify the excited axes ➁. Excited axes receive SMC, tuning the switching gain k on matched axes and the surface slope λ on unmatched axes, while the remaining axes retain PID ➂.
Axis
Primary control input
Channel structure
z
Thrust ( Fz )
Matched
x,y
Attitude (indirect)
Unmatched
ϕ,θ,ψ
Torque ( τϕ,τθ,τψ )
Matched
TABLE I : Per-axis actuation geometry
Fig. 2 : Disturbance classification from flight data. (a) Angle of the recovered disturbance relative to the thrust axis, clustering near 0∘ for matched disturbances (payload) and near 90∘ for unmatched disturbances (wind). (b, c) Per-axis excitation δ^i ( 11 ), as force (mN) for position and as a percentage of the summed motor commands for attitude, compared against the excitation threshold εexc (dashed), with bars indicating mean ± std. Insets highlight less-affected axes ( x,y for position, yaw for attitude) below the threshold. Axes remaining below threshold retain PID control.
Fig. 3 : Selective SMC deployed onto the Crazyflie’s cascaded control architecture. Yellow marks loops that can be replaced by SMC, and blue marks loops that always retain PID. Position-level SMC issues velocity setpoints at 100 Hz , and attitude-level SMC issues body-rate setpoints at 500 Hz , both to the built-in inner loops. Algorithm 1 selects which yellow loops are switched to SMC for a given disturbance.
Fig. 4 : Setup for the physical experiments in Sec. V .
Fig. 5 : Position-level results. (a, b) RMSE vs. switching gain k for the payload (blue) and wind (red) disturbances, three trials each. Dashed lines mark the O(1/k) scaling of ( 8 ) in (a) and the k -independent level in (b), drawn at the mean RMSE across the sweep, and the shaded band in (a, b) marks the chattering regime at high k . (c) Lateral RMSE vs. surface slope λ under payload and wind at fixed k , three trials each. Dotted vertical lines mark the deployed k in (a, b) and the deployed λ in (c).
Controller config.
x - y Pos.
z Pos.
Attitude ( ϕ,θ,ψ )
PID-z/PID-att
PID
PID
PID
SMC-z/PID-att
PID
SMC
PID
SMC-z/SMC-att
PID
SMC
SMC ( ϕ,θ ), PID ( ψ )
TABLE II : Controller assignments for payload experiments
Fig. 6 : Per-axis RMSE for slung payload experiments (Sec. V-B1 ), ten trials per controller configuration. Dots show individual trials, black lines medians, and bars the 25th–75th percentiles.
Controller config.
x - y Pos.
z Pos.
Attitude ( ϕ,θ,ψ )
PID-xyz/PID-att
PID
PID
PID
SMC-xyz/PID-att
SMC
SMC
PID
SMC-xy/PID-att
SMC
PID
PID
SMC-xyz/SMC-att
SMC
SMC
SMC ( ϕ,θ ), PID ( ψ )
PID-xyz/SMC-att
PID
PID
SMC ( ϕ,θ ), PID ( ψ )
TABLE III : Controller assignments for oblique wind experiments
Fig. 7 : Per-axis RMSE for the oblique wind experiments with motion-capture feedback (Sec. V-B2 ). Dots show individual trials, black lines medians, and bars the 25th–75th percentiles.
Metric
PID-xyz/PID-att
SMC-xy/PID-att
SMC-xyz/PID-att
PID-xyz/SMC-att
SMC-xyz/SMC-att
Wind-critical axes (lateral position & attitude)
x RMSE ( m )
0.444±0.015
0.150±0.009
0.272±0.018
0.312±0.030
0.410±0.028
y RMSE ( m )
0.413±0.012
0.167±0.008
0.252±0.008
0.333±0.018
0.382±0.024
Roll RMSE (deg)
6.06±0.18
5.72±0.13
5.90±0.15
3.47±0.20
4.98±0.17
Pitch RMSE (deg)
4.67±0.33
5.79±0.08
4.98±0.39
2.38±0.25
4.39±0.15
Less-affected axes (altitude and yaw)
TABLE IV : Tracking performance comparison (mean ± std.) for oblique wind disturbance experiments. Best-performing cases in bold.
Fig. 8 : Per-axis RMSE for the oblique wind experiments with fully onboard optical-flow estimation (Sec. V-C ), including INDI. Dots show individual trials, black lines medians, and bars the 25th–75th percentiles.
Controller
Full
Att.-only
Average
CPU load
PID
5989
2104
2881
0.88%
Selective SMC (payload)
5289
1666
2391
0.73%
Selective SMC (wind)
5207
2104
2725
0.83%
Uniform SMC
4769
1666
2287
0.70%
INDI [ 12 ]
2675
2671
2672
0.82%
TABLE V : Cycles per control update (168 MHz core). Full ticks run the position and attitude loops together at 100 Hz , and attitude-only ticks fill the remaining 500 Hz updates. The average weights one full tick per four attitude-only ticks, and CPU load is the processor share at the 1 kHz stabilizer rate. Selective rows use the configurations chosen by Algorithm 1 for each disturbance.