annuncio

Comprimi
Ancora nessun annuncio.

La matrice di miscelazione dei multicosi

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

  • La matrice di miscelazione dei multicosi

    Apro questo post riportando quasi per intero un post scritto in un'altra discussione, perché ritengo l'argomento se non importantissimo, almeno utile.

    Si assiste al proliferare di multi rotori asimmetrici, ma i software di gestione del volo hanno poche varianti pre-impostate.
    La maggior parte degli utenti si accontenta di usare un mixer standard.
    Se da un lato questo vuol dire che si può tranquillamente volare anche così, alle volte si scopre che certi comportamenti non molto regolari possono essere risolti riscrivendo la tabella di miscelazione dei motori.

    Questa vorrebbe essere una discussione sui metodi di affrontare questa tematica, e magari un database sulle matrici per correggere i mixer dei nostri multi rotori.


    ----------------


    La toria della coppia, ovvero forza X braccio

    Sono entrato nel mondo dei multirotori non rtf con gli Squid di bandit. Recentemente ho preso un micro spider hex.

    Sono tutti mezzi asimmetrici, ed il mio primo approccio alla correzione della matrice di spinta è stato valutanto la spinta dei motori come fossero pesi all'estremità di una bilancia con fulcro al centro.
    La cosa aveva senso per me.
    In pratica ragionavo sul braccio di leva e correggevo la spinta in base all'operazione forza x braccio, col risultato che più il braccio è lungo, e minore deve essere la spinta.

    Devo dire che i micro non mi hanno mai dato problemi veri, ma lo Squid si.
    Cose strane interrompendo i comandi, soprattutto yaw.
    Quando ho montato i KISS sullo Squid i problemi sono quasi spariti, segno che comunque il flight controller ci prova a tenere gli assetti, ma deve essere servito da un sistema di motopropulsori a variazione veloce, sia in accelerazione che in frenata.

    Poi è arrivato l'esino, piuttosto asimmetrico, soprattutto, con i motori centrali arretrati rispetto al centro di gravità.
    Quindi ho posto un quesito sul forum openpilot, ed un francese mi ha aperto una prospettiva del tutto nuova (per me).


    La teoria delle velocità periferiche


    Anche lui come me, all'inizio ha ragionato sulla teoria della coppia riguardo la modifica della matrice, ma in seguito ha cambiato opinione (basandosi anche sul feedback dei piloti), seguendo una strada praticamente opposta.

    Se ci si sofferma a pensare, il sistema di equilibrio di un multirotore non può essere accomunato ad una altalena, in quanto il fulcro non è fisso.
    Il fulcro si posiziona in base a cosa fanno i motori alle estremità.

    Possiamo solo desiderare che il baricentro corrisponda al centro di rotazione lungo tutti e tre gli assi, ma questo avviene soltanto se i motori progrediscono sull'arco di cerchio che descrivono in modo proporzionale al raggio.
    Vuol dire che più un motore è lontano dal fulcro di rotazione che noi scegliamo, e più distanza deve percorrere, quindi deve sviluppare una velocità lineare adeguata a percorre questa distanza lungo l'arco di cerchio.
    Un motore più vicino al fulcro di rotazione deve invece percorrere meno distanza, quindi deve girare più piano.
    Riassumendo, motori lontani devono girare più forte dei motori vicini al fulcro, il contrario dell'altra teoria.

    Discorso a parte per il yaw, dove la variazione della velocità di rotazione comporta si una spinta a salire o scendere, ma questa viene compensata dal motore contrapposto che fa il contrario. Ciò che gioca per la rotazione yaw è la variazione dell'effetto giroscopico delle masse in movimento.


    A sostegno di questa ultima teoria, e motivo per cui sono qui a scrivere, c'è l'esperienza fatta oggi con l'RD290, un micro esino di tipo spider, piuttosto asimmetrico.

    Mi sono deciso a testare il sistema che tiene conto delle velocità, quindi ho ripetuto due volte i seguenti passi:
    - azzeramento delle impostazioni del fc
    - aggiornamento del firmware
    - impostazione del veicolo (Hexa X la prima volta, matrice modificata la seconda)
    - impostazione di Rx, output ai motori, modalità di volo
    - ricerca degli UOV (Unique Oscillation Value) per i tre assi con i quali calcolare i PID con OPTune
    - prova di volo

    Con l'esa impostato Hexa X (default) gli UOV di pitch e roll erano molto diversi, così come ovviamente i PID.
    Nella prova di volo c'era una evidente differenza in autorità a vantaggio del roll. Il pitch era pesante, un po' spugnoso, con una certa fatica a mantenere l'inclinazione nel volo molto veloce.

    Con la matrice reimpostata gli UOV di pitch e Roll sono risultati molto più simili, quindi PID simili.
    Nella prova di volo, roll e pitch hanno la stessa autorità, sembra un quadro puro e in FFF si comporta molto bene.

    Una cosa che ho notato è la seguente. Lo UOV è quel valore di Kp, impostati Ki e Kd a zero, che porta il velivolo in oscillazione costante su quell'asse (non aumenta e non svanisce). Con la matrice di default l'oscillazione era sporca, nel rollio c'era un po' di pitch e viceversa, insomma assomigliava più ad un traballamento. Con la matrice corretta l'oscillazione su ciascun asse era perfettamente pulita, roll puro o pitch puro.

    I miei squiddini, ancora non sono impostati col nuovo metodo, ma quel che so è che gli UOV di pitch e roll sono estremamente diversi, quasi il doppio l'uno dell'altro.
    Non mi meraviglierebbe se la nuova matrice avvicinasse i valori in modo da riuscire ad usare PID simili e generalmente più elevati.
    Appena trovo un po' di tempo provo anche sugli squid.



    Si, ma come si producono i numeri?

    Mentre so come attribuire più o meno importanza ai motori ragionando sulla coppia, non saprei come calcolare correttamente i valori per la speed theory.

    Mi viene in aiuto uno script in python che calcola la matrice per esa e octo-cotteri che mi ha segnalato Laurent, le cui spiegazioni tecniche le trovate qui.

    Lo script è semplice da usare, basta editare la matrice geometrica dei motori inserendo le coordinate XY di ciascun propulsore e lanciare lo script in una finestra a linea di comando col comando python (osx e linux, su windows forse bisogna installare qualcosa).
    Il risultato è questo



    Ho editato il titolo della tabella in modo che il print fosse Mixer table RD290.
    Nella tabella si vedono i sei motori con i coefficienti da usare, a seconda del flight controller. In openpilot si possono moltiplicare per 100 se nessuno dei risultati supera 127, altrimenti si sceglie un fattore di moltiplicazione adeguato.



    Se l'argomento interessa ed avrà un seguito, potrebbe essere utile mettere le matrici dei quad più in voga. Tenete in considerazione che lo script è espandibile a qualunque tipologia che non comprenda servi, tipo tricottero, e che abbia i motori tutti in linea.
    Non so come si potrebbe inserire un V-Tail nello script.
    Comunque dai quadri agli octo asimmetrici è possibile generare la matrice.

  • #2
    Potrebbe essere interessante ma come lancio lo script, se puoi spiega passo per passo.
    Uso un mac.
    Vivo di piccole cose, ma molto spinte..

    Commenta


    • #3
      Originariamente inviato da rodolfo70 Visualizza il messaggio
      Potrebbe essere interessante ma come lancio lo script, se puoi spiega passo per passo.
      Uso un mac.
      Con mac e linux siamo a cavallo, perché python è installato di serie.

      Intanto allego lo script.
      Va salvato sul computer e scompattato.

      Per lanciarlo, si apre Programmi > Utility > Terminale.

      Nel terminale si scrive prima il comando "python" seguito da uno spazio




      Poi si trascina il file .py nella finestra del terminale. Appare l'intero percorso del file dopo il comando.




      Si da Enter e lo script restituisce a video i calcoli.




      E' chiaro che lo script va editato con le misure del nostro multirotore.

      Quindi, prima di quanto sopra, vanno trascritte le misure delle coordinate dei motori.

      Un esempio esplicativo è quello che mi sono fatto per l'RD290.






      Le coordinate XY vanno inserite nello script, nella parte che riguarda l'Hexa, insieme al verso di rotazione che si sceglie per il veicolo.

      File allegati

      Commenta


      • #4
        Un maestro, come al solito.
        Seguo con interesse

        Commenta


        • #5
          Ma il file.py è quello che hai postato e che ho scaricato, ho visto che è modificabile perciò modifico i valori degli assi e li carico nel terminale come hai spiegato, giusto?
          Vivo di piccole cose, ma molto spinte..

          Commenta


          • #6
            Originariamente inviato da rodolfo70 Visualizza il messaggio
            Ma il file.py è quello che hai postato e che ho scaricato, ho visto che è modificabile perciò modifico i valori degli assi e li carico nel terminale come hai spiegato, giusto?
            Esatto. Cambi i valori che trovi già scritti nella matrice che ti interessa, Quad, Hexa o Octo, mettendo le quote in mm che rilevi sugli assi YX, salvi e lanci lo script.
            Non usare mai il tabulatore quando editi lo script.

            Così come è preimpostato, nel Quad il motore 1 è il nord-ovest ed a seguire in senso orario. Nell'Hexa l'1 è il NE e gli altri a seguire in senso orario.
            Ma si può editare in qualsiasi ordine, l'importante è far corrispondere i motori con la matrice che il software del flight controller si aspetta.

            Ho pensato che anche del tricottero si può impostare la matrice. Ora edito uno script per il tricottero.

            E' possibile inserire anche l'Y6 o l'H8, insomma tutte le tipologie meno il V-Tail.

            Nell'Y6 per esempio, i due motori posteriori avranno le stesse coordinate con Y=0 e segno opposto.

            Commenta


            • #7
              Originariamente inviato da liftbag Visualizza il messaggio

              Ho pensato che anche del tricottero si può impostare la matrice. Ora edito uno script per il tricottero.

              E' possibile inserire anche l'Y6 o l'H8, insomma tutte le tipologie meno il V-Tail.

              Nell'Y6 per esempio, i due motori posteriori avranno le stesse coordinate con Y=0 e segno opposto.
              Ho pensato male. Non può calcolare il tricottero, perché non prevede che il jaw sia comandato dall'inclinazione del motore posteriore.
              Mettendo quote e versi di rotazione restituisce valori incoerenti.

              Invece dovrebbe funzionare con tipologie ad eliche sovrapposte, perché il yaw è comandato dall'effetto giroscopico.

              Commenta


              • #8
                seguo e cerco di capire . ma dentro di me che sono ignorante e' chiaro che se metto un peso su una leva lunga un metro faccio piu fatica a tenerla sollevata che se sto peso e su una leva lunga 10 cm , il peso sta per il multi la leva per il braccio io per il motore . ho capito giusto ? non tiratemi sassate nella vita ho studiato poco .......
                Test portata radio ?? vedi qui :

                Commenta


                • #9
                  Originariamente inviato da Sergione64 Visualizza il messaggio
                  seguo e cerco di capire . ma dentro di me che sono ignorante e' chiaro che se metto un peso su una leva lunga un metro faccio piu fatica a tenerla sollevata che se sto peso e su una leva lunga 10 cm , il peso sta per il multi la leva per il braccio io per il motore . ho capito giusto ? non tiratemi sassate nella vita ho studiato poco .......
                  Quello che dici è corretto, ma qui la questione è diversa, non si lavora con i pesi come si fa con le leve, ed il fulcro delle rotazioni non è un qualcosa di fisso.
                  Il fulcro è semplicemente determinato dalle velocità di salita e discesa dei motori contrapposti.
                  Cioè, è la velocità di salita e discesa che determina il fulcro della rotazione.

                  Due esempi.

                  Un asta con due motori alle estremità (si suppone che stia in hovering anche se è impossibile) ha il motore di destra che aumenta la sua velocità di rotazione, mentre quello di sinistra rimane fisso con i soliti giri.
                  Con buona approssimazione succederà che l'asta ruoterà intorno al motore di sinistra.

                  La stessa asta, il motore di destra raddoppia i giri, quello di sinistra li dimezza.
                  Possiamo supporre che ruoterà intorno al centro dell'asta.

                  Questo solo per dire che il fulcro della rotazione è il risultato del comportamento dinamico dei propulsori.

                  Lo script affronta in modo ingegnerizzato questa semplificazione, mettendo in relazione la variazione dei giri dei motori con la velocità che svilupperanno, per fare in modo che qualunque rotazione sia richiesta al modello, questa avvenga intorno ad un punto solo, il centro di gravità.

                  Commenta


                  • #10
                    Immagino che utilizzando la NAZA, che quindi ha solo i valori di GAIN da poter regolare, sono tagliato fuori da questa discussione giusto?
                    I Miei video su VIMEO
                    www.zippomaker.com

                    Commenta


                    • #11
                      grazie

                      Originariamente inviato da liftbag Visualizza il messaggio
                      Quello che dici è corretto, ma qui la questione è diversa, non si lavora con i pesi come si fa con le leve, ed il fulcro delle rotazioni non è un qualcosa di fisso.
                      Il fulcro è semplicemente determinato dalle velocità di salita e discesa dei motori contrapposti.
                      Cioè, è la velocità di salita e discesa che determina il fulcro della rotazione.

                      Due esempi.

                      Un asta con due motori alle estremità (si suppone che stia in hovering anche se è impossibile) ha il motore di destra che aumenta la sua velocità di rotazione, mentre quello di sinistra rimane fisso con i soliti giri.
                      Con buona approssimazione succederà che l'asta ruoterà intorno al motore di sinistra.

                      La stessa asta, il motore di destra raddoppia i giri, quello di sinistra li dimezza.
                      Possiamo supporre che ruoterà intorno al centro dell'asta.

                      Questo solo per dire che il fulcro della rotazione è il risultato del comportamento dinamico dei propulsori.

                      Lo script affronta in modo ingegnerizzato questa semplificazione, mettendo in relazione la variazione dei giri dei motori con la velocità che svilupperanno, per fare in modo che qualunque rotazione sia richiesta al modello, questa avvenga intorno ad un punto solo, il centro di gravità.
                      ok , adesso capisco che la cosa non e cosi semplice come pensavo , grazie della spiegazione semplificata seguo la cosa con aTTTenzione
                      Test portata radio ?? vedi qui :

                      Commenta


                      • #12
                        E' possibile che le due teorie diano risultati diversi solo per un 5% circa?
                        La bibbia dei Bladoni V6, Blade 120SR - Guida Crius Aio Pro V1.3
                        ATOM 500 - Blade 400 FBL STRETCHED 6s - 120SR.

                        Commenta


                        • #13
                          Originariamente inviato da bandit Visualizza il messaggio
                          E' possibile che le due teorie diano risultati diversi solo per un 5% circa?
                          Si, ma quello che conta davvero è che i risultati sono opposti per quanto riguarda roll e pitch, e allineati per il Yaw.

                          Mi sto accorgendo che con la matrice modificata con lo script, i PID di pitch e roll tendono ad avvicinarsi come valori, mentre prima erano quasi l'uno il doppio dell'altro.
                          Parlo degli squid.
                          Sull'esa ho avuto il risultato più clamoroso.
                          La teoria della coppia non l'ho provata, ma con le impostazioni di default il pitch era decisamente pigro rispetto al roll. Con la matrice aggiustata risponde come un quadro puro.

                          Commenta


                          • #14
                            Originariamente inviato da zippomaker Visualizza il messaggio
                            Immagino che utilizzando la NAZA, che quindi ha solo i valori di GAIN da poter regolare, sono tagliato fuori da questa discussione giusto?
                            Non direi.
                            La matrice corretta serve ad approntare l'attacco della manovra correttiva o del comando.
                            E' vero che il flight controller si avvale dei giroscopi e degli accelerometri mer metterci una pezza sempre, ma prima di metterci la pezza deve leggere l'errore rispetto al risultato che vuole ottenere.
                            La corretta matrice serve a minimizzare l'errore, e questo è dovuto al fatto che le uscite ai motori sono proporzionate alla loro posizione rispetto al baricentro, cioè in teoria, non dovrebbe neanche generarsi l'errore.

                            E' un po' come spostare il baricentro rispetto al centro di spinta: in questa condizione una accelerata brusca tenderà a far inclinare il mezzo nei primi istanti, prima che il fc corregga l'errore.


                            Ho avuto la Naza per poco, non mi è piaciuta e me ne sono disinteressato, ma ricordo che il buon blade-slap ha tradotto il manuale in italiano con l'indicazione dei menu nascosti, tra i quali sono quasi certo che c'è il menù per modificare il mixer.

                            I gain da rivedere sono solo una conseguenza della matrice ottimizzata.
                            Puoi benissimo lasciarli come sono.
                            Io li modifico solo perché con OP Tune mi viene facile e ci sto cinque minuti.

                            Commenta


                            • #15
                              Allora Lift, ho provato ad usare lo script, ma proprio non sono riuscito a cavargli un ragno dal buco, io ti allego le misure del mio quaddino molto asimmetrico, se a tempo perso mi riesci a tirare fuori sto benedetti mix, non posso far altro che rigraziarti per la 1000ma volta...
                              P.s, le misure le puoi arrotondare.... non sono prese col calibro.
                              File allegati
                              I miei video

                              Commenta

                              Sto operando...
                              X