Filtro de Kalman Estendido – EKF

professora

O que é o filtro de Kalman estendido (EKF)?

O filtro de Kalman estendido (EKF) é uma versão não-linear do filtro de Kalman clássico. Ele lineariza funções não-lineares usando derivadas parciais (matrizes Jacobianas). A cada passo, a transição e a observação são aproximadas por suas tangentes. Essa linearização ocorre em torno da estimativa atual do estado. O EKF é amplamente usado em robótica, navegação e sistemas de localização. Ele permite modelar rotações, ângulos e cinemática não-linear de veículos. Apesar de não ser ótimo, ele funciona bem para não-linearidades moderadas. Para fortes não-linearidades, o UKF ou filtros de partículas são preferíveis.

Características fundamentais do EKF

O EKF possui três características principais que o distinguem do Kalman linear. Primeiro, ele usa Jacobianas da função de transição (F) e observação (H). Segundo, a predição é feita aplicando a função não-linear diretamente ao estado. Terceiro, a covariância é propagada usando as Jacobianas linearizadas. O filtro é sensível a erros de linearização se a não-linearidade for forte. A escolha do ponto de linearização (a estimativa atual) é crucial.

Vantagens e aplicações típicas

A principal vantagem é estender o Kalman para problemas reais não-lineares. Ele é usado em SLAM (localização e mapeamento simultâneos) e navegação de drones. Também é aplicado em rastreamento de alvos com movimento curvilíneo. Contudo, ele pode divergir se a Jacobiana for mal calculada.

O EKF é o padrão industrial para muitos sistemas de navegação. No passo de predição, x̂ₖ⁻ = f(x̂ₖ₋₁, uₖ), onde f é a função não-linear. A matriz Jacobiana Fₖ = ∂f/∂x é calculada no ponto x̂ₖ₋₁. A covariância predita é Pₖ⁻ = Fₖ * Pₖ₋₁ * Fₖᵀ + Q. No passo de correção, a inovação é y = zₖ – h(x̂ₖ⁻). A Jacobiana Hₖ = ∂h/∂x é calculada no ponto x̂ₖ⁻. O ganho é K = Pₖ⁻ * Hₖᵀ * (Hₖ * Pₖ⁻ * Hₖᵀ + R)⁻¹. A atualização é x̂ₖ = x̂ₖ⁻ + K * y e Pₖ = (I – K*Hₖ) * Pₖ⁻. O EKF requer que as funções f e h sejam diferenciáveis. Ele é computacionalmente mais custoso que o linear devido às Jacobianas. O desempenho do EKF depende da qualidade da linearização local. Para melhorar, usa-se o EKF iterativo (IEKF) que repete a correção. Outra variação é o EKF com múltiplos modelos (MMEKF) para saltos. Assim, o EKF é uma ferramenta prática e consolidada em engenharia.

Um exemplo clássico é rastrear um veículo com movimento circular (ângulo e velocidade). A posição (x,y) depende do seno e cosseno do ângulo, funções não-lineares. A medição é a distância e o ângulo de um radar (coordenadas polares). O EKF lineariza essas relações para estimar a posição cartesiana.


Enunciado do exemplo clássico

Implemente o EKF para rastrear um objeto em 2D com movimento de velocidade constante e ângulo variável. Estado: [x, y, vx, vy] (posição e velocidade cartesianas). Transição não-linear: x += vx*dt, y += vy*dt (linear, mas incluímos ruído). Observação não-linear: distância r = sqrt(x²+y²) e ângulo θ = atan2(y,x) medidas com ruído. Gere 60 medições sintéticas de uma trajetória circular (raio 10, velocidade angular 0.1 rad/s). Plote a trajetória real, medições (r,θ convertidos para x,y) e estimativa EKF.

Este código implementa o EKF com observação polar não-linear. A trajetória circular é bem reconstruída apesar do ruído nas medições. O erro de posição permanece pequeno, validando o filtro. A Jacobiana da observação é calculada analiticamente para precisão. Para iniciantes, este exemplo mostra como estender o Kalman a problemas reais. O filtro de Kalman estendido é, portanto, uma ferramenta indispensável em robótica.

Filtro de Kalman Linear

professora

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.