| name | neural-eso-robust-control |
| description | Neural Extended State Observer (Neural-ESO) dual-pathway architecture for provably robust learning-based control systems. Combines neural network feedforward disturbance estimation with classical ESO corrective pathway, guaranteeing uniform ultimate boundedness via Lyapunov theory and small-gain analysis. |
| tags | ["control systems","neural networks","robust control","disturbance rejection","cyber-physical systems"] |
| source | arxiv:2607.06535 |
Neural-ESO: Dual-Pathway Robust Learning-Based Control
Core Innovation
Neural-ESO introduces a dual-pathway architecture that overcomes the reliability limitations of purely learning-based control methods:
- Predictive Pathway: Neural network provides feedforward disturbance estimate to accelerate convergence
- Corrective Pathway: Conventional ESO compensates prediction errors and prevents over-reliance on neural component
Key Technical Contributions
1. Architecture Design
Control Input = Neural Feedforward Estimate + ESO Correction
= f_neural(disturbance_features) + f_eso(observation_error)
2. Theoretical Guarantees
- Lipschitz Bound Enforcement: Constrains neural network output sensitivity
- Lyapunov Stability Analysis: Proves uniform ultimate boundedness of closed-loop error dynamics
- Small-Gain Theorem: Ensures stability even with neural network approximation errors
3. Practical Benefits
- Accuracy-Robustness Trade-off: Maintains performance under distribution shift
- Training-Deployment Transfer: Reduces sim-to-real gap
- Out-of-Distribution Resilience: Graceful degradation when neural pathway fails
Implementation Pattern
Step 1: Neural Network Design
class NeuralESO(nn.Module):
def __init__(self, state_dim, disturbance_dim):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(state_dim, 64),
nn.ReLU(),
nn.Linear(64, 64),
nn.ReLU()
)
self.disturbance_estimator = nn.Linear(64, disturbance_dim)
def forward(self, state):
features = self.encoder(state)
disturbance_est = self.disturbance_estimator(features)
return torch.clamp(disturbance_est, -1.0, 1.0)
Step 2: ESO Integration
class DualPathwayController:
def __init__(self, neural_eso, classical_eso, alpha=0.5):
self.neural_eso = neural_eso
self.classical_eso = classical_eso
self.alpha = alpha
def compute_control(self, state, observation):
neural_estimate = self.neural_eso(state)
eso_correction = self.classical_eso(observation)
total_disturbance = (self.alpha * neural_estimate +
(1 - self.alpha) * eso_correction)
return self.compute_nominal_control(state, total_disturbance)
Step 3: Stability Verification
def verify_stability(neural_eso, system_dynamics):
"""
Verify Lipschitz bound and compute ultimate bound
"""
L_neural = compute_spectral_norm(neural_eso)
gamma_eso = system_dynamics.observer_gain
if L_neural * gamma_eso >= 1:
raise ValueError("Small-gain condition violated")
ultimate_bound = compute_ultimate_bound(L_neural, gamma_eso)
return ultimate_bound
Validation Results
Quadrotor Landing with Ground Effect Disturbances:
- Normal scenarios: 15% improvement over baseline ESO
- Out-of-distribution: 40% better robustness
- Training transfer: Maintains performance without retraining
Activation Triggers
Use this skill when:
- Designing learning-based controllers with safety requirements
- Need provable stability guarantees for neural control
- Deploying controllers in uncertain/disturbed environments
- Building cyber-physical systems with disturbance rejection
Pitfalls
- Over-reliance on Neural Pathway: Always maintain corrective ESO pathway
- Lipschitz Violation: Enforce spectral normalization or gradient clipping
- Insufficient Training Data: Neural pathway needs diverse disturbance scenarios
- Ignoring Small-Gain Condition: Verify L_neural * gamma_eso < 1 before deployment
References
- Zhang, F., et al. "Neural-ESO: A Dual-Pathway Architecture for Provably Robust Learning-Based Control" arXiv:2607.06535 (2026)
- Accepted to IEEE RA-L