Domanda

  

Possibile duplicato:
   Combina dati giroscopio e accelerometro

Ho letto un certo numero di articoli su filtri Kalman , ma sembrano esserci pochi buoni esempi di lavoro accessibili al pubblico per passare da un documento matematico al vero codice di lavoro.

Ho un sistema contenente un accelerometro a tre assi e un singolo giroscopio che misura la rotazione attorno a uno degli assi dell'accelerometro. Il sistema è progettato per essere tenuto da un essere umano e per la maggior parte del tempo il giroscopio misurerà la rotazione attorno al vettore di gravità o vicino ad esso. (Le persone che lavorano nello stesso settore probabilmente riconosceranno di cosa sto parlando;)) Mi rendo conto che questo è sottovalutato.

I giroscopi sembrano avere una propensione quasi costante leggermente diversa per ogni istanza del sistema. Come farei per codificare un filtro per utilizzare le letture dell'accelerometro per calibrare il giroscopio a volte quando il sistema è inclinato in modo che l'asse del giroscopio non sia collineare con la gravità e venga ruotato attorno all'asse del giroscopio? Sembra che ci dovrebbero essere abbastanza informazioni per farlo, ma viene detto loro che non esiste e perché dovrebbe essere una risposta anche :)

È stato utile?

Soluzione

nBot, un robot di bilanciamento a due ruote
Un po 'di informazioni e link su come questo autore ha scelto di risolvere il problema dell'equilibrio per il suo robot a due ruote.

Altri suggerimenti

Sembra che tu abbia due (o tre) problemi separati qui.

1. Non capisci davvero i filtri di Kalman e / o la matematica dietro di loro. Ciò renderà molto difficile implementare e utilizzare correttamente uno.

2. Sembra che tu non capisca la fisica di base coinvolta nel problema. (Fisica di base significa fisica di base, non fisica semplice, perché non è semplice.)

Ti suggerirei di provare a utilizzare un integratore molto più semplice, come un Runga-Kutta 4, per il quale puoi trovare molti libri con esempi sia dell'implementazione che dell'uso. Dovrebbe essere sufficiente per questo problema. (Se il cliente ha specificato Kalman, chiedi perché.)

Per quanto riguarda il motivo per cui il problema è sotto vincolo, mi sembra che non abbia modo di assicurare che il dispositivo sia tenuto in verticale e non sia possibile misurare l'orientamento effettivo. Dimentica il giroscopio per il momento e supponi che il dispositivo non possa essere ruotato attorno ad un asse verticale. Hai tre accelerometri, presumibilmente per stimare la posizione in 3D. Quindi, se vedi un'accelerazione nella direzione X, aumenti la stima di dove ti trovi nella direzione X. Allo stesso modo, se vedi un'accelerazione nella direzione Z (che presumo sia "su"), aumenti la stima di dove ti trovi nella direzione Z. Ora ruota leggermente il dispositivo, ad esempio di 30 gradi attorno all'asse Y. Ora, quando il dispositivo pensa che stai accelerando lungo la direzione X, il dispositivo sta effettivamente accelerando un po 'meno di quanto indicato in X e sta anche accelerando nella direzione Z. Quindi la tua stima della posizione non è corretta.

Le rotazioni sono molto più difficili da integrare (le equazioni sono più "rigide", che richiedono un passo temporale più piccolo per mantenere la precisione). Ma soffriranno problemi simili nel calcolare risposte errate se il dispositivo è inclinato (perché il dispositivo non può dire che è inclinato). Penserà che la rotazione attorno all'asse verticale sia maggiore o minore di quanto non sia in realtà, poiché parte della rotazione è in realtà attorno a un asse diverso (proprio come parte della parte di accelerazione era lungo un asse diverso).

< p>

Forse devi assumere un consulente (no, non sto cercando un lavoro) per assisterti nella formulazione della matematica.

Dato il tuo interesse per il filtro kalman, forse hai intenzione di aumentare i dati GPS con misurazioni inerziali. Informazioni sulla tua domanda:

  

" Come potrei fare per codificare un filtro   per usare le letture dell'accelerometro per   calibrare il giroscopio a volte quando il   il sistema è inclinato così come l'asse del giroscopio   non collineare con la gravità, ed è   essendo ruotato attorno all'asse del giroscopio? esso   sembra che ci dovrebbe essere abbastanza   informazioni per farlo "

Sembra un allineamento giroscopico. Supponendo che si stia eseguendo una calibrazione di fabbrica e che l'unità sia su un banco, si sarà in grado di misurare indipendentemente l'allineamento. Quindi esegui il codice di livellamento che scriverai ed esegui il backout dell'errore di polarizzazione del giroscopio dalla differenza tra la misura e gli allineamenti giroscopici.

Se vuoi aggiornare la deriva del giroscopio al volo, avrai bisogno del filtro kalman.

Per quanto riguarda l'implementazione, raccomando il capitolo 7, GPS e integrazione inerziale di Teoria e applicazioni del sistema di posizione globale vol 2 ha un eccellente background sull'argomento. Ha teoria e matematica, ma nessun codice sorgente.

Ho trovato buoni articoli sull'uso di accelerometri e giroscopi nella navigazione su questo blog . La parte sul filtro Kalman è un po 'confusa, ma sembra che ci siano esempi di codice.

Troverai anche risorse generali sul filtro Kalman su http://academic.csuohio.edu /simond/publications.html . L'articolo di cui alla (8) è una buona introduzione, non troppo spaventosa alla matematica dietro i filtri di Kalman.

Un gentiluomo in Danimarca ha appena pubblicato un esempio funzionante della derivazione di un filtro Kalman per risolvere quasi esattamente questo problema.

Se ti stai sviluppando per Propeller uController, allora lo scambio di oggetti Parallax ha del codice. Ottima domanda ;-)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top