¿Cómo puedo encontrar las coordenadas de un acelerómetro? [cerrado]

-3

Tengo un acelerómetro Arduino y un ADXL335, todo lo que quiero es encontrar las coordenadas solo (x e y) (y luego también calcular el número de pasos), entiendo que el acelerómetro detecta el movimiento y da un valor analógico correspondiente al cambio en velocidad es decir, aceleración. Sin embargo, la aceleración es una doble derivada de la distancia, así que necesito encontrar la integral doble de la lectura del acelerómetro. ¿Cómo implemento esto con un código? Cualquier fragmento de código sería útil. Lo siento, estoy preguntando por un problema específico ya que no encuentro mucha información en google.

    
pregunta thebugger

2 respuestas

1

No podrá obtener una posición muy precisa en función de los componentes que haya elegido. Sin embargo, puede obtener cierta información y, dentro de las tolerancias de estos componentes, puede obtener cierta información sobre la posición.

El acelerómetro emitirá la aceleración del objeto en movimiento. Suponiendo que lo estés utilizando en la Tierra, también generará la aceleración de la gravedad.

Lo primero que tienes que hacer es eliminar la gravedad, para que puedas obtener la aceleración del objeto. Esto es imposible de hacer sin información adicional (por lo que muchos dispositivos también incluyen un giroscopio), sin embargo, se puede desarrollar una aproximación razonable utilizando un filtro de paso alto. En general, la gravedad permanecerá en la misma dirección, equivaldrá a 1 G de fuerza y no cambiará rápidamente, a menos que intente que el objeto ruede, lance o gire mientras se mueve, y si ese es el caso, es mejor que agarre un giroscopio como bien.

Sin embargo, un filtro de paso alto es solo una aproximación, por lo que está perdiendo más datos y resolución al hacerlo de esta manera "barata", pero si recién está comenzando, es fácil hacerlo y puede intentarlo de manera más compleja. Métodos (seguimiento y resta de gravedad) más tarde. Echa un vistazo a los filtros IIR para este trabajo. Barato y fácil, otra vez.

Una vez que has filtrado las bajas frecuencias del acelerómetro, te quedas, idealmente, solo con la aceleración del objeto.

En este punto, debería estar tratando con vectores, pero nuevamente simplifiquemos las cosas (y nuevamente, perderá algunos datos / resolución / precisión al hacerlo, pero comience con facilidad y mejore de manera incremental donde lo necesite).

Si observa solo un eje, la aceleración es el cambio en la velocidad a lo largo del tiempo. Entonces, para encontrar la velocidad del objeto, debe acumular la salida del acelerómetro en una variable a una tasa de muestreo determinada. Periódicamente puedes leer la variable, restablecerla y llamar a tu velocidad. Las unidades de velocidad dependerán de su acelerómetro, la conversión de ADC, la frecuencia de muestreo y la frecuencia con la que lea y descanse la variable. Otra pregunta podría ser apropiada si necesita ayuda con las matemáticas, pero es una pregunta importante, por lo que puede dividirla en partes más pequeñas. Esta es una forma muy simple de integración, una vez más, hay formas más complejas de hacerlo que podrían retener más datos que este método.

Una vez que tenga la velocidad, puede acumular eso, y leer y restablecer periódicamente esa variable. Esto luego se convierte en su distancia, y si acumula eso con el tiempo, encontrará una posición.

Ahora esto va a ser un mal posicionamiento debido a una serie de problemas, el mayor de los cuales es el ruido. Esto se puede mitigar utilizando el filtrado de paso bajo (a veces los acelerómetros incluyen el filtrado para esto), pero nuevamente se pierden algunos datos cuando se hace esto.

Incluso si no tuvieras ningún ruido, no obtendrás información de posicionamiento muy precisa de esto. Tratar de rastrear su ubicación en un centro comercial, por ejemplo, puede darle una idea de en qué cuadrante del centro comercial se encuentra, pero no se acercará a decirle a qué tienda está frente, y cuanto más tiempo están "rastreando" cuanto más lejos de la realidad estarán los resultados.

Lo que estás tratando de construir es un sistema de reconocimiento directo, y la mayoría de estos sistemas incluyen otros sensores, y lo más importante, una forma de restablecer con frecuencia su sistema de posicionamiento interno a las coordenadas reales, a menudo utilizando un sistema complejo de matemáticas como un filtro kalman y GPS, o WiFi, o incluso sistemas de navegación celestes para proporcionar una buena información de posicionamiento durante largos períodos de tiempo.

En otras palabras, es un ejercicio interesante, pero en última instancia, sin una corrección constante, este sistema no puede utilizarse para posicionarse durante períodos de tiempo de más de unos pocos minutos.

    
respondido por el Adam Davis
0

Los acelerómetros no son muy buenos para encontrar coordenadas, en parte porque hay dos condiciones iniciales (se podría considerar su posición inicial y velocidad inicial). Es mejor utilizarlo para aumentar un GNSS o un sistema similar.

Hay un gran número de algoritmos de integración numérica : el más simple es simplemente agregar el valor x a un acumulador periódicamente. Algoritmos más sofisticados intentan eliminar el sesgo cuando el número se está moviendo en una dirección u otra mediante el ajuste de la curva de una forma u otra.

El más popular es probablemente Regla de Simpson .

    
respondido por el Spehro Pefhany

Lea otras preguntas en las etiquetas