annuncio

Comprimi
Ancora nessun annuncio.

Pid tuning usando le regole di Ziegler-Nichols

Comprimi
X
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • Pid tuning usando le regole di Ziegler-Nichols

    Volevo condividere con voi qualche esperimento fatto in questi giorni. Se qualcuno ha fatto esperienze simili può confermare o correggere quello che scrivo.

    Ho provato a settare i parametri pid del mio quadricottero con crius se multiwii 2.2 utilizzando il metodo di Ziegler-Nichols
    (io ho trovato le informazioni su questi siti: Ziegler-Nichols Tuning Rules for PID

    Controllori PID - Wikipedia ).


    Praticamente vi riassumo le operazioni base:

    Premessa. Io utilizzo gyro lpf 42hz e media mobile con parametri MMGYRO 6 MMGYROVECTORLENGTH 9.
    Questi valori influiscono in maniera notevole sul pid, quindi vanno settati prima di fare il tuning.

    1. Azzerare I e D.

    2. Alzare P del pitch fino al valore che innesca le oscillazioni.
    Chiamiamo questo valore Ku

    3. Misurare il tempo in secondi di una oscillazione (il valore sarà espresso in decimi o centesimi di secondo: es. 0,18 sec)
    (consiglio: per misurare il tempo ho filmato il volo a 50 fps e ho rivisto il video, contato i fotogrammi e poi ho calcolato il numero di oscillazioni al secondo)
    Chiamiamo questo valore Tu

    4. Ora applichiamo la seguente tabella per calcolare P I e D sulla base di Ku e Tu.



    Esempio:
    Se il quad oscilla con P 10
    e le oscillazioni sono 5,5 al secondo (1 oscillazione in 0.18 sec)
    Ku = 10
    Tu = 0.18

    Settare P (Kp)
    Ku * 0.6 = 6

    Settare I (Ti)
    Tu * 0.5 = 0.090

    Settare D (Td)
    Tu * 0.125 = 0.022

    CORREGGETEMI SE SBAGLIO: Credo che in multiwii il parametro D sia moltiplicato per 1000 e quindi nell'esempio il valore sarebbe 22.

    5. Ripetere l'operazione per il pid del roll.

    ATTENZIONE: ho distinto i settaggi di pitch e roll perchè io uso un quad spider con il peso della telecamera e batteria che gravano sull'asse del pitch. Se il quad è simmetrico i valori di pitch e roll teoricamente sono identici.

    CONCLUSIONI:
    Il mio obiettivo era cercare un metodo "matematico" per non impostare valori a casaccio ed evitare pericolose prove al banco.
    Io ho trovato ottimo il metodo per settare P e I, un po' meno per D. In particolare per I il valore ottimale elimina il drift rendendo molto più stabile il quadricottero.


    Per capire come si comportano i parametri pid è stato molto utile l'ultilizzo di questo simulatore: PID Loop Simulator
    File allegati
    Ultima modifica di socrate78; 21 maggio 13, 18:42.

  • #2
    Multiwii e pid

    Mi appello agli esperti di codice e di matematica per capire una cosa:

    In Multiwii i parametri di roll pitch e yaw della gui come vengono inseriti nel codice?
    In che file del codice viene calcolato il pid?

    Sono i valori dei gain (Kp, Ki, Kd) o sono valori di tempo?

    In particolare non mi quadra il parametro D che nello sticky sul pid tuning viene descritto come "positivo" nella gui e "negativo" nel codice.

    Grazie

    Cesare

    Commenta


    • #3
      ciao a tutti,

      scusate se riuppo questo thread, ma mi piacerebbe riprendere in mano il discorso, dato che sto finendo la costruzione del mio primo quadricottero e ho non pochi problemi a capire il settaggio corretto dei parametri (mentre ho meno problemi con il codice).

      socrate78 per caso sei poi andato avanti?

      Michele

      Commenta


      • #4
        Sarebbe molto interessante.. Si dovrebbe beccare a colpo sicuro il settaggio ottimale in questo modo..
        L' importante è divertirsi 😎🎮✈️

        Commenta


        • #5
          Qualcuno ha applicato con successo questo metodo per la taratura "matematica" dei PID dei controller per gimbal, tipo Alexmos / Basecam ?

          Multirotore: DJI F550 E300; Naza-M v2 GPS; Taranis; GoPro HERO3+ Black; Zenmuse H3-3D; Boscam TS832+5802
          NLE Workstation: Dell Precision T7610 - NVIDIA Quadro K4000
          Lifestyle: Good judgment comes from experience and a lot of that comes from bad judgment.

          Commenta


          • #6
            Ma una guida un pò più semplice su questi benedetti pid tipo per eliminare questo o quel difetto non esiste proprio? Bisogna essere laureati in matematica per far volare bene una multiwii?
            Tanta voglia di volare...

            Commenta


            • #7
              Originariamente inviato da elbandolerostanco Visualizza il messaggio
              Ma una guida un pò più semplice su questi benedetti pid tipo per eliminare questo o quel difetto non esiste proprio? Bisogna essere laureati in matematica per far volare bene una multiwii?
              Il metodo OPTune applicabile alla piattaforma OpenPilot è derivato dallo Ziegler-Nichols, ma elimina la complicazione di stabilire la frequenza delle oscillazioni, semplicemente adottando dei coefficienti per I e D che li relazionano col Kp.
              Invece di essere prettamente matematico, è stato (è ancora) perfezionato con la sperimentazione sul campo.
              Rispetto allo ZN, OPTune non richiede l'esame dei filmati o del tracciato sonoro e consente di arrivare ai PID corretti in pochi minuti.
              Il risultato finale sarà pronto presumibilmente tra un paio di settimane e differenzierà i risultati a seconda della tipologia di ESC (PWM no brake o oneshot125+brake).

              Lo riporto non per pubblicizzare openpilot, ma per esortare chi, esperto nel campo di clean/baseflight, volesse replicare il metodo per la piattaforma multiwii e mwii32.

              Commenta


              • #8
                Speriamo bene...
                Tanta voglia di volare...

                Commenta


                • #9
                  Originariamente inviato da liftbag Visualizza il messaggio
                  Il metodo OPTune applicabile alla piattaforma OpenPilot è derivato dallo Ziegler-Nichols, ma elimina la complicazione di stabilire la frequenza delle oscillazioni, semplicemente adottando dei coefficienti per I e D che li relazionano col Kp.
                  Invece di essere prettamente matematico, è stato (è ancora) perfezionato con la sperimentazione sul campo.
                  Rispetto allo ZN, OPTune non richiede l'esame dei filmati o del tracciato sonoro e consente di arrivare ai PID corretti in pochi minuti.
                  Il risultato finale sarà pronto presumibilmente tra un paio di settimane e differenzierà i risultati a seconda della tipologia di ESC (PWM no brake o oneshot125+brake).

                  Lo riporto non per pubblicizzare openpilot, ma per esortare chi, esperto nel campo di clean/baseflight, volesse replicare il metodo per la piattaforma multiwii e mwii32.
                  Ciao a tutti,
                  premetto che sto cercando di capire meglio come funziona la taratura del PID e quindi potrò sicuramente andare incontro ad errori clamorosi (togliamo il potrò!).

                  Detto questo ho una Ardupilot e sto facendo dei test provato le seguenti tarature dei PID:
                  - Autotune da cui ottengo dei valori di riferimento;
                  - Taratura manuale azzerando I e D e regolando a mano il valore P, finchè non ottengo un'oscillazione costante e ricavo i valori Kp e Tu guardando il video come da thread.
                  - Taratura manuale azzerando I e D e regolando a mano il valore P, finchè non ottengo un'oscillazione costante e poi do tutto in pasto ad OPTune.

                  In particolare per la seconda taratura ho filmato il quad con GoPro a 1080p e 50 FPS.

                  Seguendo lo schema sopra questi sono i risultati:

                  - APM Autotune:

                  Roll : P - 0,0550; I - 0,0550; D - 0,0020
                  Pitch : P - 0,0650; I - 0,0650; D - 0,0030

                  - Taratura manuale applicando passo passo il thread:

                  Per il Roll ottengo un'oscillazione costante con valore P : 0,0900
                  Per il Pitch P : 0,0950
                  Misurando il tempo di un paio di oscillazioni guardando frame per frame ottengo circa un'oscillazione ogni 0,44 secondi ed a questo punto applico le formule con i seguenti risultati:

                  Roll: P - 0,0540; I - 0,22; D - 0,0550
                  Pitch: P - 0,0570; I - 0,22; D - 0,0550

                  - Taratura tramite OPTune prendo sempre i valori con oscillazione costante (Roll P : 0,09 e Pitch P : 0,0950):

                  Roll : P - 0.03150; I - 0.05040; D - 0.000252
                  Pitch : P - 0.03150; I - 0.05040; D - 0.000252

                  Ora dai tre sistemi ottengo dei risultati veramente tanto diversi, e mi assalgono diversi dubbi:

                  - Calcoli corretti nel secondo caso? Ho Integrale e derivativo veramente esagerati... Non è che sono necessari altri calcoli intermedi per poter inserire i valori sull'interfaccia?
                  Non sono sicuro e non trovo da nessuna parte se i valori nell'interfaccia sono realmente i Kp, Ki e Kd di cui parliamo...
                  - Anche su OPTune i dubbi possono essere i medesimi... Ho un integrale più alto del proporzionale e un derivativo talmente piccolo da non poterlo mettere sull'intefaccia di Ardupilot...

                  Qualche buon anima può aiutarmi a capire dove sto sbagliando?
                  Grazie

                  Commenta


                  • #10
                    Originariamente inviato da il_coje Visualizza il messaggio
                    Ciao a tutti,
                    premetto che sto cercando di capire meglio come funziona la taratura del PID e quindi potrò sicuramente andare incontro ad errori clamorosi (togliamo il potrò!).

                    Detto questo ho una Ardupilot e sto facendo dei test provato le seguenti tarature dei PID:
                    - Autotune da cui ottengo dei valori di riferimento;
                    - Taratura manuale azzerando I e D e regolando a mano il valore P, finchè non ottengo un'oscillazione costante e ricavo i valori Kp e Tu guardando il video come da thread.
                    - Taratura manuale azzerando I e D e regolando a mano il valore P, finchè non ottengo un'oscillazione costante e poi do tutto in pasto ad OPTune.

                    In particolare per la seconda taratura ho filmato il quad con GoPro a 1080p e 50 FPS.

                    Seguendo lo schema sopra questi sono i risultati:

                    - APM Autotune:

                    Roll : P - 0,0550; I - 0,0550; D - 0,0020
                    Pitch : P - 0,0650; I - 0,0650; D - 0,0030

                    - Taratura manuale applicando passo passo il thread:

                    Per il Roll ottengo un'oscillazione costante con valore P : 0,0900
                    Per il Pitch P : 0,0950
                    Misurando il tempo di un paio di oscillazioni guardando frame per frame ottengo circa un'oscillazione ogni 0,44 secondi ed a questo punto applico le formule con i seguenti risultati:

                    Roll: P - 0,0540; I - 0,22; D - 0,0550
                    Pitch: P - 0,0570; I - 0,22; D - 0,0550

                    - Taratura tramite OPTune prendo sempre i valori con oscillazione costante (Roll P : 0,09 e Pitch P : 0,0950):

                    Roll : P - 0.03150; I - 0.05040; D - 0.000252
                    Pitch : P - 0.03150; I - 0.05040; D - 0.000252

                    Ora dai tre sistemi ottengo dei risultati veramente tanto diversi, e mi assalgono diversi dubbi:

                    - Calcoli corretti nel secondo caso? Ho Integrale e derivativo veramente esagerati... Non è che sono necessari altri calcoli intermedi per poter inserire i valori sull'interfaccia?
                    Non sono sicuro e non trovo da nessuna parte se i valori nell'interfaccia sono realmente i Kp, Ki e Kd di cui parliamo...
                    - Anche su OPTune i dubbi possono essere i medesimi... Ho un integrale più alto del proporzionale e un derivativo talmente piccolo da non poterlo mettere sull'intefaccia di Ardupilot...

                    Qualche buon anima può aiutarmi a capire dove sto sbagliando?
                    Grazie
                    Non puoi usare OPTune su APM, né su multiwii, né su nessun'altra piattaforma di volo perché ognuna ha le sue specifiche relazioni tra i parametri PID.

                    Quello che volevo dire con il post che hai quotato, è che il metodo OPTune è ormai maturo e funziona. Ci vorrebbe qualcuno che trovasse le corrette relazioni per modificarlo in modo da essere applicabile ad altre piattaforme di volo.
                    Ma per farlo, occorre essere esperti nel tuning manuale, la base di partenza per trovare la relazione tra lo UOV ed un corretto valore di Proportional.

                    Commenta


                    • #11
                      Originariamente inviato da liftbag Visualizza il messaggio
                      Non puoi usare OPTune su APM, né su multiwii, né su nessun'altra piattaforma di volo perché ognuna ha le sue specifiche relazioni tra i parametri PID.

                      Quello che volevo dire con il post che hai quotato, è che il metodo OPTune è ormai maturo e funziona. Ci vorrebbe qualcuno che trovasse le corrette relazioni per modificarlo in modo da essere applicabile ad altre piattaforme di volo.
                      Ma per farlo, occorre essere esperti nel tuning manuale, la base di partenza per trovare la relazione tra lo UOV ed un corretto valore di Proportional.
                      Perfetto adesso ho capito, grazie mille per la risposta!
                      Mi ha dato conferma sul dubbio che avevo compatibilità APM-OPTune.
                      Mi rimane da capire cosa sono effettivamente i valori rappresentati nell'interfaccia dell'APM se moltiplicatori o valori effettivi Kp, ecc... Continuerò a cercare!

                      Commenta

                      Sto operando...
                      X