BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   RX->Arduino->Accelerometer+gyro (https://www.baronerosso.it/forum/circuiti-elettronici/370657-rx-arduino-accelerometer-gyro.html)

aero330 01 settembre 17 23:02

Per la mia tesi ho dovuto anche usare un raspberry con accelerometri, giroscopi e magnetometri montati a bordo per poi replicare i movimenti su pc con Matlab....per quanto su internet si riesca a trovare qualcosa, la matematica che ci sta dietro è alquanto complessa. Per il mio progetto ho trovato questo articolo che può darti qualche spunto, in cui vengonon mostrati i calcoli e le formule per arrivare a stimare gli angoli di pitch, roll e azimuth con solo accelerometro e magneometro (nel modello con gli apparati radio a bordo non è proprio idoneo quest'ultimo).
Utilizzando le formule opportune sono riuscito ad ottenere buoni risultati (anche se non era questo il focus della tesi) ma comunque utili per quello che mi serviva: unica condizione è che la scheda con a bordo i sensori deve muoversi molto lentamente perchè non ho compensato con i dati del giroscopio (mancanza di tempo)

Come dice El Nonino i dati vanno gestiti in modo adeguato con filtri (tipo Kalman) e quaternioni e secondo me non è semplice...ma comunque fattibile!!

devCad 02 settembre 17 12:47

Citazione:

Originalmente inviato da ElNonino (Messaggio 5058994)
Non ho chiaro cosa intendi per "logica Hold" se ti riferisci alla calibrazione a terra del velivolo come si fa con i multifrulli ruotandoli sui tre assi) e non sono nemmeno molto esperto di piattaforme inerziali però direi che interpolando i 3 assi di un giroscopio sia possibile, in assenza di variazioni di velocità significative da cui accelerazioni modeste, stabilire nello spazio l'orientamento di un piano.

Se poniamo riferiti all'accelerometro: asse X = rollio, asse Y = beccheggio , asse Z verticale anche in caso di virata a coltello avremo che l' asse Z indicherà l'accelerazione centrifuga (con segno opposto in caso di virata rovescia) e l'asse X l'accelerazione di gravità, mentre l'asse Y il relativo angolo di beccheggio.

Chiaramente è necessario filtrare i segnali dell'accelerometro applicando opportuni algoritmi, se già non li conosci dai un occhiata ai quaternioni.

IMHO.

:yeah:

La logica di tipo Hold e' quella che facendo di continuo l'integrale dei dati ricevuti da un giroscopio (quindi un accelerometro non lineare, ma angolare) calcola continuamente l'angolo di deviazione su quell'asse rispetto all'angolo di reset o di ultimo comando applicato.
Questo funziona solo su sensori di tipo giroscopico e non su accelerometri lineari.
I primi giroscopi per elicotteri rc si limitavano infatti a correggere l'imbardata istantanea e richiedevano un preciso trimmaggio. Tutti quelli meccanici ad esempio erano di questo tipo.
Poi sono arrivati quelli con logica Hold, in cui si poteva scegliere di 'tenere la coda fissa all'ultimo comando inviato'. Con questi non serve il trimmaggio, in quanto applicano a tempo indefinito la correzione necessaria per riportare all'ultimo angolo specificato dal comando ricevuto.
Un giroscopio di questo tipo lo si vede subito, in quanto se muoviamo manualmente la coda su un elicottero fermo posato a terra, il servo manda il comando lentamente ma inesorabilmente a fondo corsa, invece di dare un semplice impulso di correzione.

Sono arrivato a dire questo perche' l'asse di rollio di un aereo (caso preso in esame all'origine di questa discussione) e' analogo all'asse di imbardata di un elicottero, e per quel caso esiste una marea di documentazione su come affrontarlo.
Gli accelerometri lineari li vedo estremamenti inadatti allo scopo, anche perche', come gia' detto, su un aereo in virata corretta anche a 45 gradi indicherebbero inclinazione zero rispetto a terra (vedi pendolino in cabina).
Per calcolare l'angolo dovrebbero aggiungere l'incremento di componente verticale (riferirita al sistema di riferimento dell'aereo), ma poi si andrebbe ad incasinare con una eventuale accelerazione reale verticale, e quindi vi sono comunque piu' gradi di liberta' che valori ricevuti. Qualcosa di simile all'esperimento ideale base di Einstein sulle misurazioni fisiche possibili all'interno di un ascensore posto in un campo gravitazionale...
Naturalmente tutto quanto detto rispecchia il mio pensiero e quello che ho capito studiando questa problematica negli ultimi 15 anni.
I quaternioni li conosco piuttosto bene, sono il metodo di calcolo base che si usa nelle applicazioni di grafica 3D, ma non li vedo molto utili per risolvere i problemi descritti sopra.

ElNonino 02 settembre 17 14:13

Citazione:

Originalmente inviato da devCad (Messaggio 5059138)
La logica di tipo Hold e' quella che facendo di continuo l'integrale dei dati ricevuti da un giroscopio (quindi un accelerometro non lineare, ma angolare) calcola continuamente l'angolo di deviazione su quell'asse rispetto all'angolo di reset o di ultimo comando applicato.
Questo funziona solo su sensori di tipo giroscopico e non su accelerometri lineari.
I primi giroscopi per elicotteri rc si limitavano infatti a correggere l'imbardata istantanea e richiedevano un preciso trimmaggio. Tutti quelli meccanici ad esempio erano di questo tipo.
Poi sono arrivati quelli con logica Hold, in cui si poteva scegliere di 'tenere la coda fissa all'ultimo comando inviato'. Con questi non serve il trimmaggio, in quanto applicano a tempo indefinito la correzione necessaria per riportare all'ultimo angolo specificato dal comando ricevuto.
Un giroscopio di questo tipo lo si vede subito, in quanto se muoviamo manualmente la coda su un elicottero fermo posato a terra, il servo manda il comando lentamente ma inesorabilmente a fondo corsa, invece di dare un semplice impulso di correzione.

Sono arrivato a dire questo perche' l'asse di rollio di un aereo (caso preso in esame all'origine di questa discussione) e' analogo all'asse di imbardata di un elicottero, e per quel caso esiste una marea di documentazione su come affrontarlo.
Gli accelerometri lineari li vedo estremamenti inadatti allo scopo, anche perche', come gia' detto, su un aereo in virata corretta anche a 45 gradi indicherebbero inclinazione zero rispetto a terra (vedi pendolino in cabina).
Per calcolare l'angolo dovrebbero aggiungere l'incremento di componente verticale (riferirita al sistema di riferimento dell'aereo), ma poi si andrebbe ad incasinare con una eventuale accelerazione reale verticale, e quindi vi sono comunque piu' gradi di liberta' che valori ricevuti. Qualcosa di simile all'esperimento ideale base di Einstein sulle misurazioni fisiche possibili all'interno di un ascensore posto in un campo gravitazionale...
Naturalmente tutto quanto detto rispecchia il mio pensiero e quello che ho capito studiando questa problematica negli ultimi 15 anni.
I quaternioni li conosco piuttosto bene, sono il metodo di calcolo base che si usa nelle applicazioni di grafica 3D, ma non li vedo molto utili per risolvere i problemi descritti sopra.

Capito cosa intendi per logica Hold, la conosco benino visto che di elicotteri ne ho un discreto numero da molti anni e ci ho volato/volo spesso.....

Dissento invece sul resto, un accelerometro a 3 assi è sempre in grado di indicare l'inclinazione sull'asse di rollio.

In volo rettilineo dritto a quota costante, con ali livellate l'asse z dell' accelerometro misurerà l'accelerazione di gravità con segno positivo, gli assi x ed y avranno uscita pari a 0.

Nelle stesse condizioni ma in volo rovescio l'asse z misurerà l'accelerazione di gravità ma con segno negativo, gli altri assi daranno 0.

in caso di virata a velocità costante con il resto nelle stesse condizioni precedenti (quindi ignorando il valore momentaneo di accelerazione) l'asse z indicherà l'accelerazione centrifuga mentre quello x restituirà un valore positivo o negativo a seconda del verso della virata.

Lo stesso concetto si applica per l'asse y, quindi interpolando i valori dei tre assi si conoscerà l'esatta inclinazione del piano del velivolo nello spazio.

Campionando i segnali velocemente rispetto alla velocità del mezzo e calcolando la derivata prima e seconda sui tre assi è possibile ottenere la posizione anche in presenza di accelerazioni, se poi si fondono i dati dell'accelerometro con quelli di un giroscopio a tre assi.....

Per inciso nel mio sistema di antirotazione per le barelle (brevettato) uso un accelerometro a 3 assi ed un giroscopio ad un asse e posso garantirti che funziona sia durante le operazioni in hovering che in volo traslato.

Utilizzo da nove anni un semplice accelerometro a 3 assi anche per misurare l'inclinazione verticale dei pannelli FV del mio sistema di Suntracking in baita, onde poterli posizionare ad angoli ben precisi in caso di vento, neve o particolari condizioni di insolazione.

:yeah:

ElNonino 02 settembre 17 16:01

Addendum...
 
Chiaramente per mantenere una velocità di rotazione nulla intorno ad un asse basta un giroscopio e questo vale sia per la rotazione della coda di un elicottero che per un qualsiasi asse di un velivolo, è la filosofia utilizzata dai vari stabilizzatori Safe o 3GX.

Il miglior risultato lo si ottiene chiaramente, come già detto, con gyro + acc a 3 assi.

:yeah:

devCad 03 settembre 17 00:24

Citazione:

Originalmente inviato da ElNonino (Messaggio 5059154)
...
Dissento invece sul resto, un accelerometro a 3 assi è sempre in grado di indicare l'inclinazione sull'asse di rollio.
...

Ok.

Se hai 3 accelerometri lineari che ti danno questi valori:
x = 0.0 g
y = 0.0 g
z = 1.2 g

come stabilisci se il modello e' in virata o sta accelerando verso l'alto?

Io non saprei dirlo.

sub53 03 settembre 17 12:12

Citazione:

Originalmente inviato da devCad (Messaggio 5059240)
Ok.

Se hai 3 accelerometri lineari che ti danno questi valori:
x = 0.0 g
y = 0.0 g
z = 1.2 g

come stabilisci se il modello e' in virata o sta accelerando verso l'alto?

Io non saprei dirlo.

Sono davvero curioso di leggere la soluzione, ho giocato/lavorato un poco sulla stabilizzazione e per la mia, modesta, esperienza il gyro è essenziale ma sono sempre pronto ad imparare qualcosa di nuovo !

ElNonino 09 settembre 17 15:52

Citazione:

Originalmente inviato da devCad (Messaggio 5059240)
Ok.

Se hai 3 accelerometri lineari che ti danno questi valori:
x = 0.0 g
y = 0.0 g
z = 1.2 g

come stabilisci se il modello e' in virata o sta accelerando verso l'alto?

Io non saprei dirlo.

Chiaramente i 3 valori sono quelli iniziali con il modello in piano e fermo, e da questi si parte a campionarli ad intervallo di tempo costante.

Allora se accelera verso l'alto con ali in piano ci sarà solo una variazione iniziale dell'asse z che andrà ad azzerarsi quando il rateo di salita (velocità asse z) diverrà costante ma avendo integrato i valori letti potremo ricavare la velocità ed in caso di variazioni della lettura sapremo anche se sta in hovering o se casca.....

In virata piatta avremo che l'asse x avrà una variazione iniziale per poi stabilizzarsi su un valore proporzionale all'accelerazione centrifuga (con segno diverso se cw o ccw), inoltre anche l'asse y avrà variazioni iniziali proporzionali al verso della virata mentre z resterà costante; nella classica virata avremo che varieranno tutti e tre gli assi e queste variazioni, diverse, le troveremo anche in virata con spirale in salita/discesa.

La similitudine con un pendolo ad infiniti gradi di libertà forse non si adatta bene a rappresentare un accelerometro a 3 assi, forse è più adatto immaginarlo come 3 pendoli vincolati con un solo grado di libertà.

E' chiaro che per interpretare i dati e quindi ricavare l'assetto del velivolo e la direzione e velocità del suo moto è necessaria tanta matematica (meglio se in floating point....) e potrebbero esserci casi particolari in cui il risultato non è univoco.

Un grosso limite degli accelerometri è quello dato dalla non linearità degli stessi (ha andamento sinusoidale e per avere valori precisi già solo di angolo statico richiede l'uso di tabelle di linearizzazione per ogni singolo asse ed interpolazione).

Su Wiki si trovano sintetizzate formule interessanti: https://it.wikipedia.org/wiki/Equazione_del_moto che sono utilizzate/implementate anche in sensori evoluti come questo (anche se definito obsoleto): ADIS16305 Datasheet and Product Info | Analog Devices


:yeah:

sub53 10 settembre 17 18:43

Citazione:

Originalmente inviato da ElNonino (Messaggio 5060364)
Chiaramente i 3 valori sono quelli iniziali con il modello in piano e fermo, e da questi si parte a campionarli ad intervallo di tempo costante.

Allora se accelera verso l'alto con ali in piano ci sarà solo una variazione iniziale dell'asse z che andrà ad azzerarsi quando il rateo di salita (velocità asse z) diverrà costante ma avendo integrato i valori letti potremo ricavare la velocità ed in caso di variazioni della lettura sapremo anche se sta in hovering o se casca.....

In virata piatta avremo che l'asse x avrà una variazione iniziale per poi stabilizzarsi su un valore proporzionale all'accelerazione centrifuga (con segno diverso se cw o ccw), inoltre anche l'asse y avrà variazioni iniziali proporzionali al verso della virata mentre z resterà costante; nella classica virata avremo che varieranno tutti e tre gli assi e queste variazioni, diverse, le troveremo anche in virata con spirale in salita/discesa.

La similitudine con un pendolo ad infiniti gradi di libertà forse non si adatta bene a rappresentare un accelerometro a 3 assi, forse è più adatto immaginarlo come 3 pendoli vincolati con un solo grado di libertà.

E' chiaro che per interpretare i dati e quindi ricavare l'assetto del velivolo e la direzione e velocità del suo moto è necessaria tanta matematica (meglio se in floating point....) e potrebbero esserci casi particolari in cui il risultato non è univoco.

Un grosso limite degli accelerometri è quello dato dalla non linearità degli stessi (ha andamento sinusoidale e per avere valori precisi già solo di angolo statico richiede l'uso di tabelle di linearizzazione per ogni singolo asse ed interpolazione).

Su Wiki si trovano sintetizzate formule interessanti: https://it.wikipedia.org/wiki/Equazione_del_moto che sono utilizzate/implementate anche in sensori evoluti come questo (anche se definito obsoleto): ADIS16305 Datasheet and Product Info | Analog Devices


:yeah:

Quindi concordi che alla fine è più pratico usare i gyro :wink:

ElNonino 10 settembre 17 19:32

Citazione:

Originalmente inviato da sub53 (Messaggio 5060520)
Quindi concordi che alla fine è più pratico usare i gyro :wink:

Anche con i Gyro devi usare tanta matematica, per sapere l'angolo d'inclinazione su un asse devi partire da una velocità angolare e dal tempo, con gli accelerometri usa un accelerazione ed il tempo, in un caso integri nell'altro differenzi.

L'accelerometro in più può fornire anche una velocità stimata sull'asse del moto mentre il gyro no perchè lavora sulla velocità angolare quindi se vuoi tenere ferma la coda di un eli ok per gyro se vuoi tenere in piano e fermo un eli od un multirotore meglio l'accelerometro.

Nel mio sistema antirotazione delle barelle uso quella piattaforma inerziale citata perchè con due assi dell'accelerometro compenso l'inclinazione della barella sull'asse di rollio (varia a seconda del peso del soccorritore e se dx o sx) indispensabile affinchè l'ala in assenza di rotazione resti verticale, mentre il gyro mi permette di contrastare e azzerare la rotazione indotta dal flusso circolare rotorico dell'elicottero.

:yeah:

sub53 11 settembre 17 01:54

Citazione:

Originalmente inviato da ElNonino (Messaggio 5060531)
Anche con i Gyro devi usare tanta matematica, per sapere l'angolo d'inclinazione su un asse devi partire da una velocità angolare e dal tempo, con gli accelerometri usa un accelerazione ed il tempo, in un caso integri nell'altro differenzi.

L'accelerometro in più può fornire anche una velocità stimata sull'asse del moto mentre il gyro no perchè lavora sulla velocità angolare quindi se vuoi tenere ferma la coda di un eli ok per gyro se vuoi tenere in piano e fermo un eli od un multirotore meglio l'accelerometro.

Nel mio sistema antirotazione delle barelle uso quella piattaforma inerziale citata perchè con due assi dell'accelerometro compenso l'inclinazione della barella sull'asse di rollio (varia a seconda del peso del soccorritore e se dx o sx) indispensabile affinchè l'ala in assenza di rotazione resti verticale, mentre il gyro mi permette di contrastare e azzerare la rotazione indotta dal flusso circolare rotorico dell'elicottero.

:yeah:

La soluzione migliore e più semplice, per me e per la mia esperienza ovviamente, sono 3 gyro + 3 accelerometri... ed eventualmente un magnetometro a 3 assi, per correggere gli errori nel lungo periodo sulla rotazione dell'asse verticale, ma sicuramente ci sono scelte migliori .... forse :wink:


Tutti gli orari sono GMT +2. Adesso sono le 21:44.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002