Projection layers enforce hard constraints exactly, but their gradient degrades as more constraints become tight. ASPL differentiates through the active manifold instead, for any forward solver, with provable guarantees and better accuracy or cost on QPs, motion planning and real-robot IK.
The tight face is fixed in finitely many steps, and the backward pass is one small solve on blocked and curved directions.
Same network and data on both robots; only the output layer changes. ASPL meets the task to ~10⁻¹¹–10⁻¹² and the joint limits at the same time, at a few µs per frame, where regression misses the limits and clipping breaks the task.
One library, with the robotics applications as separate packages that use it
# Clone from Hugging Face
git clone https://huggingface.co/ASLP-Net/ASPL
cd ASPL
# Install the library (plus optional reference solvers / JAX CUDA plugins)
pip install -e aspl
pip install -e "aspl[solvers]"
pip install -e "aspl[cuda]"
# Check the layer without any data: task residual ~1e-14, QP objective to 1e-8,
# and an adjoint that matches central finite differences
cd applications/ik && python test_layer.py
ASPL/
├── aspl/ # the library: polyhedral, second-order-cone and general prox-set projections
│ ├── aspl/algorithms/ # forward (face identification) + exact reduced backward
│ └── aspl/problems/ # parametric QP, SOCP, MPC: data generation + training CLIs
└── applications/
├── ik/ # chunk-level differentiable IK on Vega-1 and G1 logs
├── motion_planning/ # maze (graph of convex sets) and multi-robot
└── flow_matching/ # hard-constrained flow-matching policies (RoboTwin 2.0)
@article{tarzanagh2026aspl,
title={Active-Set Projection Layers for Hard-Constrained Neural Networks},
author={Ataee Tarzanagh, Davoud and Didari, Sima and Moon, Hankyu and Kwon, Yeongdae},
journal={arXiv preprint},
year={2026}
}