Domanda:
Cosa fa Feed Forward e come funziona?
Klystrom
2020-04-18 16:13:18 UTC
view on stackexchange narkive permalink

La regolazione PID prevede guadagni P, I e D per aiutare il quad a seguire i comandi RC.

Ogni volta che si verifica un errore, P "spinge" il quad per ridurre l'errore. Allora come entra in gioco Feed Forward?

Tre risposte:
FlashCactus
2020-04-18 18:07:08 UTC
view on stackexchange narkive permalink

Il modo in cui funziona il controller PID è che ogni volta che la velocità di rotazione effettiva del quadricottero non è uguale al setpoint o alla velocità di rotazione desiderata (che si imposta muovendo le levette), invia un segnale ai motori per compensare e portare la velocità più vicino al setpoint.

Questo segnale è una somma di quattro termini : P, I, D e FF. Poiché è una somma, puoi pensare a loro come se ciascuno spinga il quad in una certa direzione in modo indipendente, alcuni termini si sommano e altri si contrastano a vicenda.

Il termine P è la differenza tra il setpoint e la velocità effettiva , moltiplicato per il P guadagno . Quindi la quantità di forza applicata dal termine P è direttamente proporzionale a quella differenza. Puoi pensarlo come una molla che cerca di spostare indietro il quad ogni volta che viene sbattuto fuori posizione. Più viene spostato (maggiore differenza tra setpoint e velocità effettiva) e più rigida è la molla (maggiore guadagno P), più forte sarà.

Il motivo per cui è necessario il termine FF è perché il segnale che le uscite del controller PID influenzano l ' accelerazione , non direttamente la velocità. Ciò significa che il quad non si avvierà immediatamente, ma impiegherà un po 'di tempo a seconda della forza con cui si spinge. Quindi, quando vuoi iniziare bruscamente una manovra, vuoi che il quad applichi molta forza in quella direzione per andare avanti e poi sostenga la rotazione con una forza minore.

Il controller PID, tuttavia, ha lo scopo di stabilizzare. Non fa distinzione tra l'urto con il bastone e il fatto che il quad venga spinto fuori posizione da un ostacolo o da una raffica di vento. Quindi, quando muovi il bastone, esso si "stabilizza" alla nuova velocità come se non lo avessi mosso per niente e fosse stato urtato da qualcosa. Puoi pensare di muovere il bastone come se muovi l'altra estremità della molla a cui è attaccato il quad. Alla molla non importa quale estremità sia stata spostata, solo che la sua lunghezza è cambiata. Ciò significa che il controller PID non applicherà tanta forza per avviare la rotazione come potrebbe potenzialmente, il che significa che è un po 'lento da accelerare quando muovi la levetta e, cosa più importante, più lento a rallentare quando muovi il rimanere al centro (e può persino superare il limite).

Puoi rendere la reazione più veloce aumentando il guadagno P, ma fino a un certo punto, poiché guadagni P più alti portano a oscillazioni, quando i movimenti del quad portano a grandi Termini P che a loro volta provocano movimenti maggiori e così via.

Quindi è stato aggiunto il termine FF. Il termine FF non considera affatto la velocità di rotazione corrente, quindi non contribuisce all'azione stabilizzante del loop PID e non è quindi in grado di provocare oscillazioni. L'unica cosa che guarda sono i bastoncini. La forza applicata dal termine FF è proporzionale alla velocità con cui muovi la levetta (moltiplicata per il guadagno FF). Quindi, quando, ad esempio, inizi un rollio e sposti la levetta verso destra, il termine FF rileverà il movimento veloce della levetta e darà una scarica di forza per far partire il quad. Quindi, quando finisci il rotolo e riporti il ​​bastone al centro, il termine FF rileverà il movimento veloce opposto dello stick e applicherà una forza corrispondente, aiutando il controller PID a fermare la rotazione del quad più velocemente ed evitare il superamento.

Kenn Sebesta
2020-04-18 19:58:17 UTC
view on stackexchange narkive permalink

Vista di 30.000 piedi del feedforward come concetto generale

  • Feedforward : ti consegno una scatola chiusa e tu prevedi che sarà pesante, rinforzante te stesso in preparazione. Il tuo controllo della scatola è rapido e preciso.

  • Fallimento feedforward : ti do una scatola ed è molto più pesante di quanto ti aspettassi. Il tuo controllo della scatola è sciatto fino a quando non ricalibri e capisci quanto pesa.

  • Nessun feedforward : quando i tuoi occhi sono chiusi e tutti sai è che ti darò qualcosa. Potrebbe essere un palloncino di elio, potrebbe essere una lavastoviglie. Non sai se le tue braccia saranno sollevate o abbassate, quindi reagisci lentamente.

Feedforward nei droni

In nel caso di un drone in movimento, un termine feedforward ti consente di anticipare che avrai bisogno di un po ' controllo del rollio, anche se non sai ancora con precisione quanto . I controllori di volo così popolari ti consentono di aggiungere una certa quantità di feedforward per avere una risposta più rapida agli input.

Feedforward funziona molto bene in quantità appropriate. In un sistema come un drone, in cui è in continuo movimento e non c'è una reale stabilità a lungo termine e allo stato stazionario, il feedforward può davvero accelerare i tempi di risposta e migliorare la precisione. Il diavolo è nei dettagli, tuttavia, poiché ogni combinazione di cellula, motori, eliche e condizioni atmosferiche avrà un feedforward ottimale diverso.

Di conseguenza, ci sono una miriade di modi per implementare il feedforward, e quindi non ci sono consigli generici su come regolarlo correttamente. Un altro poster collegato a https://github.com/betaflight/betaflight/wiki/Feed-Forward-2.0, e lo considero una buona risorsa sulle patologie che possono essere sperimentate con Beta Flight. Altri FC avranno le loro patologie, dovrai sperimentare.


Background

Questa è alla radice una domanda sui controlli. Nel mondo dei controlli classici [*], il PID era il re. Si scopre che le cose semplici si rifiutano di morire e, con grande dispiacere dei ricercatori di controllo in tutto il mondo, il PID è ancora il re. Calcola che sia facile da capire e da regolare per molti sistemi, anche se non è molto buono.

Senza feedforward

Ecco un diagramma di un Roll PID senza feedforward .

Feedback example

  1. Hai un setpoint di rollio (cioè il roll desiderato)
  2. confronta il setpoint con il rollio misurato, ottenendo l'errore
  3. Moltiplichi l'errore per ottimizzare i valori (K_p, K_i e K_d) per generare una risposta di controllo
  4. Applichi quella risposta di controllo al sistema e guarda come reagisce il sistema
  5. GOTO (1)

Con feedforward

Feedforward ha tutte quelle parti, tranne che aggiunge un nuovo elemento, che è il controllo previsto basato sul rollio previsto. Di seguito è riportato un diagramma di un Roll PID con feedforward .

Feedforward example

Notare che esiste un nuovo percorso per il controllo, che è completamente indipendente dall'errore. Ecco perché si chiama feedforward . Questo percorso prende semplicemente in considerazione il risultato desiderato e applica ciecamente un input di controllo basato su questo.


[*] L'era dei controlli moderni è iniziata nel 1958 con la pubblicazione della rivoluzionaria teoria di Pontryagin sull'ottimizzazione seguita dal filtro di stima ormai onnipresente di R. Kalman. Per una cronologia completa, leggi http://www.uta.edu/utari/acs/history.htm.

Il termine derivativo in Betaflight è calcolato non dal segnale di errore nel diagramma sopra, ma dal giroscopio, o segnale di feedback. Il diagramma sopra non è corretto in questo senso. Il segnale di errore mostrato sopra include già la modifica del setpoint; nel diagramma sopra, e se Feed Forward fosse effettivamente implementato come sopra, la modifica del setpoint verrebbe applicata due volte. Quindi non lo facciamo in questo modo: nelle prime versioni di Betaflight, la derivata era calcolata dall'errore, ma ora viene calcolata esclusivamente dal segnale del giroscopio, o feedback.
Il diagramma non è correlato a Betaflight. È semplicemente una visione di alto livello di ciò che fa un FF generico. C'è una grande mole di lavoro che affronta i problemi derivanti dall'uso di un termine D, e da quello che dici sembra che le prime versioni di Betaflight si siano imbattute in quei classici problemi. Complimenti agli sviluppatori per aver trovato una soluzione più ottimizzata.
anonymous2
2020-04-18 17:22:29 UTC
view on stackexchange narkive permalink

Sono lontano dall'essere un esperto in questo argomento ... ma c'è un buon articolo qui su Github che trovo lo spieghi bene.

Fondamentalmente il feedforward è un fattore il che aumenta la reattività dello stick, un po 'come P, tranne per il fatto che FF non fa oscillare il drone ad alti livelli. Cito:

FeedForward (FF) è un fattore di guida che aumenta la reattività dello stick. È proporzionale alla derivata istantanea, o "velocità di variazione" del movimento del bastone. Più velocemente si muovono gli stick, più FeedForward otteniamo. FeedForward aiuta P a guidare il quad nelle curve. A differenza di P, FeedForward non può causare oscillazioni, indipendentemente dalla quantità di FF aggiunta.

Con FeedForward, otteniamo una migliore reattività dello stick senza spingere P così in alto da causare oscillazioni. Riduce anche il tempo di ritardo tra ingresso e risposta. Meno ritardo significa meno errori e meno I windup / overshoot. È ottimo per le corse, la LOS e il volo freestyle radicale. Non è eccezionale per l'HD cinematografico.


Spero che aiuti!



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...