Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

OpEn (Optimization Engine)

Solutore embedded di ottimizzazione non convessa in Rust per MPC in tempo reale sui robot

Licenza

MIT, Apache 2.0

Panoramica

OpEn (Optimization Engine) è un framework per un'ottimizzazione non convessa veloce e sicura in memoria su sistemi embedded, costruito attorno all'algoritmo PANOC di tipo Newton con media prossimale, con metodi a Lagrangiana aumentata e di penalità per i vincoli. I problemi si descrivono in Python o MATLAB con la simbolica di CasADi; OpEn genera un solutore Rust senza dipendenze per il target (il computer di bordo di un robot, una scheda di classe MCU o un nodo ROS), consentendo il controllo predittivo basato su modello (MPC) in tempo reale e l'ottimizzazione di traiettorie senza collisioni.

Il flusso di lavoro è la generazione di codice: si definiscono le variabili decisionali, un costo (eventualmente non convesso) e i vincoli in opengen, il front-end Python/MATLAB di OpEn; questo produce un crate Rust autonomo che implementa PANOC, un metodo con ricerca lineare che combina gradienti prossimali e direzioni L-BFGS e converge rapidamente senza Hessiane, avvolto da cicli esterni ALM/di penalità per i vincoli generali. Il solutore generato non ha sorprese di allocazione sullo heap, nessuna libreria esterna e una memoria limitata in modo dimostrabile: esattamente ciò di cui ha bisogno il controllo embedded orientato alla certificazione. Le interfacce includono Rust diretto, binding C/C++, una modalità server TCP, binding Python e un generatore di pacchetti ROS. Gli usi tipici in robotica sono il controllo predittivo basato su modello (MPC) non lineare a centinaia di hertz per l'evitamento degli ostacoli (i suoi esempi di navigazione sono diventati un riferimento per l'MPC senza collisioni di AGV e droni), l'ottimizzazione della traiettoria e la stima a orizzonte mobile su piattaforme con risorse limitate. OpEn è sviluppato in ambito accademico (Sopasakis et al., articolo IFAC 2020) e ha doppia licenza MIT/Apache-2.0.

Perché è importante

OpEn ha reso praticabile l'MPC non convesso in tempo reale sui piccoli robot: un solutore con le garanzie di memoria di Rust, senza dipendenze e con memoria limitata, che gira su schede embedded. È il componente che serve quando un robot deve risolvere di nuovo a bordo un problema di evitamento degli ostacoli ogni pochi millisecondi.

Il problema che risolve

I solutori NLP generici (della classe di IPOPT) sono troppo lenti e pesanti per l'MPC di bordo ad alta frequenza, e i solutori scritti a mano sono soggetti a errori. OpEn genera un solutore veloce, senza dipendenze e sicuro in memoria per il proprio problema specifico a partire da poche righe di CasADi.

Punti chiave

  • Algoritmo PANOC: gradiente prossimale + L-BFGS per risolvere rapidamente problemi non convessi senza Hessiane
  • Genera solutori Rust autonomi, senza dipendenze e con memoria limitata
  • Front-end Python (opengen) e MATLAB con la simbolica di CasADi
  • Uso diretto da Rust/C/C++, modalità server TCP e generazione di pacchetti ROS
  • Scelta di riferimento per l'MPC embedded senza collisioni su AGV e droni; doppia licenza MIT/Apache-2.0

A chi si rivolge

  • Ingegneri del controllo che mettono in campo MPC di bordo
  • Ricercatori di robotica nell'ottimizzazione della traiettoria
  • Sviluppatori embedded che hanno bisogno di solutori adatti alla certificazione
  • Team di autonomia per AGV e droni

Limiti

  • PANOC, basato sul primo ordine, può restare indietro rispetto ai metodi a punto interno su problemi mal condizionati
  • La non convessità comporta soluzioni locali (non globali): l'inizializzazione conta
  • La gestione dei vincoli tramite ALM/penalità richiede di regolare le tolleranze per i vincoli di uguaglianza rigidi

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.