accelerometer - que - cálculo de distancias utilizando acelerómetro
sensor de orientacion app inventor (4)
La respuesta corta a tu pregunta es que no puedes hacerlo.
El método de doble integración es realmente la única forma de obtener la información que busca utilizando solo un acelerómetro. Has encontrado el problema con este método. El error aumenta con el tiempo y generalmente no da la precisión que muchos buscan.
El filtrado de Kalman generalmente requiere 2 dispositivos y básicamente toma lo mejor de ambos y filtra lo malo. Vea el ejemplo a continuación.
El filtrado de Kalman es un tema realmente difícil en el que traté de adentrarme en el diseño senior, pero nunca encontré ningún resultado significativo con mis pruebas limitadas. Un gran lugar para comenzar a entender este tema es con esta serie de videos de YouTube .
Este es el tipo que ganó el desafío DARPA con Stanford y explica el tema de una manera fácil de entender. Todo el curso es una serie de videos de 6 unidades sobre la programación de robots para moverse y comprender su ubicación en un entorno desconocido. Vale la pena un reloj si tienes el tiempo y el interés.
Parece que estás tratando de hacer algo similar a lo que hice para el diseño de alto nivel para dar información de ubicación relativa realmente específica.
Otro excelente filtro de Kalman leyó esto (si este enlace no funciona, el bot de balance de filtros de Google Kalman y haga clic en el enlace del blog de TKJ). Básicamente, este tipo usa un acelerómetro y un giroscopio para rastrear la orientación en el mundo real.
Algo más para mirar en wiki cinemática en tiempo real. Esto va en tractores y se combina para proporcionar información de ubicación realmente precisa. John Deere vende un sistema, pero es como $ 20,000. Aquí está la versión del hombre pobre usando GPS y beagleboard.
Después de leer muchas investigaciones y documentos al lado de muchos foros sobre cómo medir la distancia según los datos de aceleración, encontré el método de integración doble, pero el error relacionado con este método es grande y aumenta con el tiempo. Además, encontré algunas personas que sugirieron el filtro de Kalman. Leí algunas referencias al respecto, pero no estaba claro cómo usarlo. también algunos estaban hablando de los sensores de fusión ... pero después de leerlos no tuve ninguna idea nueva. así que todavía estoy confundido y no encontré la respuesta correcta para seguir ... perdón por esta larga introducción.
Pregunta
Consideremos que tengo el sensor de 9 ejes en mi mano y muevo mi mano en alguna dirección, ¿cómo puedo encontrar la nueva posición de mi mano en el espacio? ¿Cómo obtener un vector de movimiento desde el punto inicial hasta el nuevo punto? ¿Cómo saber las distancias recorridas en tres ejes?
Si no hay una respuesta directa ... algunos consejos o referencias serían excelentes o algunos algoritmos que dan respuestas precisas y puedo estudiarlo y usarlo por mí mismo. muchas gracias
Por un sensor de 9 ejes supongo que eso significa:
- Giroscopio de 3 ejes (mide la velocidad de rotación)
- Acelerómetro de 3 ejes (medidas de aceleración)
- Magnetometro de 3 ejes (medidas rumbo)
No es posible obtener una estimación práctica de la posición de este tipo de sensor de 9 ejes sin el uso de otro sensor que use una referencia externa como el GPS.
Teóricamente, si conoce las aceleraciones de un objeto en el espacio y su posición y velocidad iniciales, podrá calcular la nueva posición de los objetos al propagar la información sobre su aceleración y velocidad a la posición inicial (es decir, integrando la aceleración dos veces) . La razón por la que no es posible en la práctica es que el acelerómetro tiene ruido. Este ruido tendrá una media distinta de cero, por lo que al integrar la señal de aceleración, la media de ruido no cero se agrega continuamente y se acumula en la señal de velocidad resultante. Esto se ve como la deriva del sensor. La estimación de la velocidad comienza bastante correcta pero se desvía rápidamente debido a este ruido acumulado. Integrar una segunda vez para obtener la posición solo empeora la situación al repetir el proceso.
Al usar una referencia externa como un GPS, el filtro de Kalman se puede usar para combinar la señal de GPS de actualización lenta y la señal de aceleración de actualización rápida para producir una estimación confiable de la posición. El GPS tiene el efecto de poner a cero la deriva que se acumularía al realizar la integración en la señal de aceleración.
Sugeriría echar un vistazo a los videos de Udacity Youtube que Khamey sugirió. Cuando se aprende el filtro de Kalman, es útil obtener una visión general clara de cuál es el objetivo y qué está haciendo el filtro de kalman. Entonces las matemáticas y los pasos reales del algoritmo serán mucho más fáciles de entender. Otra cosa que es útil cuando se aprende el filtro de Kalman es hacerlo para una variable de estado a la vez en lugar de un vector de estado completo. Esto solo ayuda a centrar su atención en lo que realmente está haciendo el filtro de Kalman para que no se atasque con el álgebra matricial.
Si hay un mapa base y está seguro de que el sensor está viajando a lo largo de una ruta conocida (como una carretera), puede usar el mapa base para corregir lecturas ruidosas. Vea a Jun Han, Emmanuel Owusu, Thanh-Le Nguyen, Adrian Perrig y Joy Zhang "Complemento: Inferencia de ubicación utilizando acelerómetros en teléfonos inteligentes" En las actas de la 4ta Conferencia Internacional sobre Sistemas y Redes de Comunicaciones (COMSNETS 2012), Bangalore, India, enero 3-7, 2012.
http://www.netsec.ethz.ch/publications/papers/han_ACComplice_comsnets12.pdf
Sin considerar la rotación:
Consideremos que en el tiempo t=t0
estás en la posición [ x0 , y0 , z0 ]
y un vector de velocidad de [ vx0 , vy0 , vz0 ]
.
En t=t1
lees un vector de aceleración de [ ax1 , ay1 , az1 ]
(La aceleración promedio de t0
y t1
).
Entonces, el vector de velocidad en t=t1
será:
[ vx1 , vy1 , vz1 ] = [ vx0 + ax1 * (t1 - t0) , vy0 + ay1 * (t1 - t0) , vz0 + az1 * (t1 - t0) ]
La velocidad media entre t0
y t1
será
[ vx01 , vy01 , vz01 ] = [ (vx0 + vx1) / 2 , (vy0 + vy1) / 2 , (vz0 + vz1) / 2 ]
Y la posición en t=t1
será:
[ x1 , y1 , z1 ] = [x0 + vx01 * (t1 - t0), y0 + vy01 * (t1 - t0), y0 + vy01 * (t1 - t0) ]
Como puede ver, el error se propaga con t^2
, por lo que los sistemas inerciales deben ser compensados por una referencia externa como un GPS.