Acelerómetro Móvil Promedio


Un filtro IIR sencillo, de un solo polo, paso bajo, recursivo es rápido y fácil de implementar, p. Xf, yf son las señales de salida filtradas, y k determina la constante de tiempo de los filtros (típicamente un valor entre 0,9 y 0,9999, donde un k más grande significa un tiempo más largo tiempo constante). Puede determinar k empíricamente, o si conoce la frecuencia de corte requerida, Fc. Entonces puede usar la fórmula: donde Fs es la tasa de muestreo. Observe que xf, yf son los valores previos de la señal de salida en el RHS y los nuevos valores de salida en el LHS de la expresión anterior. Obsérvese también que asumimos aquí que va a muestrear las señales del acelerómetro a intervalos de tiempo regulares, p. Cada 10 ms. La constante de tiempo será una función tanto de k como de este intervalo de muestreo. He escrito una Actividad simple que es un SensorEventListener para Sensor. TYPEACCELEROMETER. En mi onSensorChanged (evento SensorEvent) sólo recojo los valores en formato X, Y, Z y los escribo en un archivo. Agregado a este X, Y, Z es una etiqueta, la etiqueta es específica a la actividad que estoy realizando. Por lo que su X, Y, Z, etiqueta Como este i obtener mi perfil de actividad. Desea tener sugerencias sobre qué operaciones realizar después de la recopilación de datos para eliminar el ruido y obtener los mejores datos para una actividad. La intención principal de esta recopilación de datos es construir una aplicación de detección de actividad del usuario utilizando la biblioteca de redes neuronales (NeuroPh para Android). Preguntó el 6 de mayo 13 en 4:49 Apenas para la diversión escribí un podómetro hace unas pocas semanas, y habría podido detectar las tres actividades que usted mencionó. Id haga las siguientes observaciones: Además de Sensor. TYPEACCELEROMETER. Android también tiene Sensor. TYPEGRAVITY y Sensor. TYPELINEARACCELERATION. Si registra los valores de los tres, observe que los valores de TYPEACCELEROMETER siempre son iguales a la suma de los valores de TYPEGRAVITY y TYPELINEARACCELERATION. El método onSensorChanged () le da primero TYPEACCELEROMETER, seguido de TYPEGRAVITY y TYPELINEARACCELERATION que son los resultados de su metodología interna de dividir las lecturas del acelerómetro en gravedad y la aceleración que no es debido a la gravedad. Dado que estás interesado en la aceleración debido a las actividades, en lugar de la aceleración debido a la gravedad, puede encontrar TYPELINEARACCELERATION es mejor para lo que necesita. Independientemente de los sensores que utilice, la X, Y, Z que esté midiendo dependerá de la orientación del dispositivo. Sin embargo, para detectar las actividades que usted menciona, el resultado no puede depender de, p. Si el usuario mantiene el dispositivo en posición vertical o horizontal, o si el dispositivo es plano o vertical, por lo que los valores individuales de X, Y y Z no serán de ningún uso. En lugar youll tiene que mirar la longitud del vector, es decir sqrt (X XY YZ Z) que es independiente de la orientación del dispositivo. Sólo es necesario suavizar los datos si se está alimentando en algo que es sensible al ruido. En su lugar, Id decir que los datos son los datos, y obtendrá los mejores resultados si utiliza mecanismos que no son sensibles al ruido y, por tanto, no necesitan los datos para ser suavizado. Por definición, suavizar es descartar datos. Usted desea diseñar un algoritmo que toma datos ruidosos en en un extremo y las salidas la actividad actual en el otro extremo, así que no prejuzgan si su necesario incluir la suavización como parte de ese algoritmo Aquí está un gráfico de sqrt (X XY YZ Z) De Sensor. TYPE ACCELEROMETER que grabé cuando estaba construyendo mi podómetro. Las gráficas muestran las lecturas medidas cuando caminé durante 100 pasos. La línea verde es sqrt (X XY YZZ), la línea azul es una media móvil exponencialmente ponderada de la línea verde que me da el nivel medio de la línea verde, y la línea roja muestra mi algoritmo contando los pasos. Pude contar los pasos sólo buscando los máximos y mínimos y cuando la línea verde cruza la línea azul. No utilicé ningún alisamiento o transformaciones rápidas de Fourier. En mi experiencia, para este tipo de cosas los algoritmos más simples a menudo funcionan mejor, porque aunque los complejos podrían funcionar en algunas situaciones es más difícil predecir cómo se comportarán en todas las situaciones. Y la robustez es una característica vital de cualquier algoritmo :-). Respondió May 14 13 at 9:32 El caminar es el regular arriba / abajo con picos y vaguadas como se muestra. Estacionario es cuando no hay ningún movimiento en absoluto lejos de la media, y la mano es cuando hay movimientos irregulares que no siguen el patrón de marcha. En cualquier caso, si sólo mide un sensor y no desea que sus resultados sean sensibles a cómo se mantiene el dispositivo, sqrt (X2Y2Z2) es la única entrada con la que puede trabajar. Para obtener más información necesitará utilizar otros sensores. Ndash Estocásticamente 14 de mayo 13 a las 18:39 Esto suena como un problema interesante ¿Ha trazado sus datos en función del tiempo para tener una idea de ello, para ver qué tipo de ruido se está tratando y para ayudar a decidir cómo puede preprocesar Sus datos para la entrada al detector Id comienzan con líneas para cada actividad: Axa Ay Az Vx Vy Vz (aproximada calculando el área de trapecios formada por sus puntos de datos). Etc Tal vez usted puede resolver la orientación del teléfono tratando de detectar la gravedad, a continuación, girar sus vectores a una orientación estándar (por ejemplo, el eje Z positivo hacia arriba). Si puedes hacer eso, entonces los diferentes ejes pueden ser más significativos. Por ejemplo, caminar (en el bolsillo) tendería a tener una velocidad en el plano horizontal, que se podría distinguir de caminar (en la mano) por el movimiento en el plano vertical. En cuanto a los filtros, si los datos aparecen ruidosos, un simple punto de partida es aplicar una media móvil para suavizarla. Esta es una técnica común para los datos de sensores en general: Además, este post parece pertinente a su pregunta: Cosas identificadas por mí: Los datos tienen que ser preprocesados ​​como y cómo lo necesitas para ser, En mi caso sólo quiero 3 entradas y Una salida Los datos tienen que ser sometidos a suavizado (suavizado de cinco puntos o cualquier otra técnica que le acomode mejor) Referencia. De modo que el ruido se filtra hacia fuera (no completamente sin embargo). El promedio móvil es una de las técnicas Los datos lineales serían buenos, porque usted no tiene ninguna idea cómo los datos fueron probados, Utilice la interpolación para ayudarle en Linearizing los datos Finalmente utilice FFT (transformación rápida de Fourier) para extraer la receta fuera del plato , Es decir, para extraer las características de su conjunto de datos respondió a su respuesta 2016 Stack Exchange, IncI encontrar el siguiente código para una implementación simple de un filtro de paso bajo. Define alpha 0.1 accelX (acceleration. x alpha) (accelX (1.0 - alfa)) He estado experimentando con el valor de alpha. Pero quiero saber exactamente cómo podemos encontrar este valor para los datos del acelerómetro (en Android). Entiendo que necesitaríamos la frecuencia de muestreo y la frecuencia de corte. ¿Cómo puedo encontrar la frecuencia de corte para este tipo de datos (supongo que esto implica el modelado de ruido y la búsqueda de su rango de frecuencia Si es así cómo debo hacerlo) preguntó Mar 13 13 a las 5:52 Es una media móvil autorregresiva - un infinito Filtro de respuesta al impulso. Comience con la ecuación anterior, tome la transformada z, y que da la respuesta de frecuencia. No tiene nada que ver con el modelo de ruido. Aquí está la respuesta de la frecuencia para el alfa 0.9, el eje de la frecuencia se escala de 0 a su frecuencia de Nyquist (mitad de su freq de la muestra) generada en Octave por freqz (0.9, 1 -0.1) Lo que usted tiene es la ecuación para un filtro de paso simple . Este es el equivalente discreto del filtro analógico R-C. Mientras que su ecuación es correcta, me gusta escribirla como FILT lt - FILT FF (NEW - FILT) porque esto es un poco más cómodo de realizar en un microcontrolador en la mayoría de los casos. Por lo general, la vista de dominio de tiempo del filtro es más directamente utilizable cuando se implementa uno de estos en un microcontrolador. La mayor parte del tiempo usted está más preocupado por la frecuencia de muestreo y el tiempo de respuesta que el rolloff de frecuencia. Sin embargo, este último viene, por lo que he construido algunas instalaciones para manipular esto en mi preprocesador PIC. El fragmento de la documentación de las dos funciones en línea relevantes es: He trabajado la matemáticas en el momento en que escribí el código para esas funciones, por lo que sólo se refieren a que en lugar de volver a derivar ahora: La matemática real de la función FFFREQ es Sólo dos líneas de código, para que pueda averiguarlo. Parece que esto se basa en algunas definiciones en la parte superior del archivo: Si usted está haciendo esto en un PIC, es posible que desee utilizar el preprocesador. Se incluye en la publicación PIC Development Tools en embedinc / pic / dload. htm. El código fuente del preprocesador se incluye en el código fuente del Host y todo se libera. Respondió Mar 13 13 at 12:45

Comments

Popular posts from this blog

Sistema Comercial Vincenti Malverti

Exclusión De Responsabilidad Del Sistema De Negociación

Clases De Comercio De Divisas Malasia