Archivi tag: filtro kalman quadricottero

Come filtrare i dati dal IMU

Nel precedente post puoi trovare come leggere i dati dal sensore.

Una nota: i dati usati inquesta fase sono presi da un IMU non ancora montato sul quadricottero,per evitare di sovrapporre troppi fattori. Testero l effetto delle vibrazioni dei motori in una seconda fase.

Come descritto l accelerometro ritorna dati affetti da rumore.
Per ridurre questo rumore e’ necessario introdurre dei filtri che addolciscano i risultati.
Nell IMU che sto usando e’ gia presente un filtro passabasso che lavora nel range 260Hz -5Hz.
Per avere un sw generico ho comunque sviluppato un esempio di filtro.

Ho usato alcune informazioni preliminari da wikipedia.Qui il link
Il parametro RC deve essere variato a seconda del rumore presente.

lp_filter1

Un altro interessante approccio usato spesso e’ il filtro di Kalman, specialmente quando ho diversi parametri fra loro legati da un modello matematico noto.

Per il nostro caso particolare ,ho trovato un semplicissimo e chiaro esempio di come sviluppare il filtro di Kalman : Kalman filter for undergrads

Questo descrive il caso di Variabile singola. Nel caso nostro infatti ACC x,ACC y e ACC z non hanno una relazione fra loro.

Nel mio codice ho semplicemente trasposto al caso di “3 variabili singole”.

Nella foto successiva si puo vedere il filtri di Kalman applicato.Interessante notare che tarando opportunamente i parametri di Q si ottiene un risultato comparabile al filtro passabasso.

lp_filter2

Ho deciso di mantenere comunque questo sviluppo nel progetto dal momento che potrei tentare di applicarlo anche alle posizioni angolari, creando un modello matematico del quadricottero.

Qui e’ possibile scaricare il codice IMU_test2 che include i 2 tipi di filtri.

Nota che potrebbe essere necessario istallare la libreria di python numpy sul raspberry pi.

apt-get install python-numpy

apt-get install python-numpy-doc

In conclusione , col filtro (hw da IMU e/o sw da questo codice ) riesco a ridurre i disturbi dell ACC. Nel prossimo post cerchero di ridurre la deriva del GYRO drift problem tramite la “fusione ” dei dati di ACC e GYRO.

Qui un altro interessante link per comprendere come lavora kalman filter: Kalman filter for dummies