ProxSuite
Solver QP/LP de alto desempenho para controle e otimização robóticos
Licença
BSD-2-Clause
Visão geral
O ProxSuite é uma caixa de ferramentas avançada de otimização das equipes Willow e Sierra do Inria, da ENS Paris e do CNRS (a Willow também codesenvolve o Pinocchio), que oferece solvers eficientes para problemas de programação quadrática (QP) e programação linear (LP) em robótica. Seu solver principal, o ProxQP, usa uma nova abordagem de lagrangiano aumentado proximal primal-dual, com desempenho de ponta para controle preditivo baseado em modelo (MPC), controle de corpo inteiro e otimização de trajetória. Suporta formulações de problemas densas, esparsas e mistas, com interfaces em C++ e Python.
ProxSuite é uma coleção de código aberto de solvers de otimização numérica desenvolvida pelos grupos de pesquisa Willow e Sierra do Inria e da Ecole Normale Superieure, em Paris. Seu componente principal, o ProxQP, resolve programas quadráticos usando um método de Lagrangiano aumentado proximal primal-dual que alcança alta velocidade e robustez numérica — mesmo em problemas mal condicionados ou inviáveis.
A caixa de ferramentas oferece backends de solver densos, esparsos e sem matriz (matrix-free), permitindo adequar o solver à estrutura do problema. Os recursos avançados incluem suporte a vetorização SIMD, warm-start a partir de soluções anteriores, resolução de QPs em lote em paralelo, tratamento de QPs não convexos e a capacidade de diferenciar através das soluções de QP para aplicações baseadas em aprendizado.
O ProxSuite já está integrado aos principais ecossistemas de otimização, incluindo CVXPY, CasADi e o framework de dinâmica inversa robótica TSID, construído sobre o Pinocchio. É distribuído via pip, conda e Homebrew, com bindings para Python e Julia além da biblioteca principal em C++.
Por que importa
A programação quadrática está no centro do controle de robôs — de controladores de corpo inteiro e controle preditivo baseado em modelo até dinâmica inversa com contatos. O solver ProxQP do ProxSuite oferece desempenho de ponta nos benchmarks de QP mais difíceis e trata problemas convexos e não convexos, sendo um componente essencial para a otimização robótica em tempo real.
Problema que resolve
Controladores de robôs em tempo real precisam resolver programas quadráticos em alta frequência com estabilidade numérica garantida, mesmo em problemas mal condicionados ou inviáveis. O ProxSuite fornece solvers que são, ao mesmo tempo, rápidos, numericamente robustos e flexíveis o suficiente para lidar com formulações de problemas densas, esparsas e sem matriz — retornando resultados úteis mesmo quando um QP é primal inviável.
Pontos principais
- O solver ProxQP usa uma abordagem de Lagrangiano aumentado proximal primal-dual para resolver QPs de forma robusta
- Suporta backends densos, esparsos e sem matriz com vetorização SIMD para desempenho máximo
- Trata QPs não convexos e retorna as soluções viáveis mais próximas para problemas inviáveis
- Integrado ao CVXPY, ao CasADi e ao framework de dinâmica inversa no espaço de tarefas TSID
- Disponível via pip, conda e Homebrew, com bindings para Python e Julia
Para quem é
- Engenheiros de controle robótico que implementam MPC ou controladores de corpo inteiro
- Pesquisadores de otimização que fazem benchmark de desempenho de solvers QP
- Desenvolvedores de robôs com pernas que precisam de controle em tempo real com reconhecimento de contato
- Profissionais de pesquisa operacional que resolvem QPs e LPs de grande escala
Limitações
- Focado em problemas de QP e LP — não é um solver geral de programação não linear
- O desempenho máximo exige compilação com flags de vetorização (-march=native)
- Projeto relativamente jovem em comparação com solvers consolidados como OSQP ou qpOASES
- Recursos avançados, como resolução em lote e diferenciação de QP, têm uma curva de aprendizado mais íngreme