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.
33
Respuestas:
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/
fuente
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:
Y debe compartir si te encuentras con algo como esto.
fuente
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.
fuente
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.
fuente
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
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:fuente