Como modelar ruído imprevisível no Kalman Filter?

9

Fundo:

Estou implementando um filtro Kalman simples que estima a direção do cabeçalho de um robô. O robô está equipado com uma bússola e um giroscópio.

Meu entendimento:

Estou pensando em representar meu estado como um vetor 2D , onde é a direção atual da direção e é a taxa de rotação relatada pelo giroscópio.(x,x˙)xx˙

Questões:

  1. Se meu entendimento estiver correto, não haverá termo de controle, no meu filtro. É verdade? E se eu pegar o estado como um vetor 1D ? Então meu se torna o termo de controle ? Esses dois métodos produzirão resultados diferentes?você(x)x˙você
  2. Como sabemos, a principal fonte de ruído vem da bússola quando ela está em um campo magnético distorcido. Aqui, suponho que o ruído gaussiano seja menos significativo. Mas a distorção magnética é totalmente imprevisível. Como o modelamos no filtro Kalman?
  3. No Kalman Filter, é necessária a suposição de que "todos os ruídos são brancos"? Digamos, se minha distribuição de ruído for realmente uma distribuição de Laplacian, ainda posso usar um filtro Kalman? Ou eu tenho que mudar para outro filtro, como o Extended Kalman Filter?
Sibbs Gambling
fonte

Respostas:

6
  1. Eu modelaria isso como um sistema de estado único (x), com o giroscópio como entrada de controle. O ruído do giroscópio se torna um ruído de entrada de estado, o ruído da bússola se torna um ruído de medição. Portanto, o seu modelo de sistema torna-se ˙y = x , onde y é a estimativa do filtro de direção, o que você comparar com a direção da bússola para obter a sua atualização Kalman.
    θ˙^=ωgyro+W
    y^=x^
    y^
  2. A distorção magnética será difícil, porque se você se sentar em qualquer lugar, aparecerá como um termo de deslocamento constante - o filtro Kalman não lidará com isso muito bem. Tenho certeza de que você precisará mapear a distorção, obter uma segunda referência de direção absoluta ou apenas aceitar a distorção.
  3. Você está confundindo conteúdo espectral com distribuição de probabilidade. Se o ruído for branco, cada amostra será perfeitamente independente de qualquer outra amostra. Se o ruído for laplaciano, cada amostra obedece à distribuição de Laplace. Os filtros Kalman não gostam de ruído colorido (mas você pode lidar com isso adicionando estados). Um filtro de Kalman é apenas o filtro ideal geral quando o ruído é da distribuição gaussiana e a função de custo é soma dos quadrados. Para qualquer outra função de ruído e custo, o filtro ideal provavelmente não é linear. Mas para qualquer função de custo zero zero, ruído branco e soma dos quadrados, o filtro Kalman é o melhor filtro linear a ser encontrado.

(Observe que o modelo de sistema que forneci termina com um filtro Kalman bastante trivial - você pode estar melhor, se não encontrar outros meios de estimar o deslocamento da bússola, usando um filtro complementar para combinar essas duas entradas do sensor. de qualquer maneira, todos os cálculos de Kalman acabam tossindo um filtro complementar de qualquer maneira, e é provável que você tenha palpites suficientes para suas constantes para que você possa apenas adivinhar o ponto de cruzamento de um filtro complementar e pronto).

(Observe também que, se você tiver alguma referência absoluta de posição e alguns meios para estimar a velocidade, e um veículo que sempre segue na direção em que você o aponta, pode usar um filtro Kalman estendido com muito lucro para corrigir a distorção da bússola usando a direção em que ele realmente se move para corrigir a direção da bússola).

A estimativa ideal de estado de Dan Simon, Wiley 2006, é - na minha opinião - um tratamento muito rico e claro do assunto da filtragem de Kalman e de seus irmãos mais sofisticados (H-infinito, Kalman extendido, Kalman estendido, Kalman sem cheiro e até um pouco na Baysian e filtragem de partículas). Não lhe dirá como aplicar isso a problemas de navegação como este, mas onde seria a diversão na vida se todos os problemas fossem resolvidos? Se você não pode seguir a matemática do livro de Simon, provavelmente deve estar se perguntando se será capaz de aplicar um filtro Kalman de qualquer forma inteligente.

TimWescott
fonte
+1 Para filtro complementar para esta aplicação, parece mais adequado. Também o livro de Dan Simon é muito bom. Este artigo é uma boa introdução ao filtro Kalman (do mesmo autor) masys.url.tw/AU/2013SP/OpenCV/0513/kalman-dan-simon.pdf
ddevaz
@ddevaz Sim, na verdade estou implementando AGORA um filtro complementar. Mas o problema é que não produz resultados muito bons. Então, eu estou pensando em mudar para outro filtro "mais sofisticado" ...
Sibbs Gambling
Eu vejo. Editei minha resposta para incluir algum material de referência na implementação do filtro Kalman com giroscópios, acelerômetros e um magnetômetro.
precisa saber é o seguinte
3
  1. Não haverá termo de entrada de controle. Você deve tomar (x, xdot) como seu vetor de estado para formular o filtro Kalman corretamente.

  2. As principais fontes de ruído são a bússola e o giroscópio . O ruído e a deriva do giroscópio são significativos. É bastante desafiador superar a distorção magnética em geral, mas existem técnicas de compensação .

  3. A suposição de zero ruído de distribuição normal multivariada média é necessária, porém o ruído branco é apenas um caso especial disso. Para o filtro Kalman estendido, essa suposição ainda precisa ser verdadeira. Você pode procurar outros tipos de filtros ( filtro de partículas , filtro Kalman sem cheiro ).

Papel de Projeto / Implementação de Filtro Kalman:

Implementando um algoritmo de fusão de sensores para detecção de orientação 3D com sensores inerciais / magnéticos

ddevaz
fonte
Então não posso deixar o KF para lidar com a distorção magnética imprevisível, certo? Eu deveria meio que descartar os valores distorcidos primeiro e depois deixar o KF para lidar com o ruído do sensor. Direita?
Sibbs Gambling
Sim. O filtro Kalman não será capaz de compensar com precisão a distorção magnética, pois as alterações podem ser drásticas. Eu tentaria implementar alguma compensação magnética primeiro e depois implementar o filtro Kalman.
precisa saber é o seguinte