Na et al., IEEE TSMC 52(8), 2022 · reproduction, diagnosis, extensions

Approximation-free active suspension, rebuilt and tested

The paper keeps a car body inside a shrinking performance envelope with a three-step, model-free controller on an electro-hydraulic rig. We rebuilt it on a calibrated hydraulic quarter car, checked the code five independent ways, and stress-tested the claims with control theory, fair comparators and road transients. Everything here is simulation.

50 mm bump at 20 km/h. Left: the paper's AFC hits its envelope, switches the valve rail to rail and the tyre load reaches 1.77× static, so the wheel leaves the road. Right: our envelope relaxation keeps the command off the rails (tyre load 0.73×). FreeCAD rig rendered in Blender from simulated trajectories; motion ×4, played 2× slower.
Case-10 AFC IAE0.129m·s · paper 0.122
AFC command0.50 VRMS · paper ≈ 0.5 V
Hold-out error0.63test vs 0.22 train
Simulink vs code4e-16 mmax body-position gap
Multibody vs code2.1 µmmechanics from joints
Bump tyre load, AFC-AW0.73×static · paper AFC 1.77×

Videos

All motion is simulated: the calibrated hydraulic quarter car driven over the same 50 mm bump, with vertical motion exaggerated four times so centimetre-level movement is visible.

Schematic: passive, AFC, AFC-AWRed bars are the prescribed bound ±μ₁(t); the readout shows each controller's valve command. Paper AFC switches between the ±5 V rails through the bump; the relaxed version never saturates.
Rig: paper AFCCase-A gains, unchanged.
Rig: AFC-AWEnvelope widens while the valve saturates.

What we found

Each number in the report is tagged as printed in the paper, read off a paper plot, calibrated, assumed, or simulated by us.

  1. The paper's AFC reproduces, on the right plant

    Two fitted factors (valve gain 5×10⁻⁴ m/V, 33 ms lumped lag) on a standard hydraulic quarter car give IAE 0.129, ITAE 1.20, ITSE 0.0088 against the paper's 0.122, 1.14, 0.0093, with the gains unchanged. BSC and PID saturate, as reported.

  2. But the rig can't be identified

    The paper's slower-road gains fail a hold-out test: a joint fit across both gain sets has test error 0.63. Its pressure scaling, valve gain and lag are unpublished, and they decide the outcome.

  3. Our first model failed for a different reason

    On the v1 plant the 50 Hz loop is locally unstable (spectral radius 1.02). Removing the ±5 V rail makes it worse, so saturation was a symptom, not the cause.

  4. The proof holds where its assumptions do

    Lemma 1's bound is tight while the valve is unsaturated and fails exactly where it saturates. The continuous loop is stable, yet every zero-order-hold implementation we tried (1–20 ms) is locally unstable through an 88 Hz hydraulic mode.

  5. Near zero error, AFC is a skyhook spring

    About 63 kN/m with little damping: strong at the road frequency, worse than passive in the 4–8 Hz comfort band. At equal effort, LQR and skyhook match or beat it.

  6. One extra state fixes the bump

    Letting the envelope widen while the valve saturates removes rail-to-rail switching in the quarter car and the half car, and leaves Case 10 untouched.

Figures

From the MATLAB R2026a run; every figure is regenerated by run_phase1–run_phase3b.

Body displacement of AFC, BSC, PID and passive against the shrinking prescribed bound
Case 10 against the envelopeAFC stays inside the shrinking bound; BSC and PID with the paper's gains chatter against the rails.
Simscape Multibody and hand-written equations give identical body displacement
Independent physics agreesSimscape Multibody builds the mechanics from joints; it matches our equations to 2.1 µm.
Bump and ISO 8608 road responses for six controllers
TransientsBump and ISO 8608 class-C road: displacement, acceleration and command for passive, AFC, AFC-AW, skyhook, LQR and PID.
Simulink block diagram of the digital AFC controller and servo-valve plant
Simulink v2 model50 Hz digital controller with sensor path, ±5 V rail and servo-valve plant; matches the code to 4×10⁻¹⁶ m.

Five implementations, one answer

Before trusting any number, the same equations were rebuilt independently and compared.

ImplementationWhat it addsAgreement with the MATLAB library
Simulink v2block diagram, 50 Hz digital controller, sensor noise path4×10⁻¹⁶ m
Simscape Multibodymechanics from prismatic joints, not our equations2.1 µm
C on Cortex-M4 (QEMU)instruction counts for the paper's timing claim10 digits
Browser lab (this site)interactive teaching toolIAE to 4 digits
GNU Octave 8.4runs without a MATLAB licencesame digits*

* except a few runs riding the ±5 V rail, where the locally unstable loop amplifies rounding differences.