Combine dados de giroscópio e acelerômetro

Eu estou construindo um robô de balanceamento usando o sistema NXT da Lego Mindstorm. Estou usando dois sensores da HiTechnic, sendo o primeiro um acelerômetro e o segundo um giroscópio. Eu consegui filtrar o ruído de ambos os sensores e os ângulos derivados para ambos em um intervalo entre -90 e 90 graus, com 0 graus sendo perfeitamente balanceados.

Meu próximo desafio é combinar os dois valores de sensor para corrigir o desvio do giroscópio ao longo do tempo. Abaixo está um exemplo de gráfico que criei a partir de dados reais para demonstrar a deriva do giroscópio:

insira a descrição da imagem aqui

A abordagem mais comumente usada para combinar esses sensores é usar um filtro de Kalman. No entanto, não sou especialista em cálculo e realmente não entendo símbolos matemáticos, mas entendo matemática no código-fonte.

Estou usando o RobotC (que é como qualquer outro derivado C) e realmente apreciaria se alguém pudesse me dar exemplos de como fazer isso em C.

Obrigado pela ajuda!

RESULTADOS DA SOLUÇÃO:

Tudo bem, kersny resolveu meu problema me apresentando filtros complementares. Este é um gráfico que ilustra meus resultados:

Resultado # 1

insira a descrição da imagem aqui

Resultado # 2

insira a descrição da imagem aqui

Como você pode ver, o filtro corrige o desvio giroscópico e combina os dois sinais em um único sinal suave.

Edit: Desde que eu estava consertando as imagens quebradas de qualquer maneira, eu pensei que seria divertido mostrar a plataforma que eu usei para gerar esses dados:

insira a descrição da imagem aqui

Filtros de Kalman são ótimos e tudo, mas eu acho o Filtro Complementar muito mais fácil de implementar com resultados semelhantes. Os melhores artigos que encontrei para codificar um Filtro Complementar são este wiki (junto com este artigo sobre a conversão de sensores para unidades de Engenharia) e um PDF no arquivo zip nesta página (Sob Documentação Técnica, acredito que o nome do arquivo no zip é filter.pdf);

PS. Se você está preso em um filtro de Kalman, aqui está um código de syntax C para o Arduino que o implementa.

Gamasutra.com publicou um artigo sobre o uso de filtros de Kalman para a filtragem do WiiMote .

Existem alguns links para o código-fonte C ++ no final do artigo.

    Intereting Posts