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 x∈R é 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 A∈R4×4, H∈R2×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)⏟Bi⋅ui
  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 P0∈R4×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 a∈R+? 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=(x−1(M)y−1(M)x−1(M)−x−2(M)y−1(M)−y−2(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+QwithQ∈R4×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+1−Hxi+1(P)
  1. (resolvido) : Onde obtenho a matriz de observaçãoH∈R2×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 R∈R2×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+1−1

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

xi+1=xi+1(P)+Ki+1y~
Pi+1=(I−Ki+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 P0∈R4×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.