Filtro de Kalman Linear

O que é o filtro de Kalman linear?

O filtro de Kalman linear é a versão original do algoritmo, projetada para sistemas lineares gaussianos. Ele assume que tanto o modelo dinâmico quanto o de observação são funções lineares das variáveis de estado. As equações de transição e medição são matrizes que multiplicam o estado atual. Os ruídos de processo e de medição são gaussianos com média zero e covariâncias conhecidas. Essas suposições garantem que a distribuição de probabilidade do estado permaneça gaussiana. Portanto, o filtro é completamente descrito pela média (estimativa) e covariância. Ele é a solução ótima para o problema de filtragem linear quadrática. Não há necessidade de linearizações ou aproximações adicionais. Isso o torna computacionalmente eficiente e matematicamente tratável.

Características fundamentais do filtro linear

O filtro linear possui três características principais que o distinguem. Primeiro, as matrizes A (transição), H (observação), Q e R são constantes ou conhecidas. Segundo, a predição e a correção são feitas por operações matriciais diretas. Terceiro, o ganho de Kalman é calculado analiticamente a cada passo. O filtro é estável se o sistema for detectável e a matriz A for estável. A covariância P converge para um valor estacionário independente das medições. Isso permite pré-calcular o ganho de Kalman para sistemas invariantes no tempo.

Vantagens e aplicações típicas

A principal vantagem é a exatidão e a velocidade para problemas lineares. Ele é usado em navegação inercial, rastreamento de satélites e economia. Também é aplicado em processamento de sinais e controle ótimo (LQG). Contudo, ele não lida com não-linearidades; para isso, usa-se o EKF ou UKF.

O filtro de Kalman linear é frequentemente chamado de “filtro de Kalman simples”. Ele é a base para a maioria das aplicações de fusão de sensores. A predição usa x̂ₖ₋₁ → x̂ₖ⁻ = A * x̂ₖ₋₁ + B * uₖ (controle opcional). A covariância predita é Pₖ⁻ = A * Pₖ₋₁ * Aᵀ + Q. A correção usa a medição zₖ: y = zₖ – H * x̂ₖ⁻ (inovação). O ganho é K = Pₖ⁻ * Hᵀ * (H * Pₖ⁻ * Hᵀ + R)⁻¹. A estimativa atualizada é x̂ₖ = x̂ₖ⁻ + K * y. A covariância atualizada é Pₖ = (I – K * H) * Pₖ⁻. O filtro é recursivo e não precisa armazenar todo o histórico. A matriz de covariância P representa a incerteza da estimativa. O traço de P é minimizado pelo ganho de Kalman em cada passo. O filtro também pode ser usado para suavização (estimativa offline). O suavizador de Kalman (RTS) processa os dados para frente e depois para trás. Assim, o filtro de Kalman linear é uma joia da engenharia de controle.

Um exemplo clássico é estimar a posição e a velocidade de um veículo com aceleração desconhecida. O estado é [posição, velocidade] e a medição é a posição do GPS. O modelo linear assume aceleração como ruído branco (processo). O filtro linear produz estimativas ótimas mesmo com GPS ruidoso.


Enunciado do exemplo clássico

Implemente o filtro de Kalman linear para um sistema de segunda ordem (posição e velocidade). Modelo: posição(k+1) = posição(k) + velocidade(k)*dt + 0.5*a*dt², com aceleração a como ruído Q. Velocidade(k+1) = velocidade(k) + a*dt. Medimos apenas a posição com ruído R. Use dt=0.05s, Q=0.1 (aceleração aleatória), R=0.5. Gere 100 passos com aceleração real variável (senoidal). Plote a posição real, medições e estimativa, além do erro de estimativa.

Este código implementa o filtro de Kalman linear com aceleração variável. A posição real é suavizada, e a velocidade é estimada indiretamente. O intervalo de confiança reflete a incerteza propagada pelo filtro. O erro da posição permanece dentro do envelope de 2σ na maioria do tempo. Para iniciantes, este exemplo mostra a eficácia do filtro linear. O filtro de Kalman linear é, portanto, uma ferramenta precisa e confiável.

Deixe um comentário