2011-08-12 10 views

Respuesta

2

En teoría, se podría hacer esto; en la práctica, no.

Debería suponer que conoce una velocidad inicial, pero suponiendo que comience a 0 velocidad no es una suposición tan mala.

También debería conocer la orientación real del dispositivo durante todo el período. De lo contrario, no puede diferenciar el cambio en la aceleración debido a la aceleración real en lugar de simplemente girar el dispositivo.

(Recuerde que tiene que sacar la aceleración debida a la gravedad de las lecturas!)

Por último, los errores sumarían más de algún tiempo, no sólo porque la medida de la aceleración es imperfecta, pero ya que sólo obtener muestras discretas a lo largo del tiempo

Aparte de todas esas cosas, claro, funciona! La API te dice en qué unidades están las lecturas (m/s^2). Puede solicitar al sensor actualizaciones muy rápidas. Creo que sería interesante ver qué tan preciso es escribir una aplicación que hace esto y luego poner el teléfono plano y luego caminar hacia adelante y detenerse con él. ¿Qué tan cerca de 0 es la lectura, entonces?

+4

Es incluso más interesante (y divertido) dejar el dispositivo en la mesa durante medio minuto, restar la gravedad e integrar lo que queda dos veces para cambiar la posición. La estimación será que el dispositivo se movió unos cientos de metros. –

+0

Hah OK, entonces es mucho peor de lo que pensaba ... –

+0

Intenté hacerlo. Agregué un filtro de paso bajo a la velocidad para evitar derivar ... en ese caso no tengo movimiento significativo con un dispositivo fijo. Pero moviéndolo, incluso un movimiento de pocos centímetros da resultados que parecen aleatorios. La velocidad del terminal a menudo es muy diferente de 0. – ARLabs

0

Probablemente no, porque si se mueve a baja velocidad constante, no creo que el acelerómetro detecte algo.

+0

Es cierto, a pesar de que en realidad detectará gravedad (esto es cómo los juegos cada vez utilizan esta cosa es conocer la orientación del dispositivo) cuando está en reposo o con velocidad constante. –

+0

Puedo determinar si alguien se está moviendo revisando la variación de aceleración. Debería ser capaz de discernir las grandes variaciones que ocurren cuando te mueves de una variación pequeña y rápida que sucede cuando estás quieto. – Fixpoint

+0

2Sean: Android tiene un sensor de aceleración lineal que resta gravedad. – Fixpoint

3

En general, el acelerómetro que se encuentra en los dispositivos Android es demasiado ruidoso para poder integrar la señal y obtener la velocidad. Además, también necesita una estimación casi perfecta de la orientación del dispositivo e incluso el uso de un giroscopio (que pocos dispositivos tienen) suele ser demasiado ruidoso.

El problema principal es restar la gravedad de la señal del acelerómetro, ya que la fuerza de la gravedad suele ser un componente muy grande de la señal. Con una estimación de orientación del teléfono ligeramente desviada, la gravedad se resta en la dirección incorrecta. Esto deja los componentes de aceleración en la dirección incorrecta, y su estimación de velocidad se vuelve inútil rápidamente.

Lo que se necesita es básicamente una forma de reiniciar la estimación de velocidad regularmente (una vez por segundo o más) cuando sabe que el dispositivo no se está moviendo. Una forma de hacerlo, siempre que el usuario del dispositivo esté caminando, es montar el dispositivo sobre un pie y tratar de detectar cuando el pie está en el suelo (la velocidad es cero en todas las direcciones). Sin embargo, montar el dispositivo en el pie del usuario suele ser una restricción demasiado severa para el uso práctico.

hay otros enfoques que pueden tomarse para seguir el movimiento. Por ejemplo, usando la detección de pasos y un giroscopio, he podido rastrear a una persona que camina por un minuto o dos, con una precisión de unos pocos metros.

+0

¿cómo puedo calcular la detección de pasos usando Accelerometer android? @ Anton Hansson – Erum

Cuestiones relacionadas