Filtro de Kalman na prática

17

Eu li a descrição do filtro Kalman, mas não sei ao certo como ele se encaixa na prática. Parece ser voltado principalmente para sistemas mecânicos ou elétricos, pois deseja transições de estado lineares e que não é útil para detectar anomalias ou localizar transições de estado pelo mesmo motivo (ele deseja transições de estado lineares), está correto? Na prática, como se costuma encontrar os componentes que devem ser conhecidos com antecedência para usar um filtro Kalman. Listei os componentes, corrija-me se minha compreensão do que precisa ser conhecido com antecedência estiver incorreta.

Eu acredito que estes não precisam ser conhecidos "antecipadamente":

  • Ruído do processow
  • Ruído de observaçãov
  • Estado real (é isso que o filtro Kalman tenta estimar)x

Eu acredito que estes precisam ser conhecidos "antecipadamente" para usar um filtro Kalman:

  • O modelo de transição de estado linear ao qual aplicamos (precisamos saber isso com antecedência, portanto, nossos estados devem ser regidos por leis conhecidas, ou seja, o filtro Kalman é útil para corrigir medições quando a transição de um estado para outro é boa compreendido e determinístico até um pouco de ruído - não é um localizador de anomalias ou uma ferramenta para encontrar alterações aleatórias de estado)x
  • Vetor de controleu
  • Modelo de entrada de controle que é aplicado para controlar o vetor (precisamos saber isso com antecedência, portanto, para usar um filtro Kalman, também precisamos saber com antecedência como nossos valores de controle afetam o modelo, até no máximo algum ruído gaussiano, e o efeito precisa ser linear)u
  • Covariância do ruído do processo (que parece depender do tempo no artigo da wikipedia, isto é, depende do tempo ) - parece que precisamos saber isso com antecedência e ao longo do tempo, presumo que, na prática, seja tomado como sendo constante? kQk
  • Um modelo de observação (linear)H
  • Covariância (que parece também depender do tempo no artigo da wikipedia) - questões semelhantes aQRQ

PS E sim, eu sei que muitos deles dependem do tempo, acabei de largar toda a confusão de subscritos. Sinta-se à vontade para imaginar a letra minúscula à direita e para baixo de cada nome de variável, se desejar.k

John Robertson
fonte

Respostas:

18

Para algum contexto, vamos voltar às equações do filtro de Kalman:

x(k+1)=F(k)x(k)+G(k)u(k)+w(k)z(k)=H(k)x(k)+v(k) .

Em suma, para um KF simples de baunilha:

F(k) deve ser totalmente definido. Isso vem diretamente das equações diferenciais do sistema. Caso contrário, você tem um problema de estimativa dupla (ou seja, estimar o estado e o modelo do sistema). Se você não possui equações diferenciais do sistema, um KF não é para você!

x(k) é, por definição, incognoscível. Afinal, se você soubesse, não seria um problema de estimativa!

O vetor de controle deve ser totalmente definido. Sem modelagem de sistema adicional, a única incerteza no vetor de controle pode ser AWGN , que pode ser incorporada ao ruído do processo. Matriz conhecida relaciona a entrada de controle com os estados - por exemplo, como o movimento do aileron afeta o movimento de uma aeronave. Isso é modelado matematicamente como parte do desenvolvimento do KF.G ( k )u(k)G(k)

O ruído do processo do sistema também é, por definição, incognoscível (já que é um ruído aleatório!). No entanto, as estatísticas do ruído devem ser conhecidas que, para um KF simples de baunilha, devem ser zero AWGN médios com covariância conhecida . Às vezes, a covariância do ruído pode mudar entre as amostras, mas em muitos casos é fixa e, portanto, é uma constante. Em alguns casos, isso será conhecido, mas em muitos casos, isso será "ajustado" durante o desenvolvimento do sistema.Q ( k ) Qw(k)Q(k)Q

As observações são uma história semelhante. A matriz que relaciona suas medidas aos estados deve ser totalmente definida. Suas medidas também são conhecidas porque essa é a leitura dos seus sensores!z ( k )H(k)z(k)

As medições do sensor, no entanto, são corrompidas por AWGN , que, sendo ruído aleatório, é por definição desconhecido. As estatísticas do ruído devem ser conhecidas, o que é zero com covariância . Mais uma vez, a covariância pode mudar com o tempo, mas para muitas aplicações, é um valor fixo. Freqüentemente, seus sensores terão características de ruído conhecidas na folha de dados. Caso contrário, não é muito difícil determinar a média e a variação de seus sensores que você precisa usar. Sim, isso também pode ser "sintonizado" empiricamente.R ( k )v(k)R(k)

Há um grande número de "truques" que podem ser feitos para solucionar as restrições em um KF comum, mas elas estão muito além do escopo desta questão.


Reflexão tardia:

Embora pesquisar no "Kalman Filter" resulte em um milhão de acessos, há algumas coisas que acho que vale a pena analisar. A página da Wikipedia é muito confusa para aprender com eficácia :(

No AVR Freaks , há uma introdução "sem equações" ao Kalman Filter que escrevi há algum tempo para tentar introduzir onde é usado de verdade.

Se você não tem medo de matemática, existem vários livros que vale a pena ler que estão no nível sênior de graduação / pós-graduação. Tente Brown e Hwang, que inclui toda a teoria e muitos exemplos de sistemas. O outro que é altamente recomendado, mas ainda não li, é o Gelb , que tem a vantagem de ser barato!

Damien
fonte
1
+1 para o link do AVR Freaks! Muito bem feito. Provavelmente vai usar isso na aula. :-)
Peter K.