pensavo si riferisse al filtro seguente. Quindi è solo un modo per rendere più facilmente elaborabile il dato?
annuncio
Comprimi
Ancora nessun annuncio.
MultiWii Quad! Alternativa ad Aeroquad/Baronpilot con sensori wii
Comprimi
X
-
Originariamente inviato da albo86 Visualizza il messaggioè da un po'di settimane che seguivo il francese.. nel farttempo ho iniziato a costruirne 2, uno con la kk euno con il mini arduino.. devo dire che in fatti di costi, il francese batte di gran lunga il KK..
cmq aspetto ancora che mi arrivi aualche componente per finire entrambi i progetti e poi vi saprò dire anke io le mie impressioni..
Cmq, non sono sicuro al 100%, ma mi sembra che nel video, il francese usasse oltre all WMP anche il NK (Nunchuk).. da quel che ho capito però la sua versione 1.0 del codice sorgente non prevede l'uso del NK, sembra che abbia avuto una serie di problemi.. in effetti il video l'ha girato il 28 maggio, mentre la versione 1.0 del codice sorgente è datata settembre 2010
1- il video (postato da me) è del 10 settembre
2- usa gli accelerometri del nunchuk (=modalità stabile)
3- vola con la penultima versione, l'ultima è dell'11/9
4- l'accelerometro a tre assi del nunchuk è opzionale. Il Wii Motion Plus (WMP per gli amici, la scheda con i tre giroscopi insomma) è invece necessaria per il controllo
@ciskje: Per le riceventi... dipende. Quale banda usi? In 35Mhz mi trovo molto bene con le r16scan. Ma io ho una MX16 per cui sono come il gorgonzola per i maccheroni....
Unica pecca.... il filo davvero lungo dell'antenna! Un altro punto a vantaggio dei 2.4Ghz.
ciao!Senza entusiasmo non si è mai compiuto niente di grande. R.W. Emerson
Commenta
-
Originariamente inviato da elettro Visualizza il messaggiodata l'occhiata... nell'acro mode usa questo filtro:
codice:for (axis = 0; axis < 3; axis++) gyroADCp[axis] = gyroADC[axis]; delayMicroseconds(650); //empirical updateIMU(); for (axis = 0; axis < 3; axis++) { gyroADCinter[axis] = (gyroADC[axis]+gyroADCp[axis])/8; // /4 /2 // empirical, we take a weighted value of the current and the previous values gyroData[axis] = (gyroADCinter[axis]*2+gyroADCprevious[axis])/3; gyroADCprevious[axis] = gyroADCinter[axis]; }
Poi aspetta la seconda lettura, (delay e update IMU).
poi fa un'altra lettura e dice inter[] = (datoLettura1 + datoLettura2)/8;(perchè 8? è un valore che dipende dal sensore o è un valore empirico? si direbbe empirico!)
a questo punto fà un ulteriore filtro(se quello precedente è un filtro), tra il valore letto in questo modo precedentemente e quello attuale, dando il doppio del peso al valore attuale ( media pesata, ci avevo già pensato ma su più valori, con pesi che decrescono più aumenta l'anzianità del dato, così anche da non avere una lettura ogni due dati ma ogni singolo input )
aiutatemi a capire se la prima operazione è un filtro o un modo per normalizzare i valori (chessò magari i valori del WMP/8 sono in radianti), altrimenti quella divisione a tutti gli effetti non serve a una bega (tanto è lo stesso denominatore applicato ogni 2 letture)
Tanto per rendere l'idea nel tempo che lui mette di delay ( 650 microsecondi ) l'armquad ha gia letto i gyro, letto l'accelerometro (se e' attivo), calcolato l'assetto e inviato i relativi dati ai motori per correggerlo, insomma un ciclo di loop completo...Quadricottero News
http://www.facebook.com/Quadricottero
Commenta
-
sisi, questo lo sapevo, ma infatti la media la faccio su 20 valori che comunque mantiene una risposta veloce ma linearizza molti l'uscita dei giroscopi ( i miei sono alquanto pessimi )
per il delay sono della tua stessa idea, da quanto ho capito però quei 650 microsecondi (occhio a non confonderli con milli) sono necessari o all'I2C o al sensore per aggiornare il suo valore. bho io col mio analogico ogni lettura, per quanto veloce sia, è una storia a sè
Commenta
-
Originariamente inviato da elettro Visualizza il messaggiosisi, questo lo sapevo, ma infatti la media la faccio su 20 valori che comunque mantiene una risposta veloce ma linearizza molti l'uscita dei giroscopi ( i miei sono alquanto pessimi )
per il delay sono della tua stessa idea, da quanto ho capito però quei 650 microsecondi (occhio a non confonderli con milli) sono necessari o all'I2C o al sensore per aggiornare il suo valore. bho io col mio analogico ogni lettura, per quanto veloce sia, è una storia a sè
Lui fa il delay perche' probabilmente ha visto che con la sua configurazione se legge piu veloce inizia ad avere letture falsate
Nei miei primi esperimenti quando usavo i murata che usi tu semplicemente li leggevo 1 volta al ciclo, al massimo media di 3 letture, fine.
Perche funzionava? Perche essendo il ciclo di 100 (cento ) MICROsecondi la sequenza di cicli era gia una sorta di filtro antialiasing.
Certo se leggi 1 volta ogni millisecondo hai bisogno di medie e filtri perche il rumore si fa piu sentire.
Volava ? Si in modo molto simile a questo. YouTube - ArmQuad con 5 Gyroscopi
Ora uso alcuni filtri di tipo FIR mantenendo cmq. il ciclo entro 500-600 MICROsecondi.
Codice di allora ? MU sta per murata
All'accensione 1000 letture per la calibrazione dopodiche una volta fatta la calibrazione i gyro durante il volo venivano letti con media a 2 e fusione con lettura dei gyro del wimotionplus letti in analogico, ho evitato l' i2c volevo la massima velocita' possibile.
Ma anche solo con i murata volava allo stesso modo.
codice:Sub Gyro ' ------ G Y R O ---- dim x as integer if calibrazioneGyro = 0 then ' procedi alla CALIBRAZIONE wait(1000) ' attesa di 1 secondi per consentire la stabilizzazione del quad dopo l'accensione for x = 1 to 1000 ' 1000 letture OffsetAvDiGy = ad(0) 'ad0 wii ad5 murata OffsetDeSiGy = ad(1) 'ad1 wii ad3 murata OffsetAvDiGyMu = ad(5) 'Gyro Murata OffsetDeSiGyMu = ad(3) 'Gyro Murata OffsetYawGy = ad(2) sommaAvDi = OffsetAvDiGy + sommaAvDi sommaDesi = OffsetDeSiGy + sommaDeSi sommaYawGy = OffsetYawGy + sommaYawGy sommaAvDiMu = OffsetAvDiGyMu + sommaAvDiMu sommaDesiMu = OffsetDeSiGyMu + sommaDeSiMu wait(1) ' Attendi 1ms per il tempo di conversione AD next x OffsetAvDiGy = (sommaAvDi / 1000) / scalaturaGy OffsetDeSiGy = (sommaDeSi / 1000) / scalaturaGy OffsetYawGy = (sommaYawGy / 1000) / scalaturaGy OffsetAvDiGyMu = (sommaAvDiMu / 1000) / scalaturaGy OffsetDeSiGyMu = (sommaDeSiMu / 1000) / scalaturaGy calibrazioneGyro = 1 ' Gyro Calibrati end if ' FINE CALIBRAZIONE ' LETTURA gyro durante il volo AvDiGyro = ad(0) AvDiGyro = (AvDiGyro + AvDiGyroOld) / 2 AvDiGyroMu = ad(5) AvDiGiroMu = ( AvDiGyroMU + AvDiGyroMuOld ) / 2 DeSiGyro = ad(1) DesiGyro = (DeSiGyro + DeSiGyroOld) / 2 DeSiGyroMu = ad(3) DeSiGYroMu = ( DeSiGyroMU + DeSiGyroMuOld ) / 2 YawGyro = ad(2) YawGyro = ( YawGyro + YawGyroOld ) / 2 'Scalatura + fusione dei gyro AvDiGyro = AvDiGyro / scalaturaGy ' 65472 a 3.3 volt AvDiGyro = (AvDiGyro - OffsetAvDiGy ) AvDiGyroMu = AvDiGyroMu / scalaturaGy AvDiGyroMu = (AvDiGyroMu - OffsetAvDiGyMu ) AvDiGyro = (AvDiGyroMu + AvDiGyro ) / 2 DeSiGyro = DeSiGyro / scalaturaGy DeSiGyro = (DeSiGyro - OffSetDeSiGy ) DeSiGyroMu = DeSiGyroMu / scalaturaGy DeSiGyroMu = (DeSiGyroMu - OffSetDeSiGyMu ) DeSiGyro = (DeSiGyro + DeSiGyroMu ) / 2 YAWGyro = YAWGyro / scalaturaGy YAWGyro = (YAWgyro - OffsetYawGy ) AvDiGyroOld = AvDiGyro AvDiGyroMuOld = AvDiGyroMu DeSiGyroOld = DeSiGyro DeSiGyroOldMu = DeSiGyroMu YawGyroOld = YawGyro end sub
Quadricottero News
http://www.facebook.com/Quadricottero
Commenta
-
Per ritornare un po' in topic, non posso che confermare la bonà del codice Multiwii.
Ieri sera ho fatto un minimo di pid tuning e il mezzo è ancora migliorato, riducendo le ampie e lente oscillazioni che mi affliggono nella transizione da un volato veloce all'hovering.
In "Acro" sono riuscito ad alzare il proporzionale fino ad avere PID: 8 0.030 -20 con pochissime oscillazioni anche nelle discese veloci con i motori al minimo.
Ho tirato delle virate allo stallo e dei bei loop in velocità (con un rispettabile tempo di rovescio) come non ho mai visto fare a mezzi del genere.
E in più ho risolto completamente gli svarioni e i piantamenti casuali del wmp + nk che mi dava il codice aeroquad. (La routine di controllo e reinizializzazione funziona per bene!) Ho anche recuperato un cut-off dei regolatori a fine batteria, che mi sarebbe certamente costato un buco per terra con altri codici.
Oggi mi metto a sistemare lo "stable"
Provatelo e mi direte se non è molto meglio di Aeroquad.Ultima modifica di jhoexp; 15 settembre 10, 10:25.Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
Originariamente inviato da jhoexp Visualizza il messaggioPer ritornare un po' in topic, non posso che confermare la bonà del codice Multiwii.
Ieri sera ho fatto un minimo di pid tuning e il mezzo è ancora migliorato, riducendo le ampie e lente oscillazioni che mi affliggono nella transizione da un volato veloce all'hovering.
In "Acro" sono riuscito ad alzare il proporzionale fino ad avere PID: 8 0.030 -20 con pochissime oscillazioni anche nelle discese veloci con i motori al minimo.
Ho tirato delle virate allo stallo e dei bei loop in velocità (con un rispettabile tempo di rovescio) come non ho mai visto fare a mezzi del genere.
E in più ho risolto completamente gli svarioni e i piantamenti casuali del wmp + nk che mi dava il codice aeroquad. (La routine di controllo e reinizializzazione funziona per bene!) Ho anche recuperato un cut-off dei regolatori a fine batteria, che mi sarebbe certamente costato un buco per terra con altri codici.
Oggi mi metto a sistemare lo "stable"
Provatelo e mi direte se non è molto meglio di Aeroquad.
Vogliamo i videooooo!!!!
Vogliamo i videoooooooo!!!!
Non per altro, è che non ci sono abbastanza video del MultiWii per invogliare a percorrere questa strada.
Stasera dovrei finire il mio....
Ciao!Senza entusiasmo non si è mai compiuto niente di grande. R.W. Emerson
Commenta
-
Originariamente inviato da ddrake Visualizza il messaggioVogliamo i videoo!!!!
Vogliamo i videooooo!!!!
Vogliamo i videoooooooo!!!!
Vedrai che hai preso la strada giusta. Dei 3 codici provati sulla mia piattaforma il MultiWii si è rivelato sicuramente il migliore!Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
scusate la domanda un po'banale.. tenete conto che purtroppo di programmazione non ci capisco un H..
questa parte del codice:
// alias for RC
#define ROLL 0
#define PITCH 1
#define YAW 2
#define THROTTLE 3
#define AUX1 4
fa intendere che fa usare 5 canali?La probabilità che qualcosa accada è inversamente proporzionale alla sua desiderabilità.
Commenta
-
Originariamente inviato da albo86 Visualizza il messaggioscusate la domanda un po'banale.. tenete conto che purtroppo di programmazione non ci capisco un H..
questa parte del codice:
// alias for RC
#define ROLL 0
#define PITCH 1
#define YAW 2
#define THROTTLE 3
#define AUX1 4
fa intendere che fa usare 5 canali?
Dov'è il problema?Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
no. nessuna.. è che volevo fare una cosa sul 5° canale..
ma ionvece di usare uno swich manuale sulla trasmittente, non si può dire all'ATmega di mantenere l'assetto di vuolo fisso se non gli vengono impartiti altri comandi manuali? cioè in poche parole che tenga lo stable mode in automatico?La probabilità che qualcosa accada è inversamente proporzionale alla sua desiderabilità.
Commenta
-
Originariamente inviato da albo86 Visualizza il messaggioaspetta un attimo.. lo stable mode serve per fargli fare dei movimenti più soft rispetto all'acro giusto?
E' comunque una funziona da settare per bene prima di poterla usare con disinvoltura.
E' sempre consigliato avere la possibilità di fare lo switch in volo tra le due modalità, quindi avere un canale aggiuntivo.Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
-
Originariamente inviato da albo86 Visualizza il messaggiono. nessuna.. è che volevo fare una cosa sul 5° canale..
ma ionvece di usare uno swich manuale sulla trasmittente, non si può dire all'ATmega di mantenere l'assetto di vuolo fisso se non gli vengono impartiti altri comandi manuali? cioè in poche parole che tenga lo stable mode in automatico?Originariamente inviato da jhoexp Visualizza il messaggioLo stable mode serve a tornare in volo livellato se molli i comandi.
E' comunque una funziona da settare per bene prima di poterla usare con disinvoltura.
E' sempre consigliato avere la possibilità di fare lo switch in volo tra le due modalità, quindi avere un canale aggiuntivo.
Per ora funziona in manuale....
E per le riprese da solo... capcam!
Action CamRig [ACR10] - $59.95 : CamRig, The Store
(da farsi rigorosamente in casa, il link è solo per idea....)
ciao!Senza entusiasmo non si è mai compiuto niente di grande. R.W. Emerson
Commenta
-
Originariamente inviato da ddrake Visualizza il messaggioE per le riprese da solo... capcam!
Action CamRig [ACR10] - $59.95 : CamRig, The Store
(da farsi rigorosamente in casa, il link è solo per idea....)
ciao!Johnny
(GTE - Torino)
Out of sight, NOT out of mind.
Commenta
Commenta