Como determinar a posição da entrada do giroscópio e do acelerômetro?

33

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.

Steven
fonte
3
Parece com este post de blog que me deparei hoje mais cedo: starlino.com/imu_kalman_arduino.html Não tenho conexão com esse site, apenas achei relevante para o que você está perguntando.
precisa saber é o seguinte
1
uma série de tutoriais sobre como usar e fazer interface com os sensores do acelerômetro pode ser encontrada neste artigo. intorobotics.com/... aqui estão tutoriais disponíveis para 2 medições eixos
Ezu

Respostas:

16

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/

Toby Jaffey
fonte
8

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:

  1. Probabilidade
  2. Lei de Bayes
  3. Em seguida, será necessário aprender a modelar cenários simples para ajustá-los ao filtro Kalman.
  4. Atualmente, estou aqui, para descobrir o que fazer .. certamente o informará.

E deve compartilhar se você se deparar com algo assim.

Rick2047
fonte
7

... integre a aceleração para obter posição

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.

hlovdal
fonte
6

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

Dan
fonte
Seu link está morto. Eu cavei um pouco e encontrei o documento novamente: googledrive.com/host/0B0ZbiLZrqVa6Y2d3UjFVWDhNZms/filter.pdf Pelo menos deve ser o mesmo, talvez você queira checar novamente .
John
Sim, é exatamente o mesmo :)
Dan
link está morto novamente :(
KyranF
@KyranF acho que encontrei novamente :) portal.ts-muenchen.de/Dateien/filter.pdf
Dan
@ Dan legal, este é realmente o mesmo documento que usei para projetar meu firmware quando fiz um mini segway de volta na uni. youtu.be/zOFlJJj8pPA
KyranF
1

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ê.

  1. Introdução do filtro Kalman
  2. Caixa de ferramentas de navegação de robô CAS
  3. Caixa de ferramentas de navegação inercial de código aberto
  4. Código fonte de Um projeto sobre navegação

limitado à minha reputação, só tenho autoridade para postar menos de 2 links. então os outros dois eu quero postar como abaixo:

Cavalo escuro
fonte
1
Embora esse possa ser um conjunto útil de links para o OP, esta postagem seria valiosa se você também incluísse resumos do conteúdo relevante desses links, específicos à pergunta que o OP publicou. Lembre-se de que, quando os links eventualmente se tornarem inválidos devido à podridão do link, esta postagem não terá valor. Obrigado.
Anindo Ghosh