ProxSuite
Risolutore QP/LP ad alte prestazioni per il controllo e l'ottimizzazione in robotica
Licenza
BSD-2-Clause
Panoramica
ProxSuite è un toolbox di ottimizzazione avanzato dei team Willow e Sierra di Inria, ENS Paris e CNRS (Willow sviluppa anche Pinocchio, insieme ad altri) che fornisce risolutori efficienti per problemi di programmazione quadratica (QP) e programmazione lineare (LP) in robotica. Il suo risolutore principale, ProxQP, usa un nuovo approccio primale-duale a Lagrangiana aumentata prossimale e offre prestazioni allo stato dell'arte per il controllo predittivo basato su modello (MPC), il controllo del corpo intero e l'ottimizzazione della traiettoria. Supporta formulazioni dei problemi dense, sparse e miste, con interfacce C++ e Python.
ProxSuite è una raccolta open source di risolutori di ottimizzazione numerica sviluppata dai gruppi di ricerca Willow e Sierra di Inria e dell'Ecole Normale Superieure di Parigi. Il suo componente di punta, ProxQP, risolve programmi quadratici con un metodo primale-duale a Lagrangiana aumentata prossimale che raggiunge sia un'alta velocità sia una robustezza numerica, anche su problemi mal condizionati o non ammissibili.
Il toolbox fornisce backend di risoluzione densi, sparsi e matrix-free, permettendo di adattare il risolutore alla struttura del problema. Tra le funzionalità avanzate ci sono il supporto alla vettorizzazione SIMD, il warm start da soluzioni precedenti, la risoluzione parallela di QP in batch, la gestione di QP non convessi e la possibilità di differenziare attraverso le soluzioni dei QP per applicazioni basate sull'apprendimento.
ProxSuite è già integrato nei principali ecosistemi di ottimizzazione, tra cui CVXPY, CasADi e il framework di dinamica inversa robotica TSID, costruito su Pinocchio. È distribuito tramite pip, conda e Homebrew, con binding per Python e Julia accanto alla libreria C++ principale.
Perché è importante
La programmazione quadratica è al cuore del controllo dei robot: dai controller del corpo intero e dal controllo predittivo basato su modello (MPC) fino alla dinamica inversa con contatti. Il risolutore ProxQP di ProxSuite offre prestazioni allo stato dell'arte sui benchmark QP più difficili e gestisce problemi sia convessi sia non convessi, il che ne fa un componente fondamentale per l'ottimizzazione robotica in tempo reale.
Il problema che risolve
I controller dei robot in tempo reale devono risolvere programmi quadratici ad alta frequenza con una stabilità numerica garantita, anche per problemi mal condizionati o non ammissibili. ProxSuite fornisce risolutori che sono al tempo stesso veloci, numericamente robusti e abbastanza flessibili da gestire formulazioni dense, sparse e matrix-free, e che restituiscono risultati utili anche quando un QP è non ammissibile nel primale.
Punti chiave
- Il risolutore ProxQP usa un approccio primale-duale a Lagrangiana aumentata prossimale per una risoluzione robusta dei QP
- Supporta backend densi, sparsi e matrix-free con vettorizzazione SIMD per le massime prestazioni
- Gestisce QP non convessi e, per i problemi non ammissibili, restituisce le soluzioni ammissibili più vicine
- Integrato in CVXPY, CasADi e nel framework di dinamica inversa nello spazio dei compiti TSID
- Disponibile tramite pip, conda e Homebrew, con binding per Python e Julia
A chi si rivolge
- Ingegneri del controllo robotico che implementano controller MPC o del corpo intero
- Ricercatori di ottimizzazione che confrontano le prestazioni dei risolutori QP
- Sviluppatori di robot con gambe che hanno bisogno di un controllo in tempo reale consapevole dei contatti
- Professionisti della ricerca operativa che risolvono QP e LP su larga scala
Limiti
- Incentrato sui problemi QP e LP: non è un risolutore generico di programmazione non lineare
- Le massime prestazioni richiedono la compilazione con flag di vettorizzazione (-march=native)
- Progetto relativamente giovane rispetto a risolutori affermati come OSQP o qpOASES
- Le funzionalità avanzate come la risoluzione in batch e la differenziazione dei QP hanno una curva di apprendimento più ripida