Open Source Robotics

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

Direct Collocation

  • Detto anche: collocation, direct transcription
  • Categoria: Planning & manipulation › Trajectory optimisation
  • Tag: trajectory-optimization, optimal-control, nonlinear-programming, motion-planning, dynamics

Un metodo di ottimizzazione di traiettoria che tratta stati e controlli in istanti campionati come variabili e impone la dinamica come vincoli tra campioni vicini.

Definizione

Collocazione diretta (direct collocation) è un modo per trasformare un problema di controllo ottimo, trovare gli ingressi di controllo nel tempo che portano un sistema dall'inizio all'obiettivo al minimo costo, in un programma non lineare finito che un solver standard può gestire. La traiettoria viene suddivisa in un certo numero di istanti, chiamati nodi (knot points). Sia lo stato sia l'ingresso di controllo in ogni nodo diventano variabili decisionali, e la dinamica del sistema è imposta come vincoli di uguaglianza, chiamati vincoli di difetto (defect constraints), che richiedono che stati vicini siano coerenti con una regola di integrazione come la regola dei trapezi o quella di Hermite–Simpson. I metodi pseudospettrali sono una famiglia affine che usa polinomi di ordine più alto sull'intera traiettoria.

Questo differisce dai metodi di shooting, in cui solo i controlli sono variabili decisionali e gli stati si ottengono simulando la dinamica in avanti. La collocazione produce un problema più grande ma molto sparso, risolto con solver di programmazione non lineare sparsa come IPOPT o SNOPT. I suoi vantaggi sono che i limiti sugli stati, come le escursioni dei giunti, la distanza dagli ostacoli o le condizioni di contatto, sono facili da imporre direttamente; che il solver può partire da una stima non fisicamente coerente, come una linea retta che attraversa gli ostacoli; e che tende a comportarsi meglio del single shooting su orizzonti lunghi e sistemi instabili.

Una conseguenza di questa struttura è che le iterazioni intermedie non devono necessariamente rispettare la dinamica: il solver è libero di violare i vincoli di difetto all'inizio e li soddisfa solo a convergenza. Le formulazioni che spostano i vincoli di dinamica o di collisione in termini di penalità lo rendono esplicito, lasciando che la soluzione attraversi regioni non ammissibili prima che la penalità la riporti indietro. Questa idea è stata ripresa nel robot learning, per esempio lasciando prima che un robot simulato attraversi gli ostacoli con una penalità e imponendo poi collisioni rigide. Come la maggior parte dell'ottimizzazione di traiettoria, la collocazione diretta trova ottimi locali, quindi il risultato dipende dalla stima iniziale.

Perché è importante

La collocazione diretta è uno dei principali cavalli di battaglia dell'ottimizzazione di traiettoria per robot con zampe, droni e manipolatori, perché gestisce bene i vincoli e parte facilmente da stime approssimative. Capirla spiega anche un'idea progettuale utile nel robot learning: rilassare prima la fisica e imporla gradualmente.

Applicazioni principali

  • Ottimizzazione di traiettoria per salti, capriole e andature di robot con zampe
  • Traiettorie a tempo minimo e a energia minima per manipolatori e droni
  • Pianificazione di traiettorie di ricerca e copertura per robot mobili
  • Generazione di movimenti di riferimento per policy apprese e controllori di inseguimento
  • Progettazione di traiettorie di veicoli spaziali e aeromobili

In pratica

Un ingegnere che pianifica un salto per un robot con zampe in Drake o CasADi imposta un problema con, per esempio, un numero fisso di nodi lungo il salto, ciascuno con lo stato del robot e le coppie ai giunti. I vincoli di difetto legano i nodi consecutivi tramite la dinamica del robot, vincoli aggiuntivi mantengono le coppie entro i limiti dei motori e i piedi a terra durante l'appoggio, e il costo penalizza lo sforzo e l'errore finale. Inizializza con una semplice interpolazione tra le pose di partenza e di atterraggio, che viola la dinamica, e lascia che IPOPT trovi una traiettoria coerente. Se il solver fallisce, aggiunge nodi, scala le variabili o migliora la stima iniziale. La traiettoria risultante viene poi inseguita da un controllore in retroazione o usata come riferimento per una policy appresa.

Idee sbagliate comuni

  • Ogni iterazione del solver è una traiettoria fisicamente valida — la dinamica è soddisfatta solo a convergenza; le soluzioni intermedie possono violarla
  • La collocazione diretta trova la traiettoria migliore in assoluto — risolve localmente un problema non convesso, quindi stime iniziali diverse possono dare risposte diverse
  • Collocazione e shooting risolvono problemi diversi — sono due trascrizioni dello stesso problema di controllo ottimo, con un comportamento numerico diverso

Chi dovrebbe saperlo

  • Ingegneri di ottimizzazione di traiettoria e pianificazione del movimento
  • Sviluppatori di controllo per robot con zampe e droni
  • Ricercatori di robot learning che usano movimenti di riferimento ottimizzati
  • Studenti di robotica che studiano il controllo ottimo

Tecnologie correlate

  • Drake
  • CasADi
  • IPOPT
  • SNOPT
  • Shooting multiplo (Multiple Shooting)
  • Metodi pseudospettrali (Pseudospectral Methods)

Termini correlati

  • Trajectory Planning
  • Model Predictive Control
  • Differential Flatness
  • Motion Planning
  • Curriculum Learning
  • Ergodic Coverage

Progetti correlati

  • Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
  • OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
  • MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
  • Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines

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