Como escolho os parâmetros de um filtro Kalman?


8

Suponha que eu queira rastrear a posição de um carro em 2D. O que eu recebo como dados do sensor é minha posição atual. Então meu estado é

x=(xyx˙y˙)

Onde xR é a posição em m de distância de algum ponto predefinido, x˙R é a velocidade em m / s no momento inicial e x¨R é a aceleração em m/s2. As medições são

z=(x(M)y(M))

O que escolho é a minha aceleração a cada etapa do tempo i (os intervalos de tempo têm a duração t):

u=(x¨(u)y¨(u))

Como o filtro Kalman é um filtro linear, meu modelo de estado é:

x(P)=Ax+Bu

A medição depende do estado, com algum ruído v:

z=Hx+v

com AR4×4, HR2×4. Como se pode decompor a aceleração / velocidade nas direções e a equação para a nova posição é

xnew(t)=x+x˙t+0.5x¨t2ynew(t)=y+y˙t+0.5y¨t2x˙new(t)=x˙+x¨ty˙new(t)=y˙+y¨t

Portanto, dado o nosso modelo de estado, obtemos:

x(P)=(10t0010t00100001)Aix+(0.5t2000.5t2t00t)Biui
  1. Até agora, este é um cenário / abordagem razoável para o filtro Kalman?

  2. Como escolho a matriz de covariância inicial da incerteza P0R4×4 / o estado inicial x? Ouvi dizer que a maioria torna os valores da matriz "grandes" - o que isso significa. Por exemplo, deve ser uma matriz diagonal

    P0=(a10000a20000a30000a4)
    para alguns aR+? Por exemplo,a1=a2=20000000 como o diâmetro da terra é de cerca de 40000 km e a3=a4=90 como indo mais do que 324 km/h nunca vai acontecer para um carro?

    Para o parâmetro de estado inicial, eu esperaria duas etapas de tempo:

    x0=(x1(M)y1(M)x1(M)x2(M)y1(M)y2(M))

Etapa de previsão

A previsão de estado funciona como acima:

xi+1(P)=Aixi+Biui

Previsão de covariância:

(P)Pi+1(P)=APiAT+QwithQR4×4.
  1. Onde obtenho a covariância de erros do processo Qde? Quais propriedades ele precisa ter? Eu acho positivo definitivo? O que essa matriz significa?

Etapa de inovação

Inovação, que compara a medida com a previsão:

y~i+1=zi+1Hxi+1(P)
  1. (resolvido) : Onde obtenho a matriz de observaçãoHR2×4de? O que isso significa?

EDIT :

Deixa comigo. No meu exemplo

H=(10000100),
pois codifica a relação entre o estado e a medida.

Covariância da inovação:

Si+1=HPi+1(P)HT+R

Para a covariância do erro de medição RR2×2Eu tenho que saber algo sobre o funcionamento dos meus sensores. Eu acho que isso geralmente será uma matriz diagonal, pois os sensores serão independentes (?).

Ganho de Kalman:

Ki+1=Pi+1(P)HTSi+11

Agora, finalmente, a atualização de estado e covariância:

xi+1=xi+1(P)+Ki+1y~
Pi+1=(IKi+1H)Pi+1(P)

Fontes:


martin-thoma.com/kalman-filter é um artigo que escrevi com base nesta pergunta e nas respostas.
Martin Thoma

Por favor, consulte nossos dois trabalhos na edição de dezembro de 2016 da revista SADHANA anexada a este documento. Prof.MRAnanthasayanam.
ANANTHASAYANAM

@ANANTHASAYANAM: converti sua resposta em um comentário. Seria bom se você tivesse uma resposta nesses documentos para fornecer links para eles.
Peter K.

Respostas:


5

Até agora, este é um cenário / abordagem razoável para o filtro Kalman?

Resposta 1: Sim, seu modelo parece razoável. Você está tratando a aceleração como constante, no entanto. Se isso mudar na sua experiência, inclua isso na matriz de erros do sistemaQ.

Como escolho a matriz de covariância inicial da incerteza P0R4×4 / o estado inicial x?

Resposta 2: P0é a sua covariância inicial do estado . Isso expressa o quanto você sabe sobre a estimativa inicial do estadox0. Se você não tem ideia, é comum definir

P0=σ2I4
Onde σ2é grande. Veja, por exemplo, esta resposta que defineσ2=1000.

Onde obtenho a covariância de erros do processo Qde? Quais propriedades ele precisa ter? Eu acho positivo definitivo? O que essa matriz significa?

Resposta 3: Essa matriz expressa o erro do seu sistema. As entradas nesta matriz representam a covariância dos valores correspondentes no seu modelo de sistema. Se você assume, por exemplo, a aceleração tão constante como você, mas vai mudar no mundo real, convém incluir aqui a covariância correspondente.

Além disso, é sempre uma boa ideia experimentar o seu Q e Pmatrizes muito. FazerQ maior dependerá mais de seus dados ao vivo, tornando Pmaior dependerá mais de sua previsão. Raramente um modelo é perfeito sem ajuste.


Eu pensei que poderia ajustar o uiem cada etapa do tempo e, assim, ajustar a aceleração em cada etapa?
Martin Thoma

11
Resposta 2: pensei R já codificaria meu erro de medição e Pcodificaria a atual incerteza sobre o estado?
Martin Thoma

@MartinThoma 1: Pensei que você tivesse dito apenas medições de distância? Como você está obtendo a aceleração se não pode medi-la? 2: Você está correto.P0 é a sua covariância inicial do estado e Pké a covariância do estado atual. Em geral,Pké independente de qualquer medida. Conforme sua equação (P) [que acabei de marcar], a menos que A ou Q variam no tempo, Pevoluirá independentemente de qualquer outra coisa acontecendo no sistema.
Peter K.

2
@Emiswelt: Sua resposta 2 parece incorreta para mim. A questão era: como escolho a matriz de covariância inicial da incerteza? que não se refere ao erro de medição?
Peter K.

2
@Emiswelt: OK. Eu editei. Deixe-me saber se está tudo bem. Eu tenho uma visão um pouco diferente do ponto 3 ... o que me leva a repensar o ponto 1 ... :-) Vou deixar cozinhar um pouco antes de compor uma resposta.
Peter K.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.