Eu tenho um acelerômetro de 3 eixos e um giroscópio de 2 eixos. Pretendo medir algo que só se move nos eixos X e Z. Já ouvi falar do uso de filtros Kalman para suavizar os vetores de aceleração, mas não consigo encontrar um bom tutorial para um iniciante completo do tópico. Além disso, sei que posso integrar a aceleração duas vezes para obter a posição, mas como faço isso com um número finito de vetores de aceleração amostrados? Gostaria de receber links para bons tutoriais para iniciantes em ambos os tópicos.
33
Respostas:
Aqui está um tutorial sobre como implementar uma matriz de cosseno de direção para uma IMU: http://gentlenav.googlecode.com/files/DCMDraft2.pdf
Dê uma olhada nas páginas do ArduIMU: http://code.google.com/p/ardu-imu/wiki/Theory
Aqui estão alguns projetos de código aberto que fazem isso. A leitura do código deve fornecer algumas dicas:
http://code.google.com/p/gluonpilot/source/browse/trunk/Firmware/#Firmware/rtos_pilot%3Fstate%3Dclosed
http://code.google.com/p/sf9domahrs/
fonte
Bem, o filtro Kalman é um tipo de mágica que funciona misteriosamente. :)
Comecei primeiro com filtros digitais . Bem explicado para iniciantes. E facilmente compreensível. Esses filtros simples funcionam bem para a rotação e a inclinação de qualquer sistema. Só é necessário ajustar a taxa de precisão x resposta experimentando. O truque é [Precisão = 1 - resposta].
De uma chance.
Então, para entender o filtro Kalman, você precisará seguir os seguintes passos:
E deve compartilhar se você se deparar com algo assim.
fonte
Em teoria (desde que você tenha sensores e medições perfeitas), você pode fazer isso, mas, na prática, não pode. O problema é que o acelerômetro terá uma força constante de 1G causada pela gravidade quando o objeto estiver parado (zero G em caso de queda livre), mas isso não será medido exatamente como 1.00000000 ... G. Ao mover o objeto, você terá um vetor como a soma da gravidade 1G e a aceleração do movimento (que normalmente é muito menor que 1G) e suas medidas acumularão muito ruído ao longo do tempo para serem úteis se você tentar integrar medidas medidas. aceleração menos 1G de gravidade.
fonte
Comecei a construir um quad há quase 6 meses, tive muitos problemas com a determinação correta do ângulo :)
Antes de tudo, você deve tentar esta apresentação - http://web.mit.edu/scolton/www/filter.pdf É realmente abrangente e pode ajudá-lo a ter uma idéia melhor do que realmente deseja, e praticamente fez o truque para mim.
Eu acho que depende muito de você, mas a implementação do filtro Kalman não requer apenas um conhecimento bastante sólido em matemática, teoria dos sistemas e, neste caso, física, mas também é muito exigente em relação à carga da CPU. Caso você tenha em mente usar, digamos que um Atmega328 com clock de 16Mhz, você pode ter problemas ao usar esse tipo de filtro. É realmente eficaz se você estiver usando um DSP, para que você possa filtrar com baixa passagem sua entrada de acesso.
Em suma, meu conselho é: tente usar o filtro complementar de primeira ordem ou talvez até o filtro complementar de segunda ordem, caso você não esteja satisfeito com os resultados. Se o seu sistema estiver livre de vibrações de alta frequência, isso deve funcionar muito bem. Além disso, o link de JustJeff é o lugar perfeito para começar, caso você fique com a implementação :)
Tudo de bom, Dan
fonte
Eu também sou um novato e também estou procurando uma solução para o meu trabalho de navegação. Assim como você, eu tenho uma placa configurada com acelerômetro de 3 eixos e giroscópio 2D. até agora eu li muitos materiais sobre isso, da mesma forma eu decido adotar o filtro kalman no meu negócio de sinais. Pode ser que eu não tenha alguma sugestão para você, mas quero compartilhar algo com você que já tinha visto antes. alguns links apontam para eles, espero que seja útil para você.
limitado à minha reputação, só tenho autoridade para postar menos de 2 links. então os outros dois eu quero postar como abaixo:fonte