Filtro de Kalman

O que é o filtro de Kalman?

O filtro de Kalman é um algoritmo de estimação recursiva que combina previsões e medições ruidosas. Ele foi desenvolvido por Rudolf E. Kálmán na década de 1960 para sistemas lineares gaussianos. O filtro mantém uma estimativa do estado oculto e sua incerteza (covariância). A cada passo, ele faz uma previsão (modelo dinâmico) e uma correção (medição). A correção é ponderada pela confiança em cada fonte: o ganho de Kalman. Esse ganho minimiza o erro quadrático médio da estimativa. O filtro é ótimo para sistemas lineares com ruídos gaussianos brancos. Ele é amplamente usado em navegação, controle, visão computacional e finanças. Sua implementação é eficiente, exigindo apenas operações matriciais.

Características fundamentais

O filtro de Kalman possui três características principais que o definem. Primeiro, ele é recursivo: não precisa de todo o histórico, apenas do estado atual. Segundo, ele fornece uma estimativa de incerteza (matriz de covariância) junto com o estado. Terceiro, ele é ótimo no sentido de mínimos quadrados para sistemas lineares. Ele também pode lidar com medições de diferentes frequências ou com dados faltantes. A predição usa um modelo de transição de estado (matriz A) e controle (B). A correção usa um modelo de observação (matriz H) que relaciona estado e medição.

Vantagens e aplicações típicas

A principal vantagem é a capacidade de fundir dados de múltiplos sensores ruidosos. Ele é usado em GPS, rastreamento de alvos, robótica e economia. Também é aplicado em filtragem de sinais e previsão de séries temporais. Contudo, ele falha em sistemas não-lineares; para esses, usa-se o filtro estendido (EKF) ou unscented (UKF).

O filtro de Kalman é um caso especial de inferência bayesiana em redes gaussianas dinâmicas. A predição é o passo de “propagação” da crença usando o modelo dinâmico. A correção é o passo de “atualização” usando a verossimilhança da medição. O ganho de Kalman K = P_pred * H^T * (H * P_pred * H^T + R)^(-1). Ele equilibra a incerteza da previsão (P_pred) e o ruído da medição (R). Se o ruído de medição é alto, K é pequeno, confiando mais na previsão. Se a previsão é incerta, K é grande, confiando mais na medição. O filtro converge rapidamente e é estável para sistemas detectáveis. A matriz de covariância P evolui e diminui com o tempo, convergindo para um valor estacionário. O filtro também pode estimar parâmetros desconhecidos (filtro de Kalman estendido dual). Ele é a base de sistemas de navegação inercial (INS/GPS) em aviões e carros autônomos. No rastreamento de objetos, ele prevê a posição futura e corrige com detecções visuais. O filtro de Kalman é frequentemente o primeiro algoritmo ensinado em cursos de estimação. Assim, ele é uma ferramenta essencial para engenheiros e cientistas de dados.

Um exemplo clássico é rastrear a posição de um carro em movimento retilíneo uniforme. O estado é [posição, velocidade]. A medição é a posição com ruído. O modelo de transição é posição += velocidade*dt, velocidade constante. O filtro estima a posição suavizada e a velocidade mesmo com medições ruidosas.


Enunciado do exemplo clássico

Implemente o filtro de Kalman para rastrear um objeto em 1D com movimento uniforme. Estado: [posição (m), velocidade (m/s)]. dt = 0.1 s. Modelo dinâmico: posição = posição + velocidade*dt + ruído de processo (q=0.5). Medição: posição observada com ruído gaussiano (r=2.0). Gere 50 medições sintéticas a partir de uma trajetória real (posição inicial 0, vel=3 m/s). Execute o filtro e plote a posição real, as medições e a estimativa filtrada.

Este código implementa o filtro de Kalman para rastreamento 1D. As medições ruidosas são suavizadas pela estimativa recursiva. O intervalo de confiança (2σ) mostra a incerteza da estimativa. A velocidade é estimada indiretamente, mesmo sem ser medida diretamente. Para iniciantes, este exemplo demonstra o poder da fusão de dados. O filtro de Kalman é, portanto, uma ferramenta fundamental em engenharia de controle.

Deixe um comentário