Filtro de Kalman na prática: limpando a posição de um navio
Em Instrumentação, uma das atividades em grupo foi reproduzir no Octave o filtro de Kalman linear visto em aula. O sinal era a posição de um navio no movimento de surge, o avanço para frente e para trás, medida com ruído.
O modelo
A dinâmica é a de uma massa com amortecimento empurrada por uma força:
m·x'' + b·x' = F
com massa de cerca de 1,07 × 108 kg, ou seja, um navio bem grande. Os estados são posição e velocidade, a entrada é a força e a medida é só a posição. Discretizamos por Euler explícito com passo de 0,1 s.
Escolhendo Q e R
- R, o ruído da medição, foi estimado tirando do sinal uma tendência lenta (média móvel de uns 50 s) e calculando a variância do que sobrou.
- Q, a incerteza do modelo, começou bem pequena: 10-8 na diagonal.
O que dá para aprender
A parte mais legal foi variar Q. Com Q pequeno, o filtro confia muito no modelo: a curva fica lisinha, mas atrasa em relação ao sinal real. Aumentando Q, o filtro passa a confiar mais na medida, o atraso some e o ruído volta junto. Não existe almoço grátis, só compromisso.
Um navio de cem milhões de quilos e eu aqui com dificuldade para estacionar o carro.
Finalmente uma explicação de Q e R que eu entendi.