2011-01-20 11 views
5

Ho visto molti esempi sul filtraggio dei valori di Accelermeter, per cancellare la gravità (filtro passa-alto).Filtro accelerometro Android?

Ma la maggior parte di questi erano di primo ordine, che si dice sia semplice, ma laggy e non il migliore (anche se non so nulla dei filtri o DSP).

Qualcuno qui ha detto che esiste la soluzione migliore utilizzata in DSP per rilevare il movimento. Purtroppo non posso nemmeno immaginare cosa sarebbe, dato che sono completamente estraneo al campo.

Spero che qualcuno possa dire almeno il tipo di filtri che possono essere utilizzati quando si ha a che fare con il sensore. Naturalmente, anche una breve introduzione all'algoritmo specifico sarà molto soddisfatto :)

Grazie in anticipo.

risposta

1

Si desidera utilizzare la classe SensorListener() di Android. Ad esempio, "The Schwartz Unsheathed" è un progetto Android open source ospitato su Google Code che sembra essere abbastanza utile (scritto da Clark Scheff).

È possibile controllare la sua origine tramite SVN http://code.google.com/p/the-schwartz-unsheathed/source/checkout o semplicemente sfogliarlo sul web. La fonte è suddivisa in un'attività (TheSchwartz.java) e una vista (GraphView.java). GraphView.java contiene le classi SensorListener() ad onSensorChanged() in cui si trova l'elaborazione dell'accelerometro. Le linee 284 e 285:

magnitude = (float)Math.sqrt(values[0]*values[0]+values[1]*values[1]+values[2]*values[2]); 
magnitude = Math.abs(magnitude - SensorManager.GRAVITY_EARTH); 

Il valore di magnitude viene valutato per nessun movimento, un "hit" o un "swing" del telefono Android. Mi rendo conto che questo non filtra i dati in un senso di elaborazione del segnale, ma mostra un modo per classificare i dati del sensore. Spero che sia d'aiuto.

2

la guida DSP è ciò che stai cercando. Fornisce sia la "teoria" di base che la matematica alla base dell'elaborazione del segnale digitale e delle opere.

http://www.dspguide.com/ch14.htm Questo è un buon punto di partenza

Check it out.

E per esperienza personale, un filtro del 1 ° ordine sarà "buono" abbastanza per la maggior parte delle applicazioni semplici. Sebbene ciò dipenda completamente dall'applicazione specifica

4

È possibile provare un filtro FIR o IIR di ordine superiore che potrebbe fornire una transizione del dominio della frequenza più nitida. Ma un metodo più avanzato consiste nell'utilizzare un filtro adattivo di Kalman. Ecco one article on accelerometers and Kalman filters.

+0

Grazie ragazzi! Le guide sono state molto utili. –

Problemi correlati