Come posso regolare automaticamente i parametri PID al volo?


15

Ho un semplice servosistema che utilizza un controller PID implementato in una MCU per eseguire il feedback. Tuttavia, le proprietà del sistema cambiano in modo dinamico e quindi i parametri PID non possono mai essere regolati per tutte le circostanze.

Il mio robot è un braccio leggero con motori elettrici a guida posteriore, simile a questo:

Braccio robot leggero

Il braccio svolge diverse attività, tra cui la raccolta di pesi pesanti, la spinta e il tiro di oggetti attraverso la scrivania. Ognuna di queste attività richiede parametri di ottimizzazione PID diversi che non riesco a prevedere facilmente.

Quello che mi piacerebbe davvero è per alcune funzioni di livello superiore che possono regolare attentamente i parametri in risposta al comportamento del braccio. Ad esempio, se nota che il braccio oscilla, potrebbe ridurre P e aumentare D. O se notasse che il braccio non stava raggiungendo il suo obiettivo, potrebbe aumentare I.

Esistono tali algoritmi? Sarei felice anche se l'algoritmo non perfezionasse immediatamente i parametri. Ad esempio, il braccio potrebbe oscillare alcune volte prima che i parametri fossero adeguati ai loro nuovi valori.

Risposte:


10

Un collega e io abbiamo implementato una volta un algoritmo simplex per l'ottimizzazione al volo dei parametri PID di un circuito di controllo corrente per un motore. In sostanza l'algoritmo modificava un parametro alla volta e quindi raccoglieva dati su alcuni parametri di feedback che erano la nostra misura di bontà. La nostra era la deviazione percentuale da un setpoint target attuale. In base al miglioramento o al peggioramento del parametro di feedback, il parametro successivo è stato modificato di conseguenza.

Oppure, in Wikipedia parla:

Lascia che un programma lineare sia dato da un tableau canonico. L'algoritmo simplex procede eseguendo successive operazioni pivot che forniscono ciascuna una soluzione fattibile di base migliorata; la scelta dell'elemento pivot in ogni fase è in gran parte determinata dal requisito che questo pivot migliora la soluzione.

Tecnicamente abbiamo usato il metodo Nelder-Mead che è un tipo di simplex. Potrebbe anche essere descritto come un algoritmo di arrampicata in salita se si osserva come modifica i suoi parametri di input mentre cerca un parametro di output ottimale.

Animazione Nelder-Mead

Nedler-Mead ha funzionato meglio nel nostro caso perché può inseguire un setpoint. Ciò è stato importante perché il nostro setpoint target attuale è cambiato all'aumentare della domanda di coppia.

la tecnica Nelder-Mead è un metodo di ricerca euristica che può convergere in punti non stazionari


potresti collegare il tuo approccio e i risultati se sono disponibili?
SPRajagopal,

@SPRajagopal Siamo spiacenti ma no. Non lavoro più per quella società e non ho accesso a nessuno dei dati.
embedded.kyle

4

Un buon approccio per tale problema si chiama controllo adattativo. In breve, è una metodologia di controllo che presume che il modello sia noto ma i parametri del modello (massa, inerzia, ecc.) Non lo sono. Il suo compito è stimare i parametri sconosciuti. Una breve introduzione è disponibile su Wikipedia . Il testo Robotica: modellistica, pianificazione e controllo di Siciliano et al. coprire l'argomento in modo più approfondito.

Modifica in risposta alla query @Rocketmagnets:

In breve, è necessario disporre di un modello matematico del sistema, ovvero le equazioni che descrivono come il sistema si evolve nel tempo quando è forzato o meno, ma non è necessario conoscere parametri dinamici come la massa dei vari componenti, la loro inerzia, ecc. .. È compito del controllore adattivo stimare questi parametri. Tuttavia, è necessario fornire un'ipotesi iniziale per ciascuno dei parametri sconosciuti. Quindi, mentre il sistema funziona, utilizza i segnali di controllo, i segnali di uscita e un metodo come la regressione lineare o la discesa del gradiente per aggiornare i valori dei parametri sconosciuti. Nel tempo i parametri convergeranno in valori che si tradurranno in uno stato stazionario anche se potrebbero non corrispondere ai parametri reali, vale a dire che la massa potrebbe essere errata, ma il valore continuerà a funzionare.

Da qui consiglierei di fare riferimento a un testo che discute il metodo. Ho appena notato, ad esempio, che il Dr. Marc Bodson offre una copia del suo testo Controllo adattivo: stabilità, robustezza e convergenza in formato PDF sul suo sito Web .


Puoi dare una spiegazione del metodo?
Rocketmagnet,

1
Dubito di poterlo rendere giustizia, dato che ho appreso solo recentemente il metodo. Inoltre, non è un singolo metodo, ma una raccolta di tecniche che sono state sviluppate negli ultimi 50 anni circa. Comunque modificherò la mia risposta per elaborare un po 'di più.
DaemonMaker,

2

Il processo che stai descrivendo è noto come PID adattativo.

Sembra un po 'eccessivo però. Ho riscontrato che il PID è abbastanza solido quando si tratta di disturbi esterni e le attività descritte non sembrano al di là delle capacità di un singolo insieme di guadagni.


Questi sono più che semplici disturbi esterni. Questi sono cambiamenti nelle caratteristiche dell'articolazione. Il raddoppio della massa del robot, ad esempio, porta al superamento.
Rocketmagnet,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.