Filtro de Kalman Estendido – EKF

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.

Deixe um comentário