¿Cómo determinar la posición desde la entrada del giroscopio y el acelerómetro?

33

Tengo un acelerómetro de 3 ejes y un giroscopio de 2 ejes. Tengo la intención de medir algo que solo se mueve en los ejes X y Z. He oído hablar del uso de filtros Kalman para suavizar los vectores de aceleración, pero no puedo encontrar un buen tutorial para un principiante completo en el tema. Además, sé que puedo integrar doblemente la aceleración para obtener la posición, pero ¿cómo hago esto con un número finito de vectores de aceleración muestreados? Agradecería enlaces a buenos tutoriales para principiantes sobre estos dos temas.

Steven
fuente
3
Suena como esta publicación de blog con la que me topé hoy: starlino.com/imu_kalman_arduino.html No tengo conexión con ese sitio, solo pensé que parecía relevante para lo que estás preguntando.
JustJeff
1
En este artículo se puede encontrar una serie de tutoriales sobre cómo usar e interactuar con los sensores del acelerómetro. intorobotics.com/… aquí hay tutoriales disponibles para mediciones de 2 ejes
Ezu

Respuestas:

16

Aquí hay un tutorial sobre la implementación de una matriz de coseno de dirección para una IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf

Echa un vistazo a las páginas de ArduIMU: http://code.google.com/p/ardu-imu/wiki/Theory

Aquí hay un par de proyectos de código abierto que hacen esto. Leer el código debería dar algunas pistas:

http://code.google.com/p/gluonpilot/source/browse/trunk/Firmware/#Firmware/rtos_pilot%3Fstate%3Dclosed

http://code.google.com/p/sf9domahrs/

Toby Jaffey
fuente
8

Bueno, el filtro Kalman es un tipo de magia que funciona misteriosamente. :)

Comencé primero con filtros digitales . Bien explicado para empezar. Y fácilmente comprensible. Estos filtros simples funcionan bien para el balanceo y el cabeceo de cualquier sistema. Solo necesito ajustar la precisión y la relación de respuesta experimentando. El truco es [Precisión = 1 - Respuesta].

Darle una oportunidad.

Luego, para comprender el filtro de Kalman, deberá seguir los siguientes pasos:

  1. Probabilidad
  2. La ley de Bayes
  3. Luego, deberá aprender a modelar escenarios simples para ajustarlos al filtro de Kalman.
  4. Actualmente estoy aquí, así que encontrar qué hacer ... seguramente te lo haré saber.

Y debe compartir si te encuentras con algo como esto.

Rick2047
fuente
7

... doble integración de aceleración para obtener posición

En teoría (siempre que tenga sensores y mediciones perfectos) puede hacerlo, pero en la práctica no puede. El problema es que el acelerómetro tendrá una fuerza constante de 1G causada por la gravedad cuando el objeto está quieto (cero G en caso de caída libre), pero esto no se mide exactamente como 1.00000000 ... G. Al mover el objeto, tendrá un vector como la suma de la gravedad de 1G y la aceleración del movimiento (que generalmente es mucho más pequeña que 1G) y sus mediciones acumularán demasiado ruido con el tiempo para ser útiles si intenta integrar medidas aceleración menos 1G de gravedad.

hlovdal
fuente
6

Comencé a construir un quad hace casi 6 meses, tuve muchos problemas con la determinación correcta del ángulo :)

En primer lugar, debe probar esta presentación: http://web.mit.edu/scolton/www/filter.pdf Es realmente exhaustiva y podría ayudarlo a tener una mejor idea de lo que realmente quiere, prácticamente funcionó. para mi.

Supongo que depende de usted, pero implementar el filtro de Kalman no solo requiere conocimientos sólidos en matemáticas, teoría de sistemas y en este caso física, pero también es muy exigente con respecto a la carga de la CPU. En caso de que tenga en mente usar, digamos que un Atmega328 cronometrado a 16Mhz puede tener problemas al usar este tipo de filtro. Es realmente efectivo si está utilizando un DSP para que pueda filtrar paso bajo su entrada acc.

En general, mi consejo es: intente usar el filtro complementario de primer orden o tal vez incluso el filtro complementario de segundo orden en caso de que no esté satisfecho con los resultados. Si su sistema no tiene vibraciones de alta frecuencia, debería funcionar muy bien. Aparte de eso, el enlace de JustJeff es el lugar perfecto para comenzar en caso de que te quedes atascado con la implementación :)

Todo lo mejor, Dan.

Dan
fuente
Tu enlace está muerto. Excavé un poco y encontré el documento nuevamente: googledrive.com/host/0B0ZbiLZrqVa6Y2d3UjFVWDhNZms/filter.pdf Al menos se supone que es lo mismo, tal vez quieras hacer una doble verificación.
John
Sí, es exactamente lo mismo :)
Dan
el enlace está muerto nuevamente :(
KyranF
@KyranF creo que lo encontré otra vez :) portal.ts-muenchen.de/Dateien/filter.pdf
Dan
@Dan agradable, este es exactamente el mismo documento que utilicé para diseñar mi firmware cuando hice un mini segway en la unidad. youtu.be/zOFlJJj8pPA
KyranF
1

También soy un novato y también busco alguna solución para mi trabajo de navegación. igual que usted, tengo una placa con acelerómetro de 3 ejes y giroscopio 2D. hasta ahora he leído muchos materiales sobre esto, del mismo modo decido adoptar el filtro kalman para mi operación de señal. Puede que no tenga alguna sugerencia para ti, pero quiero compartir contigo algo que había visto antes. hay algunos enlaces que apuntan a ellos, espero que les sea útil

  1. Introducción de filtro Kalman
  2. Caja de herramientas de navegación del robot CAS
  3. Caja de herramientas de navegación inercial de código abierto
  4. Código fuente de un proyecto sobre navegación

limitado a mi reputación, solo tengo autoridad para publicar menos de 2 enlaces. así que los otros dos quiero publicar de la siguiente manera:

Caballo oscuro
fuente
1
Si bien este puede ser un conjunto útil de enlaces para el OP, esta publicación sería de gran valor si también agrega resúmenes del contenido relevante de esos enlaces, específicos de la pregunta que el OP ha publicado. Tenga en cuenta que cuando los enlaces finalmente se vuelvan inválidos debido a la descomposición del enlace, esta publicación no retendrá ningún valor. Gracias.
Anindo Ghosh