Tengo un acelerómetro de 3 ejes y un giroscopio de 2 ejes. Pretendo medir algo que solo se mueve en el eje X y Z. Escuché sobre el uso de filtros de 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 duplicar la integración de la aceleración para obtener la posición, pero ¿cómo hago esto con un número finito de vectores de aceleración muestreados? Apreciaría enlaces a buenos tutoriales para principiantes sobre estos dos temas.
Aquí hay un tutorial sobre cómo implementar una matriz de coseno de dirección para una IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf
Eche 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:
Bueno, el filtro de Kalman es una especie de magia que funciona misteriosamente. :)
Empecé primero con filtros digitales . Bien explicado para empezar. Y fácilmente comprensible. Estos filtros simples funcionan muy bien para el balanceo y el cabeceo de cualquier sistema. Solo necesita ajustar la relación Precisión vs Respuesta experimentando. El truco es [Precisión = 1 - Respuesta].
Darle una oportunidad.
Luego, para comprender el filtro de Kalman, deberá seguir los siguientes pasos:
Y debe compartir si se encuentra con algo como esto.
... doble integración de aceleración para obtener posición
En teoría (siempre que tenga sensores y medidas perfectos) puede hacer eso, 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 1G de gravedad y la aceleración del movimiento (que suele ser mucho menor que 1G) y sus medidas acumularán demasiado ruido con el tiempo para ser útiles si intenta integrar las medidas. aceleración menos 1G de gravedad.
Empecé a construir un quad hace casi 6 meses, tuve muchos problemas con la determinación del ángulo correcto :)
En primer lugar, debe probar esta presentación: http://web.mit.edu/scolton/www/filter.pdf Es realmente completa y podría ayudarlo a tener una mejor idea de lo que realmente quiere, prácticamente funcionó. para mi.
Supongo que depende de ti, pero implementar el filtro de Kalman no solo requiere un conocimiento bastante sólido en matemáticas, teoría de sistemas y, en este caso, física, sino que también es muy exigente con respecto a la carga de la CPU. En caso de que tenga en mente usar, digamos un Atmega328 registrado a 16Mhz, es posible que tenga problemas para usar este tipo de filtro. Es realmente efectivo si está utilizando un DSP para que pueda filtrar su entrada acc.
En general, mi consejo es: intente usar el filtro complementario de primer orden o incluso el filtro complementario de segundo orden en caso de que no esté satisfecho con los resultados. Si su sistema está libre de 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
También soy un novato y también estoy buscando alguna solución para mi trabajo de navegación. igual que tu, tengo una placa configurada con acelerómetro de 3 ejes y giroscopio 2D. hasta ahora he leído muchos materiales sobre esto, así mismo decido adoptar el filtro kalman para mi manejo de señales. Puede ser 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 te sean útiles.
limitado a mi reputación, solo tengo autoridad para publicar menos de 2 enlaces. entonces los otros dos que quiero publicar de la siguiente manera:
solojeff
ezú