Trajectory-Learned Actuator-Aware Funnel Network
Implementation & benchmark of arXiv:2607.23876 — Learning Input-Constrained Funnel Controllers from State Trajectory Data
Source paper: Learning Input-Constrained Funnel Controllers from State Trajectory Data arXiv:2607.23876 ⓘ · analyzed Aug 30, 2026
AI-generated research hypothesis, automatically tested. Not peer-reviewed.
Idea description
Construct a prescribed-performance funnel directly from state-only demonstrations, then train a state-feedback neural network whose output is bounded and whose gain is optimized to keep the tracking error inside that funnel. The controller should not imitate actions; it should reproduce the demonstrated transient and steady-state error geometry while explicitly reducing feedback authority whenever actuator saturation would make the funnel infeasible.
Formulas
Mathematical statement
Let $x\in\mathbb{R}^{n}$ be the plant state, $r(t)$ the desired trajectory, $e=x-r$, and $u\in\mathbb{R}^{m}$ the control input with componentwise limits $|u_i|\leq\bar u_i$. From demonstrations $x^{(j)}(t)$, estimate a positive funnel radius $\rho_k(t)$ for each state component, for example $\rho_k(t)=\epsilon_k+q_{1-\alpha}(|x_k^{(j)}(t)-r_k(t)|)$ followed by positive smoothing, where $q_{1-\alpha}$ is the empirical $(1-\alpha)$ quantile and $\epsilon_k>0$. Use the normalized error $z_k=e_k/\rho_k(t)$ and train a gain network $K_\theta(x,t)$ in a bounded controller $u=\operatorname{diag}(\bar u)\tanh(v_\theta(x,t))$. For a locally linear error model $\dot e\approx A_e(x,t)e+B(x)u+d(x,t)$, a sufficient contraction-style condition is $\dot V\leq-\lambda V$ for $V=\frac12 z^\top Pz$, $P\succ0$, with $\dot V=z^\top P[\dot e/\rho-e\dot\rho/\rho^2]$ componentwise. The actuator-authority condition is explicit in the scalar case: if $\dot e=-k e$ and $|e|\leq\rho$, then $k\rho\leq\bar u$, hence $k\leq\bar u/\rho$. The neural analogue penalizes or constrains the worst-case required control over sampled funnel states.
Implementation notes
1. Integration point: place this module at the policy head of a controller for a differentiable simulator, neural ODE, world model, or model-based RL system. The network receives the current state, target, time, and optionally the normalized error $z$; it outputs an unconstrained vector $v_\theta$, which is converted to actuator-valid actions by the tanh parameterization. Do not train on demonstrated actions. 2. Pseudocode: interpolate demonstrations at training times; compute the empirical error quantile and fit a smooth positive $\rho(t)$; sample states near and inside the funnel; evaluate $u=\bar u\odot\tanh(v_\theta)$; roll out the plant or learned dynamics; minimize task loss plus $\beta\max(0,\max_k|e_k|/\rho_k-1)^2+\gamma\max(0,\dot V+\lambda V)^2$. Estimate $\dot V$ with automatic differentiation through the dynamics or a finite difference over two rollout steps. Optionally use an active-set loop: identify samples with funnel or Lyapunov violations, increase their weights, and freeze already feasible samples. 3. Computed from the paper's mechanism: the funnel is inferred from state trajectories, the policy is state-feedback rather than action imitation, and actuator feasibility is enforced during synthesis. Estimated empirically: $A_e$, $B$, disturbance terms, $\dot V$, and the local density radius around demonstrations. 4. First cheap experiment: use a 1D or 2D saturated integrator and compare behavioral cloning from actions, an unconstrained MLP policy, and this funnel controller on held-out initial states. Sweep actuator limit $\bar u$ and funnel radius $\rho$. The quantitative prediction is a sharp feasibility boundary near $k_{\max}=\bar u/\rho$ in the scalar system: above this requested gain, funnel violations or saturation should rise rapidly; below it, normalized error should decay approximately as $|z(t)|\sim e^{-\lambda t/2}$ and the violation rate should remain below $\alpha$ on trajectories close to the demonstration set. A second prediction is that shrinking demonstration spacing should reduce local funnel violations monotonically, while conservative performance degrades gracefully outside the demonstrated region.
Verification
Stage 1 · Toy mechanism gate: Passed ✓
Stage 2 · Mechanism transferred to benchmark: Confirmed ✓
Stage 2 · Practical benchmark result: Significant win ✓
Methodology: 8 paired seeds, permutation test (p<0.05) against a learning-rate-tuned baseline. How verification works
Stage 1 — Mechanism check agent confidence 8/10
Built a state-only quantile funnel estimator and actuator-aware scalar saturated-integrator controller MVP in funnel_mvp.py. The mechanism checks succeeded: observed gain clipped exactly at the predicted k_max=ubar/rho, authority scaling was linear, and the normalized-error derivative identity had 0.2% relative error. However, the funnel-aware controller did not beat the fixed-gain saturated baseline on this setup, so the mechanism was verified but no performance win was observed.
- Agent confidence
- 8/10
- Baseline
- fixed_gain_saturated: mean final absolute error 0.1285, mean maximum normalized error 0.8900, mean violation fraction 0.3125, mean absolute control 0.1918
- Idea
- funnel_aware: mean final absolute error 0.1363, mean maximum normalized error 0.9438, mean violation fraction 0.3447, mean absolute control 0.1879; gain boundary predicted/observed 0.3891/0.3891; authority-scaling relative error 0.0 across ubar 0.15-0.70; normalized-error identity relative error 0.00198
Limitations: This is a scalar toy MVP rather than a trained neural network, and it uses a known integrator instead of learned or differentiable dynamics. The inferred funnel shrinks over time, held-out initial states include points outside its initial radius, and no multidimensional, noisy-dynamics, action-imitation, or training-compute comparison was tested.
How to run: python3 funnel_mvp.py
Stage 2 — Benchmark vs. tuned baseline (arXiv:2607.23876)
Beats the tuned baseline by 96.4% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0006
- Idea mean
- 0
- Effect (Δ)
- -0.0006 (−96.4%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Helps
- Baseline tuning
- swept over 3 configs
Only the registered built-in dynamics track with 400 training samples, 400 test samples, and 15 epochs was tested. The intervention is a one-step bounded correction rather than a full multi-step rollout; other actuator limits, funnel quantiles, horizons, disturbances, and out-of-distribution states were not tested.
How to run: python3 bench_funnel.py
Verdict computed by deterministic test code from paired-seed statistics — not by the language model.
Stage 2 — Benchmark latest Worked ✓
Agent confidence: 8/10
The actuator-aware funnel intervention significantly improved test MSE on the registered dynamics track using the same rnn_small architecture. It won all 8 paired seeds, with delta_mean=-0.0006042214 and permutation p=0.0081. The trained-model mechanism signature confirmed bounded authority, although the authority bound is partly enforced by tanh.
- Baseline
- best lr=0.01; mean test MSE 0.0006267142; std 0.0001539544
- Delta mean
- -0.0006042213872206048
- Idea
- best lr=0.01; mean test MSE 0.00002249282; std 0.00000416654
- Idea wins
- 8/8
- P value
- 0.0081
Benchmark result
Beats the tuned baseline by 96.4% (p=0.0081, wins 8 / 8 paired seeds; metric: lower is better).
- Benchmark
- Dynamics forecasting
- Model
- rnn_small
- Paired seeds
- 8
- Baseline mean
- 0.0006
- Idea mean
- 0
- Effect (Δ)
- -0.0006 (−96.4%; negative = idea better)
- Wins
- 8 / 8 paired seeds
- p-value
- 0.0081 (permutation test, 20 000 shuffles)
- Smallest detectable effect
- n/a
- Mechanism
- Confirmed ✓
- Practical effect
- Helps
- Baseline tuning
- swept over 3 configs
Only the registered built-in dynamics track with 400 training samples, 400 test samples, and 15 epochs was tested. The intervention is a one-step bounded correction rather than a full multi-step rollout; other actuator limits, funnel quantiles, horizons, disturbances, and out-of-distribution states were not tested.
How to run: python3 bench_funnel.py
Artifacts
- bench_funnel.py 6.3 KB View Raw
- bench_report.json 2.4 KB View Raw
- funnel_mvp.py 5.2 KB View Raw
- report.md 1.6 KB View
- report_bench_2026-08-31T091800.md 3.9 KB View
- results.json 4.6 KB View Raw