[Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo

il giroscopio restituisce la VELOCITA' di rotazione angolare.
l'accelerometro restituisce le ACCELERAZIONI sugli assi, ma per motivazioni strutturali legge anche l'accelerazione gravitazionale.

ok , la cosa mi è molto piu chiara adesso.

però ho ancora dei dubbi.

il giroscopio rileva la velocità angolare,ma qundi prima di entrare in funzione deve essere calibrato per il neutro???.

ad esempio io mi diverto con gli elicotteri rc, e per settare la coda bisogna impostare il gyro su avcs, ovvero che riconosce la posizione della coda e la tiene in quella posizione anche se manualmente la muovi.

l'accelerometro quindi si basa su l'accelerazione di gravità della terra??? non deve essere calibrato??

se usassi l'accelerometro nella spazio rileverebbe solamente le accelerazioni che vengono fatte sul suo corpo??.

perchè usare gyro e acceleromtro insieme porta dei benefici??

scusate le tante domande.

ciao

lesto:
ma per motivazioni strutturali legge anche l'accelerazione gravitazionale.

Non è per motivazioni strutturali, è per motivi fisici visto che la gravità è una forza applicata a una massa pertanto esprime una accelerazione (A=F/M), come tale viene misurata da un accelerometro in funzione dell'angolo tra asse e centro della terra, se l'asse è perfettamente ortogonale la gravità non influisce in nessun modo.

bit95:
il giroscopio rileva la velocità angolare,ma qundi prima di entrare in funzione deve essere calibrato per il neutro???.

Assolutamente si, i giroscopi sono molto sensibili alle variazioni di temperatura e hanno sempre un certo drift il che rende indispensabile calibrarli ad ogni accensione.

l'accelerometro quindi si basa su l'accelerazione di gravità della terra??? non deve essere calibrato??

L'accelerometro non si basa sull'accelerazione gravitazionale, la misura, non serve calibrarlo ad ogni accensione, basta farla periodicamente.

se usassi l'accelerometro nella spazio rileverebbe solamente le accelerazioni che vengono fatte sul suo corpo??.

Dipende da cosa intendi per spazio, anche in orbita alta, p.e. dove si trova la ISS, la gravità terrestre è presente, infatti viene sfruttata dagli strumenti di bordo, e anche se ti allontani molto dalla terra sei sempre in presenza dei campi gravitazionali degli altri pianeti e del sole, non sono trascurabili se parliamo di strumentazioni inerziale.

perchè usare gyro e acceleromtro insieme porta dei benefici??

Misurano grandezze fisiche diverse tra loro complementari, unendo tramite particolari processi matematici, i più utilizzati sono il Kalman e la DCM, le loro letture si attua ciò che viene definito come "sensor fusion" e ti permette di correggere/compensare le letture ottenendo una rilevazione dell'assetto molto più precisa e stabile.

ovvioamente sia giroscopio che accelemometro vanno calibrati , anche se quelli con interfaccia digitale già di fabbrica hanno una buona impostazione. Di solito possiedono anche un sistema di self-test che se attivato crea una finta rotazione/accelerazione nota sul sensore, in modo che automaticamente non solo si possa settare lo 0 del sensore (che si fa semplicemente leggendo un pò di valori da fermo ed assumendoli come 0, unico caso particolare l'asse della gravità che è da assumere come 0+1g), ma anche di quanto variano i valori applicando una rotazione(i sensori sono più o meno lineari, quindi se vedi che esempio 32 è lo zero reale, e 200 è 1G, allora sai che 500 è ((500-32)/200)*1 G

confermo che nello spazio "perfetto" l'accelerometro leggerebbe solo le accelerazioni, nella realtà vedresti gli effetti combinati di più gravità :slight_smile:

che riconosce la posizione della coda e la tiene in quella posizione anche se manualmente la muovi.

lui semplicemente somma le velocità angolari * il tempo di lettura (velocità*tempo = spazio percorso), e poi da il comando per muoversi al contrario in modo da avere spazio percorso sempre = 0

Ora, dopo un pò che lo usi, noterai che però lo 0 un pò si sposta. Se conosci gli integrali, sai che quella variabile "tempo" più è piccola e più ti da una misura precisa, però noi siamo limitati ad un certo di misure al secondo, e non solo, ma anche sulla precisione stessa delle letture. L'errore quindi si accumula, e piano piano ti ti ritrovi sottosopra senza neanche accorgertene.
In generale puoi volare anche con solo il giroscopio, di solito ci si riferisce a questo come modalità "acro"

poi c'è la cosidetta modalità "stabile" (in realtà a seconda di come compensi i moviomenti ne esistono tantissime, per esempio puoi mantenere l'ultima posizione, tornare allo 0 degli assi, seguire dei valori stabiliti etc...)
A questo punto entrano in gioco gli accelerometri: visto che sai che più o meno puntano sempre verso il basso (salvo accelerazioni quindi entra in gioco un pò di matematica per eliminarle, o compensarle), puoi eliminare l'errore del giroscopio.

Si dice che il giroscopio fa delle letture "relative", mentre l'accelerometro "assolute" (ovviamente rispetto al sistema di riferimento terra).

Come avrai notato, però, l'accelerometro NON è in grado di compensare l'errore sullo YAW. Quindi si risolve con un magnetometro, che è una bussola digitale. In realtà, essenso il nord magnetico rilevato sui 3 assi, può essere usato per compensare anche asse x e y, l'unico preoblema è che i sensori magnetici sono molto sensibili ai disturbi anche elettrici come per esempio i motori, gli esc, il frame in metallo, etc..., in oltre sono molto lenti per le letture.
Per esempio l'ITG3200(gyroscopio) fa al massimo 256letture al secondo, l'ADXL345(accelerometro) 800letture/secondo(in i2c, via SPI ne fa molte di più, ma la maggior parte delle IMU è i2c purtroppo), e il BCMqualcosa(magnetometro) fa 60 misure al secondo

questi sono i sensori di una droteck da 50/60€ se non erro, ovvero la configurazione più low-cost.

edit: astro mi ha preceduto :grin:

lesto:
lui semplicemente somma le velocità angolari * il tempo di lettura (velocità*tempo = spazio percorso), e poi da il comando per muoversi al contrario in modo da avere spazio percorso sempre = 0

Se parliamo di giroscopi utilizzati su i modelli RC di elicotteri il funzionamento è diverso, esistono due modalità, il rate mode e l'AVCS (il nome può essere diverso a seconda del produttore.
Nella modalità rate il giroscopio, inteso come sensore e relativa elettronica di controllo e attuazione, si limita a fornire un comando fisso e proporzionale alla velocità angolare al servo di coda, in pratica modifica il passo del rotore di coda solo se questa si sposta quando non desiderato e riporta il passo al valore iniziale quando la velocità angolare è zero, il passo del rotore di coda è controllato direttamente dallo stick del radiocomando.
Il modo AVCS prevede il controllo della velocità di rotazione della coda, ovvero il giroscopio ha il controllo diretto del servo di coda, non il radiocomando, e ne varia il passo in funzione della velocità desiderata che può essere 0 con stick al centro oppure un certo valore, programmabile, in funzione della deviazione dello stick.
Il rate mode è quello utilizzato dai giro di vecchia generazione oppure da quelli attuali low cost, tutti quelli recenti sono del tipo AVCS, molti permettono anche il rate mode, che consente un controllo perfetto della coda senza dover utilizzare miscelazioni tra passo collettivo e passo di coda, abbastanza difficili da mettere a punto in modo perfetto, e consente di stoppare la coda quasi istantaneamente, o di farla girare in modo preciso e costante, mentre si eseguono manovre acrobatiche complesse.

ah ok, non conosco queste impostazioni, mi ha ingannato la frase

ovvero che riconosce la posizione della coda e la tiene in quella posizione anche se manualmente la muovi.

pensavo che con AVCS tornasse ad una posizione angolazione (rispetto al nord) fissa impostata all'avvio, il che in effetti è un pò inutile :grin:

grazie mille delle risposte!!!

molto chiare, adesso mi studio bene tutto.

o.t

astrobeed vedo che sei esperto di elicotteri rc,frequenti anche il forum barone rosso??

ciao

lesto:
ah ok, non conosco queste impostazioni, mi ha ingannato la frase

In effetti se non hai mai usato un gyro AVCS è facile farsi trarre in inganno.

pensavo che con AVCS tornasse ad una posizione angolazione (rispetto al nord) fissa impostata all'avvio, il che in effetti è un pò inutile :grin:

Si è assolutamente inutile.

bit95:
astrobeed vedo che sei esperto di elicotteri rc,frequenti anche il forum barone rosso??

Diciamo pure che di elicotteri, e non solo RC, ne so veramente molto :slight_smile:
Il forum del Barone sono anni che lo diserto, ero uno dei primi iscritti e all'epoca molto attivo, ora non ho più il tempo, e pure la voglia, per seguirlo.
Anche l'attività di volo è calata molto con gli anni, adesso solo modelli elettrici classe 500 e quadricottero, però fino a poco tempo fa avevo sempre in linea di volo almeno due Raptor 90 full optional con motore OS90 con i quali ho zappato non poche zolle di terra volando 3D a bassa quota :smiley:

"pale rubate all'agricoltura" cit. mia madre (più o meno)

mi sto interessando molto alla stabilizzazione dei quadricotteri,e ho cercato come lavorano insieme accelerometro e giroscopio, e ho scoperto che "i calcoli matematici" che vengono fatti dopo aver analizzato i valori dei sensori( giroscopio e accelerometro) sono il filtro di KALMAN e il filtro di MADGWICK,mi confermate questo??

ho visto un po le formule e mi sono sentito male XD,forse in un futuro posso imparare tutto, sono ancora giovane.

ciao

il filtro MADGWICK, o DCM, è basato su matrici e quaternioni di rotazione.
Le matrici di rotazione sono abbastanza semplici, per i quaternioni ci sono di mezzo i numeri complessi perchè in realtà la rotazione viene fatta in 4 dimensioni invece che tre per evitare il gimbal lock, quindi sono un pò più complicate.
Però, visto che queste "formule" sono usate per la grafica 3d, trovi in rete tantissime guide, tutorial etc...
Per esempio, questo codice GitHub - Goffredo/Quad3D: Lab to test various stabilization controllers for a flying quadricopter. Implemented in JME3. l'ho fatto con un mio amico, è una simulazione 3d di un quad con tanto di pid di stabilità e altezza funzionante. Manca ancora il calcolo dello YAW, perchè il motore fisico non simula le eliche, ma solo le forze. Forse la cosa sarà implementta, forse no :wink:

bit95:
ho visto un po le formule e mi sono sentito male XD,forse in un futuro posso imparare tutto, sono ancora giovane.

La parte matematica per la gestione della IMU, e anche quella per il controllo, è molto complessa, è indispensabile una preparazione universitaria specifica per poterla affrontare da zero, anche partendo da un qualcosa di già fatto sono lo stesso necessarie elevate competenze per poterci mettere mano.
Un consiglio, lascia perdere i sensori della Wii, sia il giro che l'accelerometro, non sono un gran che e danno svariati problemi di connessione, Lesto ne sa qualcosa :slight_smile: , con gli stessi soldi per acquistarli ci compri una vera imu 9 d.o.f. con sensori di gran lunga migliori, p.e. questa di Drotek.
Oppure aspetti un paio di settimane e acquisti la STM32F3 Discovery di ST, meno di 15 Euro, di cui parlavamo qualche decina di post dietro, hai una board con un processore ARM Cortex M3 completa di accelerometro, giroscopio magnetometro con buone prestazioni, ovviamente non ci puoi mettere sopra MultiWii, però c'è l'ottimo Multipilot 32 del quale faccio sicuramente il porting non appena la scheda è disponibile, ne ho tre in preordine.

confermo gli sbattimenti con i sensori wii, usano un sistema di comunicazione non standard che è stato hackerato, ma sempre di un hack si tratta. Senza contare che ormaii il motion plus non lo vedo in giro da un pò.

Usa una IMU vera, molto meglio la STM32F3 che anche io prevedo di comprare appena esce, magari è un pò grndina per un picolo quad, ma io devo compensare per altro :grin:

lesto:
la STM32F3 che anche io prevedo di comprare appena esce

Io ne ho tre in preordine da Digikey, dovrebbero spedirmele il 30/10, se la vuoi faccio ancora in tempo ad aggiungerne una, da loro costa 11.4 Euro (ivata).

Scusate ho cancellato il post vecchio per vedere se riesco a spiegarmi meglio. :frowning: vorrei realizzare un multicottero usando una imu con gyro acc ecct da collegare ad arduino. Vorrei sapere come riuscirò, una volta fatto questo, a gestire la stabilizzazione del quadricottero. Voglio dire: ci sono librerie che aiutano in questa impresa? E' complesso? Non voglio utilizzare una board già preconfigurata in quanto vorrei apportare delle modifiche (come la gestione delle eccezioni e cose di questo tipo) quindi vorrei che sia abbastanza personalizzabile. Cosa ne dite? Sto facendo la scelta giusta? Vi ringrazio per le eventuali risposte.

esistono vari progetti di codice già protnto per arduino, comela multiwii, la ardupilot, la multipilot, etc...

sono tutte open-source, quindi puoi modificare a tuo piacimento (certo non saperare sia facile)

lesto:
esistono vari progetti di codice già protnto per arduino, comela multiwii, la ardupilot, la multipilot, etc...

sono tutte open-source, quindi puoi modificare a tuo piacimento (certo non saperare sia facile)

Ho capito, e se invece montassi insieme a per esempio ardupilot, una scheda con arduino uno? Sarebbe piu semplice? Io vorrei per esempio quando sta per finire la batteria avviare una procedura che fa atterrare il quadricottero... Insomma vorrei personalizzarlo.. Che mi consigliate?

Hal90001:
Io vorrei per esempio quando sta per finire la batteria avviare una procedura che fa atterrare il quadricottero...

Scordatelo con i vari software amatoriali per quadri basati su Arduino, nessuno è in grado di farlo volare in modo autonomo, quasi tutti prevedono il controllo livello di carica della batteria e lo segnalano con vari modi, si va dai segnali luminosi a quelli acustici per finire con la telemetria sul display della radio.