MCU & FPGA DSP Filtros Estatísticos em Sistemas Embarcados: EMA, Wiener e Kalman Aplicados ao RP2040

Filtros Estatísticos em Sistemas Embarcados: EMA, Wiener e Kalman Aplicados ao RP2040


3 — Filtro de Kalman: estimação de estados, incerteza e predição

Image

Se o Filtro de Wiener pode ser visto como um estimador ótimo estático, o Filtro de Kalman é a sua evolução natural para sistemas dinâmicos. Ele responde a uma pergunta ainda mais poderosa:

Qual é o estado mais provável do sistema agora — e qual será o próximo — considerando medições ruidosas e um modelo físico?

Aqui entramos em um território onde filtro, estimador e decisor se tornam praticamente a mesma coisa.


3.1 Intuição antes da matemática

A ideia central do Kalman é simples quando vista corretamente:

  • Toda medição é incerta
  • Todo modelo é imperfeito
  • A melhor estimativa surge do equilíbrio entre os dois

O filtro de Kalman faz isso explicitamente, mantendo:

  • Uma estimativa do estado
  • Uma estimativa da incerteza dessa estimativa

Isso é algo que nem a EMA nem o Wiener fazem de forma explícita.


3.2 Modelo de estado (caso 1D)

Para sistemas embarcados simples, um Kalman 1D já resolve muitos problemas.

Modelo:

\[
x_k = x_{k-1} + w_k
\]
\[
z_k = x_k + v_k
\]

Onde:

  • \(x_k\): estado verdadeiro (desconhecido)
  • \(z_k\): medição
  • \(w_k\): ruído do processo (modelo)
  • \(v_k\): ruído da medição (sensor)

Variâncias:

  • \(Q = \mathrm{Var}(w)\) → confiança no modelo
  • \(R = \mathrm{Var}(v)\) → confiança no sensor

3.3 Ciclo do Kalman: previsão e correção

O Kalman funciona em dois passos repetidos a cada amostra.

1️⃣ Previsão

\[
\hat{x}^- = \hat{x}
\]
\[
P^- = P + Q
\]

2️⃣ Correção

\[
K = \frac{P^-}{P^- + R}
\]
\[
\hat{x} = \hat{x}^- + K(z – \hat{x}^-)
\]
\[
P = (1 – K) P^-
\]

Onde:

  • \(\hat{x}\): estimativa
  • \(P\): incerteza
  • \(K\): ganho de Kalman (adaptativo!)

Observe algo importante:

O ganho K não é escolhido arbitrariamente — ele emerge do balanço entre Q e R.


3.4 Comparação conceitual com EMA e Wiener

Há uma razão pela qual o Kalman aparece como “complexo” em livros: ele generaliza os outros filtros.

  • EMA ≈ Kalman com Q e R fixos e implícitos
  • Wiener ≈ Kalman sem dinâmica (estado constante)
  • Kalman → Wiener + tempo + incerteza explícita

Isso explica por que:

Todo engenheiro usa Kalman, mesmo sem perceber.


3.5 Implementação Kalman 1D em C (viável em MCU)

Estrutura mínima:

typedef struct {
    float x; // estimativa do estado
    float P; // incerteza
    float Q; // ruído do processo
    float R; // ruído da medição
} kalman1d_t;

Inicialização:

static inline void kalman_init(kalman1d_t *k,
                               float x0,
                               float P0,
                               float Q,
                               float R)
{
    k->x = x0;
    k->P = P0;
    k->Q = Q;
    k->R = R;
}

Passo completo:

static inline float kalman_step(kalman1d_t *k, float z)
{
    // Previsão
    k->P += k->Q;

    // Ganho
    float K = k->P / (k->P + k->R);

    // Correção
    k->x += K * (z - k->x);
    k->P *= (1.0f - K);

    return k->x;
}

Custo:

  • Algumas somas e multiplicações
  • Nenhuma matriz
  • Ideal para loop rápido

3.6 Escolhendo Q e R (engenharia prática)

Essa é a parte onde Kalman “ganha fama de difícil”, mas na prática:

  • R → quanto você confia no sensor
  • Q → quanto você confia no modelo

Regras práticas:

SituaçãoQR
Sensor ruidosobaixoalto
Modelo fracoaltobaixo
Resposta rápidamaior
Estabilidademaior

Não existe valor “correto” universal — existe valor adequado ao sistema.


3.7 Quando Kalman é a escolha certa

Use Kalman quando:

  • O sistema tem dinâmica (movimento, variação)
  • O estado não é diretamente observável
  • Você precisa prever
  • A incerteza importa

Exemplos típicos:

  • Fusão de sensores
  • Estimativa de posição/velocidade
  • Filtragem de sinais lentos com ruído
  • Controle e navegação

3.8 Onde Kalman não compensa

Não use Kalman quando:

  • O sinal é puramente aleatório
  • Não há modelo físico
  • Uma EMA resolve
  • O custo cognitivo não se justifica

Usar Kalman sem modelo é apenas EMA complicada.


0 0 votos
Classificação do artigo
Inscrever-se
Notificar de
guest
0 Comentários
mais antigos
mais recentes Mais votado
Feedbacks embutidos
Ver todos os comentários

Related Post

Quefrequência e Análise Cepstral: Uma Introdução Prática para Sistemas Embarcados (ESP32-P4)Quefrequência e Análise Cepstral: Uma Introdução Prática para Sistemas Embarcados (ESP32-P4)

A análise cepstral e o conceito de quefrequência são técnicas essencialmente poderosas no processamento de sinais de áudio, permitindo separar efeitos de excitação, resposta acústica e periodicidades espectrais que não

0
Adoraria saber sua opinião, comente.x