Robot control improved with faster always-feasible quadratic programming solver

ElastiQP: An Always-Feasible QP Solver for Constrained Robot Control

Robotics

Summary

Robots need to solve math problems called quadratic programs (QPs) to decide their movements safely. When too many rules or constraints conflict, usual solvers say they can't find a solution, leaving robots stuck without an action. The authors created ElastiQP, a solver that relaxes conflicting rules slightly rather than failing, always producing a usable solution quickly. This approach keeps essential rules strict while allowing minor, controlled violations where conflicts happen, enabling faster and more reliable robot control.

What this means in practice

  • For robotic control engineers: Use ElastiQP to ensure robot controllers always run by delivering feasible motion commands even when some constraints conflict.
  • For autonomous vehicle developers: Implement ElastiQP to improve real-time decision-making by managing conflicting safety and operational constraints gracefully in driving systems.

Authors

Daniel Morton, Jon Arrizabalaga, Zachary Manchester, Marco Pavone

Abstract

As robot capabilities increase, quadratic programming (QP)-based controllers must account for a similarly increasing number of constraints to ensure safe, reliable operation. Yet, with each added constraint, this introduces more chances of momentary conflict: in which case, a QP solver that returns an "infeasible" status leaves the controller with nothing to execute. To address this, we introduce ElastiQP, a modified dual active-set QP solver that relaxes every inequality constraint with an exact, per-constraint l1 penalty while keeping equality constraints (dynamics) hard. Notably, ElastiQP does so by folding the slack variables into the solver analytically, maintaining a constant size of the condensed linear system. On a suite of robot control benchmarks, ElastiQP achieves microsecond-level performance, matching or outperforming leading modern solvers on feasible problems. On infeasible problems, ElastiQP handles these gracefully, confining violations to strictly the conflicting inequality terms, returning a usable solution up to 40x faster than the best alternative solvers. ElastiQP is available as an open-source C++ header-only library, with Python and JAX interfaces, at https://github.com/StanfordASL/elastiqp.