qpOASES is an open-source C++ library for solving Quadratic Programming (QP) problems, designed for embedded applications with millisecond-scale execution times. Created by Hans Joachim Ferreau and prof. Moritz Diehl in the OPTEC group at KU Leuven and KIT (Karlsruhe Institute of Technology), currently hosted by the COIN-OR foundation and maintained by the academic community.
The main advantage of qpOASES is its implementation of the online active-set strategy: after the first QP solution, the solver maintains an active-constraints basis and on the next call (with slightly changed parameters) performs only a small number of pivot steps. This makes qpOASES an ideal solver for MPC (Model Predictive Control), where the same structural QP problem is solved in a loop at 100 Hz - 1 kHz.
The library is free and open-source under LGPL 2.1, written in pure C++ with minimal dependencies (only BLAS/LAPACK). Multi-language support: C, Python (qpoases-python), MATLAB/Simulink, Octave, dSPACE. qpOASES is part of the ACADO Toolkit (for nonlinear MPC) and CasADi (auto-differentiation optimization framework), where it is one of the preferred QP solvers.
In humanoid robotics and autonomous vehicles, qpOASES is one of the dominant solvers for Whole Body Control (WBC) — a control problem formulation that expresses the entire robot's body control as a QP with hierarchical tasks and physical constraints (contacts, torque limits, joint limits). Notable deployments: KIT ARMAR-6 and ARMAR-7, DLR Justin, IHMC Atlas, Boston Dynamics (early research projects), DARPA Robotics Challenge — most teams used qpOASES as their WBC solver.
Unlike more general solvers (CPLEX, Gurobi, OSQP), qpOASES specializes in small-scale problems (up to ~1000 decision variables) with dense matrices — the typical range for robot MPC. For larger sparse problems OSQP is a better choice. qpOASES has slow release cadence (~1-2 years between releases) but is a fundamental tool in embedded optimization and very mature code (TRL 9, stable API since 2014).