Pergunta

Duplicate possíveis:
Combine giroscópio e dados do acelerômetro

Eu li uma série de artigos sobre Kalman filters, mas parece haver alguns bons publicamente acessíveis exemplos trabalhados de obter a partir de papel matemática ao código de trabalho real.

I têm um sistema contendo um acelerómetro de três eixos e uma única rotação de medição giroscópio em torno de um dos eixos do acelerómetro. O sistema está concebido para ser realizado por um ser humano, e a maior parte do tempo, o giroscópio será medição da rotação sobre o vector de gravidade ou perto dele. (As pessoas que trabalham na mesma indústria provavelmente vai reconhecer o que eu estou falando disso;).) Sei que isso é underconstrained

Os giroscópios parecem ter um viés quase constante que é ligeiramente diferente para cada instância do sistema. Como eu iria sobre a codificação de um filtro para usar as leituras do acelerômetro para calibrar o giroscópio às vezes quando o sistema está inclinada de modo que o eixo do giroscópio não é colinear com gravidade, e está sendo girada sobre o eixo giroscópio? Parece que deve haver informação suficiente para fazer isso, mas ser informado de que não existe e por que seria uma resposta também:)

Foi útil?

Solução

nBot, um equilíbrio robô duas rodas
Um pouco de informações e links sobre como este autor escolheu para resolver o problema de equilíbrio para seus dois robô com rodas.

Outras dicas

Você parece ter dois (ou três) problemas distintos aqui.

1. Você realmente não entendo filtros de Kalman e / ou a matemática por trás deles. Isso vai torná-lo muito difícil de implementar corretamente e usar um.

2. Você não parece compreender a física básicas envolvidas no problema. (Meios Física Básica física, não física simples subjacente, porque não é simples.)

Eu sugiro que você tente usar um integrador muito mais simples, como um Runga Kutta-4, para o qual você pode encontrar muitos livros com exemplos de tanto a implementação eo uso. Deve ser suficiente para este problema. (Se o cliente especificado Kalman, perguntar por que.)

Quanto ao porquê do problema está sob constrangido, parece-me que ele está tendo nenhuma maneira de garantir que o dispositivo está na posição vertical e não há maneira de medir a orientação actual. Esqueça o giroscópio para o momento e assumir o dispositivo não pode ser girado em torno de um eixo vertical. Você tem três acelerômetros, presumivelmente para estimar a posição em 3D. Então, se você ver uma aceleração na direção X, você aumenta a estimativa de onde você está na direção X. Da mesma forma, se você vê uma aceleração na direção Z (que eu assumo é "up"), você aumenta a estimativa de onde você está na direção Z. Agora gire o dispositivo um pouco, digamos 30 graus em torno do eixo Y. Agora, quando o dispositivo pensa que você está acelerando ao longo da direção X, o dispositivo é realmente acelerando um pouco menos do que o indicado no X e também é acelerando na direção Z. Portanto, sua estimativa de posição está incorreto.

Rotações são muito mais difíceis de integrar (as equações são mais "dura", exigindo um passo de tempo menor para manter a precisão). Mas eles vão sofrer problemas semelhantes de computação respostas erradas se o dispositivo for derrubado (porque o dispositivo não pode dizer que ele é derrubado). Ele irá pensar que a rotação em torno do eixo vertical é maior ou menor do que realmente é, porque parte da rotação é na verdade sobre um eixo diferente (apenas como parte da parte de aceleração era ao longo de um eixo diferente).

< p>

Talvez você precise contratar um consultor (não, eu não estou procurando um emprego) para ajudá-lo na formulação matemática.

Dado o seu interesse no filtro de Kalman, talvez você pretende dados do GPS aumentar com medições inerciais. Sobre a sua pergunta:

"Como eu iria sobre codificação de um filtro para utilizar as leituras do acelerômetro para calibrar o giroscópio às vezes quando a sistema é inclinada de modo que o eixo é giroscópio não colinear com gravidade, e é a ser rodado sobre o eixo giroscópio? isto Parece que deve ser suficiente informações para fazer isso "

Isso soa como um alinhamento gyrocompasing. Supondo que você está fazendo uma calibração de fábrica, e têm a unidade em um banco, você será capaz de medir independentemente do alinhamento. Em seguida, execute o código de nivelamento você vai escrever e voltar para fora o erro viés giroscópio a partir da diferença entre a medida e alinhamentos gyrocompased.

Se você quiser atualização deriva giroscópio on-the fly, então você vai precisar do filtro de Kalman.

Quanto à aplicação vai Eu recomendo o Capítulo 7, GPS e Integração Inertial de global Position Teoria e Aplicações Sistema vol 2 tem excelente fundo sobre o tema. Ele tem a teoria e matemática, mas nenhum código-fonte.

Eu encontrei bons artigos sobre o uso de acelerômetros e giroscópios em navegação no este blogue . A parte de filtragem Kalman é um pouco confuso, mas parece haver exemplos de código.

Você também vai encontrar recursos gerais sobre filtragem Kalman em http://academic.csuohio.edu /simond/publications.html . O artigo referido na (8) é uma boa, não muito assustador, introdução para a matemática por trás filtros de Kalman.

Um cavalheiro na Dinamarca acabou de postar um exemplo trabalhado da derivação de um filtro de Kalman para resolver quase exatamente este problema.

Se acontecer de você estar desenvolvendo para o Propeller uController, que o Parallax objecto Troca tem algum código. Ótima pergunta; -)

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