Atualmente, estou lendo sobre robôs de auto-equilíbrio que usam uma IMU (giroscópios + acelerômetros) para estimar o ângulo de inclinação atual.
A maioria dos documentos que encontrei dizem as mesmas coisas:
- Você não pode simplesmente pegar a tangente ao arco dos dados dos acelerômetros para encontrar a direção da gravidade, porque eles são afetados por "ruídos inerciais".
- Você não pode simplesmente integrar a saída do giroscópio ao longo do tempo, porque ele flutua.
- Existem duas soluções geralmente aceitas para mesclar esses dados:
- Um filtro Kalman que estima a inclinação atual juntamente com o viés atual do giroscópio .
- Um filtro complementar que aplica um filtro passa-baixo nos dados do acelerômetro (eles podem ser confiáveis a longo prazo) e um filtro passa-alto nos dados do giroscópio (pode ser confiável a curto prazo).
Todas as fontes que encontrei parecem usar os dados brutos dos acelerômetros nesses filtros, desconsiderando o fato de que, em um robô com auto balanceamento, podemos ter uma estimativa muito boa do "ruído inercial" mencionado acima.
Aqui está o meu pensamento
Vamos modelar nosso robô com um pêndulo invertido com um ponto de apoio em movimento e usar esse desenho ruim como referência.
As forças inerciais sentidas pelos acelerômetros em C podem ser derivadas (se eu não cometer nenhum erro)
Assumindo que
- Nosso robô está rolando sem escorregar
- Podemos medir x (usando motores de passo ou motores DC com codificadores)
Então podemos ter uma boa estimativa de todas essas variáveis:
- : Diferenças finitas sobre nossas medidas atuais e anteriores de
- : A leitura atual do giroscópio
- : Estimativa anterior de além da integração de e mais de um
- : Diferenças finitas sobre e
Depois disso, podemos negar o efeito das forças inerciais nos acelerômetros, deixando apenas uma medida muito melhor da gravidade.
Provavelmente ainda é uma boa idéia usá-lo como entrada do filtro Kalman usual, como em 1. acima.
Talvez possamos até criar um filtro Kalman que possa estimar todas essas variáveis de uma só vez? Eu vou tentar isso.
O que você acha? Estou faltando alguma coisa aqui?
Acho que o robô de auto-equilíbrio pode ser uma boa etiqueta, mas não consigo criá-la
fonte
Respostas:
Se você construir corretamente um filtro Kalman com uma entrada 'x', então sim, será melhor. Notavelmente, o sensor inercial não pode fornecer um valor absoluto para x em nenhum caso, porque você está (essencialmente) tentando integrar duas vezes um sinal do acelerômetro em uma posição, e isso é extraordinariamente sensível ao ruído na saída do acelerômetro.
Algumas coisas que você pode querer considerar em suas viagens:
fonte
Embora essa não seja uma resposta completa à sua pergunta, quero deixar alguns dos meus pensamentos. Eu acho que você perdeu:
Um modelo de filtro Kalman é uma boa abordagem. Quanto mais conhecimento sobre o modelo de movimento você colocar no modelo, melhor ele funcionará. Você também precisa conhecer (co-) variações de todas as variáveis ... Quão certo você acha que as medidas de cada sensor são.
fonte