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:

enter image description here

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

enter image description here

Resultado #2

enter image description here

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:

enter image description here

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top