ProxSuite
Solver QP/LP de alto rendimiento para control y optimización robóticos
Licencia
BSD-2-Clause
Resumen
ProxSuite es una caja de herramientas de optimización avanzada de los equipos Willow y Sierra de Inria, ENS Paris y CNRS (Willow también codesarrolla Pinocchio) que ofrece solucionadores eficientes para problemas de programación cuadrática (QP) y programación lineal (LP) en robótica. Su solucionador principal, ProxQP, utiliza un novedoso enfoque de Lagrangiano aumentado proximal primal-dual y ofrece un rendimiento de vanguardia en control predictivo por modelo (MPC), control de cuerpo completo y optimización de trayectorias. Admite formulaciones de problemas densas, dispersas y mixtas, con interfaces en C++ y Python.
ProxSuite es una colección de código abierto de solvers de optimización numérica desarrollada por los grupos de investigación Willow y Sierra de Inria y la Ecole Normale Superieure de París. Su componente principal, ProxQP, resuelve programas cuadráticos mediante un método de Lagrangiano aumentado proximal primal-dual que logra a la vez alta velocidad y robustez numérica, incluso en problemas mal condicionados o infactibles.
La caja de herramientas ofrece backends de solver densos, dispersos y sin matrices (matrix-free), lo que permite adaptar el solver a la estructura del problema. Entre sus funciones avanzadas se incluyen soporte de vectorización SIMD, arranque en caliente a partir de soluciones previas, resolución de QP por lotes en paralelo, tratamiento de QP no convexos y la posibilidad de diferenciar a través de las soluciones de QP para aplicaciones basadas en aprendizaje.
ProxSuite ya está integrado en los principales ecosistemas de optimización, como CVXPY, CasADi y el framework de dinámica inversa robótica TSID, construido sobre Pinocchio. Se distribuye mediante pip, conda y Homebrew, con bindings para Python y Julia junto a la biblioteca principal en C++.
Por qué importa
La programación cuadrática está en el corazón del control de robots: desde controladores de cuerpo completo y control predictivo basado en modelo hasta dinámica inversa con contactos. El solver ProxQP de ProxSuite ofrece un rendimiento de vanguardia en los benchmarks de QP más exigentes y gestiona problemas tanto convexos como no convexos, lo que lo convierte en una pieza fundamental para la optimización robótica en tiempo real.
Qué problema resuelve
Los controladores de robots en tiempo real necesitan resolver programas cuadráticos a alta frecuencia con estabilidad numérica garantizada, incluso en problemas mal condicionados o infactibles. ProxSuite proporciona solvers que son a la vez rápidos, numéricamente robustos y lo bastante flexibles para manejar formulaciones de problemas densas, dispersas y sin matrices, y que devuelven resultados útiles incluso cuando un QP es primal infactible.
Puntos clave
- El solver ProxQP utiliza un enfoque de Lagrangiano aumentado proximal primal-dual para resolver QP de forma robusta
- Admite backends densos, dispersos y sin matrices con vectorización SIMD para obtener el máximo rendimiento
- Gestiona QP no convexos y devuelve las soluciones factibles más cercanas para problemas infactibles
- Integrado en CVXPY, CasADi y el framework de dinámica inversa en el espacio de tareas TSID
- Disponible mediante pip, conda y Homebrew, con bindings para Python y Julia
Para quién es
- Ingenieros de control robótico que implementan MPC o controladores de cuerpo completo
- Investigadores en optimización que comparan el rendimiento de solvers QP
- Desarrolladores de robots con patas que necesitan control en tiempo real consciente del contacto
- Profesionales de investigación operativa que resuelven QP y LP a gran escala
Limitaciones
- Centrado en problemas QP y LP: no es un solver general de programación no lineal
- El máximo rendimiento requiere compilar con flags de vectorización (-march=native)
- Proyecto relativamente joven en comparación con solvers consolidados como OSQP o qpOASES
- Las funciones avanzadas, como la resolución por lotes y la diferenciación de QP, tienen una curva de aprendizaje más pronunciada