2010-04-19 12 views
5

Necesito obtener la velocidad de un dispositivo Android, según los valores del acelerómetro. Hice un código que me permite obtener los valores del acelerómetro, y luego calculo la velocidad, usando la fórmula: v = v0 + at. (cálculo vectorial)Android Speed ​​basado en los valores del acelerómetro

Mi problema es que mi velocidad solo aumenta y nunca disminuye. Creo que el problema es que el dispositivo nunca obtiene una aceleración negativa.

¿Me pueden ayudar con esto?

Respuesta

6

La obtención de la velocidad de los acelerómetros puede no ser posible (olvide la confiabilidad) porque a velocidad constante no habrá aceleración (que no sea la gravedad). Es posible que sea mejor obtener los datos de ubicación GPS y sus muestras de tiempo asociadas y la velocidad de cálculo por distancia en el tiempo.

+1

Bueno, el problema es que estoy tratando de aplicar una técnica de cálculo a estima para compensar una falla temporal del GPS. Entonces, cuando empiezo a obtener los valores del acelerómetro, no tengo conexión GPS. Sé que tendré un error acumulativo, y sé que los valores no son confiables, pero es un trabajo académico, solo para verificar que sea posible. – nunolourenco

+0

Aquí está mi ejemplo http://maephv.blogspot.com/2011/10/android-computing-speed-and-distance.html – Maep

4

¿Está restando la fuerza de la gravedad? El dispositivo siempre está acelerando, incluso si está sentado en su escritorio, está acelerando a 9.8 m/s^2 del centro de la Tierra.

+0

Sí, estoy haciendo eso. y creo que es que los 9.8 m/s^2 se aplican al componente Z. – nunolourenco

+0

Eso solo será cierto si el dispositivo está sentado en un escritorio u otra superficie completamente horizontal. – CommonsWare

+0

Sí, tienes razón. Como solo estaba considerando que el teléfono era horizontal, lo olvidé. Gracias;) – nunolourenco

1

Puede utilizar una combinación del acelerómetro y la brújula digital, en teléfonos que los tienen, para determinar la velocidad y la dirección, como se menciona en este post.

Si todo lo que necesita hacer es determinar si la persona está caminando, todo lo que necesita es el acelerómetro. Solo procesa su salida para pasos de pie.

Hay muchos tutoriales en la web para detectar pasos de pie con un acelerómetro.

Hay una nota de la aplicación aquí: http://www.analog.com/library/analogDialogue/archives/41-03/pedometer.html que ofrece un fondo matemático decente y un algoritmo de ejemplo. Por supuesto, depende de usted extraer las matemáticas y volver a escribirlas para Android (el código de ejemplo está escrito en C). Actualmente no sé de una biblioteca de Android de código abierto con un algoritmo de detección de pasos.

Si implementa algo, me gustaría obtener el código, no olvide publicar los resultados.

Cuestiones relacionadas