Combine dados de giroscópio e acelerômetro
-
22-09-2019 - |
Pergunta
Estou construindo um robô de equilíbrio usando o sistema NXT da Lego Mindstorm. Estou usando dois sensores do Hitechnic, sendo o primeiro um acelerômetro e o segundo sendo um giroscópio. Filmei com sucesso o ruído de dois sensores e ângulos derivados para ambos em um intervalo entre -90 e 90 graus, com 0 graus sendo perfeitamente equilibrados.
Meu próximo desafio é combinar os dois valores do 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 o desvio do giroscópio:
A abordagem mais usada que eu vi para fazer a combinação desses sensores rochas sólida é usando um filtro Kalman. No entanto, não sou especialista em cálculo e realmente não entendo símbolos matemáticos, eu entendo a 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 conseguir isso em C.
Obrigado pela ajuda!
Resultados da solução:
Tudo bem, Kersny resolveu meu problema, apresentando -me a filtros complementares. Este é um gráfico que ilustra meus resultados:
Resultado #1
Resultado #2
Como você pode ver, o filtro corrige o desvio giroscópico e combina ambos os sinais em um único sinal suave.
Editar: Como eu estava corrigindo as imagens quebradas de qualquer maneira, achei divertido mostrar a plataforma que costumava gerar esses dados:
Solução
Os filtros Kalman são ótimos e tudo, mas 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 (juntamente com Este artigo sobre a conversão de sensores em unidades de engenharia) e um pdf no arquivo zip em esta página (Em documentação técnica, acredito que o nome do arquivo no zip é filtr.pdf);
Ps. Se você está preso em um filtro Kalman, aqui é algum código C-sinax para o Arduino que o implementa.
Outras dicas
Gamasutra.com correu Um artigo sobre o uso de filtros Kalman para filtragem Wiimote.
Existem alguns links para o código -fonte C ++ no final do artigo.