Filtro de Kalman em uma dimensão

Este capítulo descreve o Filtro de Kalman em uma dimensão. O principal objetivo deste capítulo é explicar o conceito do Filtro de Kalman de uma forma simples e intuitiva, sem usar ferramentas que podem parecer complexas e confusas.

Avançaremos para as equações do Filtro de Kalman passo a passo.

  • Primeiro, vamos derivar as equações do Filtro de Kalman para um exemplo simples, sem o ruído do processo.
  • Depois, adicionaremos o ruído do processo.

Filtro de Kalman Unidimensional sem o ruído do processo

Como mencionei anteriormente, o Filtro de Kalman é baseado em cinco equações. Já estamos familiarizados com duas delas:

  • As equações de atualização de estado.
  • As equações do modelo dinâmico.

Neste capítulo, iremos derivar outras três equações do filtro de Kalman.

Vamos relembrar nosso primeiro exemplo (medição do peso da barra de ouro), fizemos várias medições e calculamos a estimativa pela média.

Chegamos no seguinte resultado:

Measurements vs. True value vs. Estimates

No gráfico acima, você pode ver o valor real, o valor estimado e as medições, vs. o número de medições.

As diferenças entre as medições (amostras azuis) e o valor verdadeiro (linha verde) são erros de medição. Uma vez que os erros de medição são aleatórios, podemos descrevê-los pela variância (\ (\sigma^{2} \)). A variação dos erros de medição pode ser fornecida pelo fornecedor da balança ou pode ser derivada pelo procedimento de calibração. A variação dos erros de medição é na verdade a incerteza de medição.

Nota: Em algumas literaturas, a incerteza de medição também é chamada de erro de medição.

Vamos denotar a incerteza de medição por \(r \).

A diferença entre a estimativa (linha vermelha) e o valor verdadeiro (linha verde) é o erro de estimativa. Como você pode ver, o erro de estimativa torna-se cada vez menor à medida que fazemos mais medições, e ele converge para zero, enquanto o valor estimado converge para o valor verdadeiro. Não sabemos qual é o erro de estimativa, mas podemos estimar a incerteza na estimativa.

Vamos denotar a incerteza da estimativa por \(p \).

Vamos dar uma olhada nas medidas de peso FDP (Função de Densidade de Probabilidade).

No gráfico a seguir, podemos ver dez medidas do peso da barra de ouro.

  • As medidas são descritas pela linha azul.
  • O valor verdadeiro é descrito pela linha tracejada vermelha.
  • A linha verde descreve a função de densidade de probabilidade da medição.
  • A área verde em negrito é o desvio padrão ( \( \sigma \) ) da medição, ou seja, há uma probabilidade de 68,26% de que o valor verdadeiro esteja dentro desta área.

Como você pode ver, 8 entre 10 medições estão próximas o suficiente do valor verdadeiro, portanto, o valor verdadeiro está dentro dos limites de \( 1 \sigma \).

A incerteza de medição ( \( r \) ) é a variância da medição ( \(\sigma^{2} \) ).

Measurements Probability Density Function

The Kalman Gain equation in 1d

Vamos derivar a terceira equação que é a Equação de Ganho de Kalman . Agora, vou apresentar a derivação intuitiva da Equação de ganho de Kalman. A derivação matemática será mostrada nos próximos capítulos.

Em um filtro de Kalman, os parâmetros \( \alpha \) - \( \beta \) (- \( \gamma \) ) são calculados dinamicamente para cada iteração do filtro. Esses parâmetros são chamados de Ganho de Kalman e denotados por \( K_{n} \).

A Equação de ganho de Kalman é a seguinte:

\[ K_{n}= \frac{Incerteza \quad na \quad Estimada}{Incerteza \quad na \quad Estimada \quad + \quad Incerteza \quad na \quad Medição} = \frac{p_ {n, n-1 }}{p_ {n, n-1} + r_{n}} \]
Where:
\( p_{n,n-1} \) é a incerteza da estimativa extrapolada
\( r_{n} \) é a incerteza da medição

O ganho de Kalman é um número entre zero e um:

\[ 0 \leq K_{n} \leq 1 \]

Vamos reescrever a equação de atualização de estado:

\[ \hat{x}_{n,n}=~ \hat{x}_{n,n-1}+ K_{n} \left( z_{n}- \hat{x}_{n,n-1} \right) = \left( 1-K_{n} \right) \hat{x}_{n,n-1}+ K_{n}z_{n} \]

Como você pode ver, o ganho de Kalman \( \left( K_{n} \right) \) é o peso que damos à medição. E \( \left(1-K_{n} \right) \) é o peso que damos à estimativa.

Quando a incerteza da medição é muito grande e a incerteza da estimativa muito pequena, o Ganho de Kalman é próximo a zero. Consequentemente, damos um grande peso à estimativa e um pequeno peso à medição.

Por outro lado, quando a incerteza da medição é muito pequena e a incerteza da estimativa muito grande, o Ganho de Kalman é próximo a um. Consequentemente, damos um peso pequeno à estimativa e um peso grande à medição.

Se a incerteza da medição for igual à incerteza da estimativa, o ganho de Kalman será igual a 0.5.

O ganho de Kalman informa o quanto desejo alterar minha estimativa com uma determinada medição.

A equação de Ganho de Kalman é a terceira equação do filtro de Kalman.

A estimativa de atualização da incerteza em 1D

A seguinte equação define a atualização da incerteza estimada:

\[ p_{n,n}=~ \left( 1-K_{n} \right) p_{n,n-1} \]
Where:
\( K_{n} \) é o ganho de Kalman
\( p_{n,n-1} \) é a incerteza da estimativa que foi calculada durante a estimativa do filtro anterior
\( p_{n,n} \) é a estimativa de incerteza do estado atual

Esta equação atualiza a incerteza estimada do estado atual. É chamada de Equação de Atualização da Covariância. Por que covariância? Veremos isso nos próximos capítulos.

É bastante claro a partir da equação que a incerteza da estimativa é sempre menor a cada iteração do filtro, uma vez que \(\left (1-K_ {n} \right) \leq 1 \). Quando a incerteza da medição é grande, o ganho de Kalman será baixo, portanto, a convergência da incerteza da estimativa seria lenta. No entanto, quando a incerteza da medição é pequena, o ganho de Kalman será alto e a incerteza da estimativa convergirá rapidamente para zero.

A Equação de Atualização de Covariância é a quarta equação do Filtro de Kalman.

The estimate uncertainty extrapolation in 1d

Assim como a extrapolação de estado, a extrapolação da incerteza estimada é feita com as equações do modelo dinâmico.

Em nosso segundo exemplo, no caso do radar unidimensional, a posição alvo prevista é:

\[ \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \] \[ \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \]

isto é, a posição prevista é igual à posição estimada atual mais a velocidade estimada atual multiplicada pelo tempo. A velocidade prevista é igual à estimativa da velocidade atual (assumindo o modelo de velocidade constante).

A estimativa de extrapolação da incerteza seria:

\[ p_{n+1,n}^{x}= p_{n,n}^{x} + \Delta t^{2} \cdot p_{n,n}^{v} \] \[ p_{n+1,n}^{v}= p_{n,n}^{v} \]
Where:
\( p^{x} \) é a incerteza da estimativa da posição
\( p^{v} \) é a incerteza da estimativa de velocidade

ou seja, a incerteza da estimativa da posição prevista é igual à incerteza da estimativa da posição atual mais a incerteza da estimativa da velocidade atual multiplicada pelo tempo ao quadrado. A incerteza da estimativa da velocidade prevista é igual à incerteza da estimativa da velocidade atual (assumindo o modelo de velocidade constante).

Nota: Se você está se perguntando, por que o tempo está ao quadrado em \(p_{n + 1, n}^{x} = p_{n, n}^{x} + \Delta t^{2} \ cdot p_{n, n}^{v} \), dê uma olhada na Origem da Esperança da Variância .

Em nosso primeiro exemplo (medição do peso da barra de ouro), a dinâmica do sistema é constante. Assim, a estimativa de extrapolação da incerteza seria:

\[ p_{n+1,n}= p_{n,n} \]
Onde:
\( p \) é a incerteza da estimativa do peso da barra de ouro

A equação de extrapolação da incerteza estimada é chamada de Equação de Extrapolação de Covariância e esta é a quinta equação do Filtro de Kalman.

Putting all together

Neste capítulo, vamos combinar todas as peças em um único algoritmo. Como o filtro \( \alpha \), \(\beta \), (\(\gamma \) ), o filtro Kalman utiliza o algoritmo "Medir, Atualizar, Prever".

O gráfico a seguir fornece uma descrição esquemática de baixo nível do algoritmo:

Schematic description of the Kalman Filter algorithm

As entradas do filtro são:

  • Inicialização
  • A inicialização foi realizada apenas uma vez e fornece dois parâmetros:

    • Estado Inicial do Sistema ( \( \hat{x}_{1,0} \) )
    • Incerteza do Estado Inicial ( \( p_{1,0} \) )

    Os parâmetros de inicialização podem ser fornecidos por outro sistema, outro processo (por exemplo, processo de busca no radar) ou suposição baseada na experiência ou conhecimento teórico. Mesmo que os parâmetros de inicialização não sejam precisos, o filtro de Kalman poderá convergir próximo ao valor real.

  • Medição
  • A medição é realizada para cada ciclo de filtro e fornece dois parâmetros:

    • Estado do Sistema Medido ( \( z_{n} \) )
    • Incerteza da Medição ( \( r_{n} \) )

Além do valor medido, o filtro de Kalman requer os parâmetros de incerteza de medição. Normalmente, este parâmetro é fornecido pelo fornecedor do equipamento ou pode ser obtido pela calibração do equipamento de medição. A incerteza da medição do radar depende de vários parâmetros, como SNR (Relação Sinal Ruído), largura do feixe, largura de banda, tempo no alvo, estabilidade do relógio e muito mais. Cada medição de radar tem SNR diferente, largura do feixe e tempo no alvo. Portanto, esse radar calcula a incerteza de medição para cada medição e relata ao rastreador.

As saídas do filtro são:

  • Estimativa do Estado do Sistema ( \( \hat{x}_{n,n} \) )
  • Estimativa da Incerteza ( \( p_{n,n} \) )

Além da Estimativa do Estado do Sistema, o Filtro de Kalman também fornece Estimativa da Incerteza! Temos o mérito da precisão da estimativa. Como já mencionei, a incerteza da estimativa é dada por:

\[ p_{n,n}=~ \left( 1-K_{n} \right) p_{n,n-1} \]

e \( p_{n,n} \) está sempre ficando menor a cada iteração do filtro, uma vez que \( \left( 1-K_{n} \right) \leq 1 \)

Portanto, cabe a nós decidir quantas medições tomar. Se estamos medindo a altura do edifício, e estamos interessados na precisão de 3 centímetros (\ (\sigma \)), faremos as medições até que a incerteza da estimativa (\ (\sigma^{2} \)) seja menor que 9 centímetros.

A tabela a seguir resume as cinco equações do Filtro de Kalman.

Equação Nome da Equação Nomes alternativos usados na literatura
\( \hat{x}_{n,n}=~ \hat{x}_{n,n-1}+ K_{n} \left( z_{n}- \hat{x}_{n,n-1} \right) \) Atualização de estado Equação de Filtragem
\( \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \)
\( \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \)
(Para dinâmica de velocidade constante)
Extrapolação de Estado Equação de Predição
Equação de Transição
Equação de Previsão
Modelo Dinâmico
Modelo Espaço de Estados
\( K_{n}= \frac{p_{n,n-1}}{p_{n,n-1}+r_{n}} \) Ganho de Kalman Equação de Peso
\( p_{n,n}=~ \left( 1-K_{n} \right) p_{n,n-1} \) Atualização da Covariância Equação de Correção
\( p_{n+1,n}= p_{n,n} \)
(Para dinâmica constante)
Extrapolação da Covariância Equação Preditora da Covariância
Nota 1: Na Equação de Extrapolação de Estado e na Equação de Extrapolação de Covariância depende da dinâmica do sistema.
Nota 2: A tabela acima demonstra a forma especial das equações do Filtro de Kalman adaptadas para o caso específico. A forma geral da equação será apresentada posteriormente em uma notação matricial. No momento, nosso objetivo é entender o conceito do Filtro de Kalman.

A figura a seguir fornece uma descrição detalhada do diagrama de blocos do Filtro de Kalman.

Detailed description of the Kalman Filter algorithm
  • Etapa 0: Inicialização
  • Conforme mencionado acima, a inicialização foi realizada apenas uma vez e fornece dois parâmetros:

    • Estado Inicial do Sistema ( \( \hat{x}_{1,0} \) )
    • Incerteza do Estado Inicial ( \( p_{1,0} \) )

    A inicialização é seguida por previsão.

  • Etapa 1: Medição
  • O processo de medição deve fornecer dois parâmetros:

    • Estado do Sistema Medido ( \( z_{n} \) )
    • Incerteza de Medição( \( r_{n} \) )
  • Etapa 2: Atualização de Estado
  • O processo de atualização de estado é responsável pela estimativa do estado atual do sistema.

    As entradas do processo de atualização de estado são:

    • Valor Medido ( \( z_{n} \) )
    • A Incerteza da Medição ( \( r_{n} \) )
    • Estimativa de Estado do Sistema Anterior ( \( \hat{x}_{n,n-1} \) )
    • Estimativa da Incerteza ( \( p_{n,n-1} \) )

    Com base nas entradas, o processo de atualização de estado calcula o ganho de Kalman e fornece duas saídas:

    • Estimativa do Estado do Sistema Atual ( \( \hat{x}_{n,n} \) )
    • Incerteza da Estimativa do Estado Atual ( \( p_{n,n} \) )

    Esses parâmetros são as saídas do Filtro Kalman.

  • Etapa 3: Predição
  • O processo de previsão extrapola o estado atual do sistema e a incerteza da estimativa do estado atual do sistema para o próximo estado do sistema, com base no modelo dinâmico do sistema.

    Na primeira iteração do filtro, as saídas de inicialização são tratadas como Estimativa de Estado Anterior e Incerteza.

    Nas próximas iterações do filtro, as saídas de previsão tornam-se a Estimativa do Estado Anterior e a Incerteza.

A Intuição do Ganho de Kalman

O Ganho de Kalman define um peso da medição e um peso da estimativa anterior ao formar uma nova estimativa.

Ganho Alto de Kalman

Uma baixa incerteza de medição em relação à incerteza estimada resultaria em um alto ganho de Kalman (próximo a 1). Como resultado, a nova estimativa ficaria próxima da medição. A figura a seguir ilustra a influência do alto ganho de Kalman na estimativa na aplicação de rastreamento de aeronaves.

High Kalman Gain

Ganho Baixo de Kalman

Uma alta incerteza de medição em relação à incerteza estimada resultaria em um baixo ganho de Kalman (próximo a 0). Com isso, a nova estimativa ficaria próxima da estimativa anterior. A figura a seguir ilustra a influência do baixo Ganho de Kalman na estimativa na aplicação de rastreamento de aeronaves.

Low Kalman Gain

Agora, entendemos o algoritmo do Filtro de Kalman e estamos prontos para o primeiro exemplo numérico.

Observação: se você estiver curioso sobre a matemática por trás do Ganho de Kalman, dê uma olhada em Origem do Ganho de Kalman Unidimensional.

Exemplo 5 - Estimando a altura do edifício

Sabemos com certeza que a altura do edifício não muda com o tempo, pelo menos durante o curto processo de medição.

We know for sure, that the building height doesn’t change over time, at least during the short measurement process.

Estimating the building height

O exemplo numérico

  • A verdadeira altura do edifício é de 50 metros.
  • O erro de medição do altímetro (desvio padrão) é de 5 metros.
  • O conjunto de dez medições é: 48.54m, 47.11m, 55.01m, 55.15m, 49.89m, 40.85m, 46.72m, 50.05m, 51.27m, 49.95m.

Iteração Zero

Initialization

Pode-se estimar a altura do edifício simplesmente olhando para ele.

A altura estimada do edifício é:

\[ \hat{x}_{0,0}=60m \]

Agora devemos inicializar a incerteza da estimativa. O erro de estimativa humano (desvio padrão) é de cerca de 15 metros: \ (\sigma = 15 \). Consequentemente, a variância é 225: \(\sigma^{2} = 225 \).

\[ p_{0,0}=225 \]

Predição

Agora, devemos prever o próximo estado com base nos valores de inicialização.

Como o modelo dinâmico do sistema de uso é constante, ou seja, o edifício não muda sua altura, então:

\[ \hat{x}_{1,0}=\hat{x}_{1,0}= 60m \]

A incerteza da estimativa extrapolada (variância) também não muda:

\[ p_{1,0}= p_{0,0}=225 \]

Primeira Iteração

Step 1 - Measure

A primeira medição é: \( z_{1}=48.54m \).

Uma vez que o desvio padrão (\ (\sigma \)) do erro de medição do altímetro é 5, a variância (\ (\sigma ^ {2} \)) seria 25, portanto, a incerteza de medição é: \ (r_{1} = 25 \).

Passo 2 - Atualização

Cálculo de Ganho de Kalman:

\[ K_{1}= \frac{p_{1,0}}{p_{1,0}+r_{1}}= \frac{225}{225+25}=0.9 \]

Estimando o estado atual:

\[ \hat{x}_{1,1}=~ \hat{x}_{1,0}+ K_{1} \left( z_{1}- \hat{x}_{1,0} \right) =60+0.9 \left( 48.54-60 \right) =49.69m \]

Atualizando a incerteza da estimativa atual:

\[ p_{1,1}=~ \left( 1-K_{1} \right) p_{1,0}= \left( 1-0.9 \right) 225=22.5 \]

Passo 3 - Predição

Uma vez que o modelo dinâmico do sistema de uso é constante, ou seja, o edifício não muda sua altura, então:

\[ \hat{x}_{2,1}=\hat{x}_{1,1}= 49.69m \]

A incerteza da estimativa extrapolada (variância) também não muda:

\[ p_{2,1}= p_{1,1}=22.5 \]

Segunda Iteração

Após um atraso de tempo unitário, a estimativa prevista da iteração anterior torna-se uma estimativa anterior na iteração atual:

\[ \hat{x}_{2,1}=49.69m \]

A incerteza da estimativa extrapolada torna-se a incerteza da estimativa anterior:

\[ p_{2,1}= 22.5 \]

Passo 1 - Medição

A segunda medição é: \( z_{2}=47.11m \)

A incerteza de medição é: \( r_{2}=25 \)

Passo 2 - Atualização

Cálculo de ganho de Kalman:

\[ K_{2}= \frac{p_{2,1}}{p_{2,1}+r_{2}}= \frac{22.5}{22.5+25}=0.47 \]

Estimando o estado atual:

\[ \hat{x}_{2,2}=~ \hat{x}_{2,1}+ K_{2} \left( z_{2}- x_{2,1} \right) =49.69+0.47 \left( 47.11-49.69 \right) =48.47m \]

Atualizando a incerteza da estimativa atual:

\[ p_{2,2}=~ \left( 1-K_{2} \right) p_{2,1}= \left( 1-0.47 \right) 22.5=11.84 \]

Passo 3 - Predição

Uma vez que o modelo dinâmico do sistema de uso é constante, ou seja, o edifício não muda sua altura, então:

\[ \hat{x}_{3,2}=\hat{x}_{2,2}= 48.47m \]

A incerteza da estimativa extrapolada (variância) também não muda:

\[ p_{3,2}= p_{2,2}=11.84 \]

Iterações 3-10

Os cálculos para as próximas iterações são resumidos na próxima tabela:

\( n \) \( z_{n} \) Estimativas do estado atual ( \( K_{n} \) , \( \hat{x}_{n,n} \) , \( p_{n,n} \) ) Predição ( \( \hat{x}_{n+1,n} \) , \( p_{n+1,n} \) )
3 \( 55.01m \) \[ K_{3}= \frac{11.84}{11.84+25}=0.32 \] \[ \hat{x}_{3,3}=~ 48.47+0.32 \left( 55.01 -48.47 \right) =50.57m \] \[ p_{3,3}= \left( 1-0.32 \right) 11.84=8.04 \] \[ \hat{x}_{4,3}= \hat{x}_{3,3}=50.57m \] \[ p_{4,3}= p_{3,3}=8.04 \]
4 \( 55.15m \) \[ K_{4}= \frac{8.04}{8.04+25}=0.24 \] \[ \hat{x}_{4,4}=~ 50.57+0.24 \left( 55.15 -50.57 \right) =51.68m \] \[ p_{4,4}= \left( 1-0.24 \right) 8.04=6.08 \] \[ \hat{x}_{5,4}= \hat{x}_{4,4}=51.68m \] \[ p_{5,4}= p_{4,4}=6.08 \]
5 \( 49.89m \) \[ K_{5}= \frac{6.08}{6.08+25}=0.2 \] \[ \hat{x}_{5,5}= 51.68+0.2 \left( 49.89 -51.68 \right) =51.33m \] \[ p_{5,5}= \left( 1-0.2 \right) 6.08=4.89 \] \[ \hat{x}_{6,5}= \hat{x}_{5,5}=51.33m \] \[ p_{6,5}= p_{5,5}=4.89 \]
6 \( 40.85m \) \[ K_{6}= \frac{4.89}{4.89+25}=0.16 \] \[ \hat{x}_{6,6}=~ 51.33+0.16 \left( 40.85 -51.33 \right) =49.62m \] \[ p_{6,6}= \left( 1-0.16 \right) 4.89=4.09 \] \[ \hat{x}_{7,6}= \hat{x}_{6,6}=49.62m \] \[ p_{7,6}= p_{6,6}=4.09 \]
7 \( 46.72m \) \[ K_{7}= \frac{4.09}{4.09+25}=0.14 \] \[ \hat{x}_{7,7}=~ 49.62+0.14 \left( 46.72 -49.62 \right) =49.21m \] \[ p_{7,7}= \left( 1-0.14 \right) 4.09=3.52 \] \[ \hat{x}_{8,7}= \hat{x}_{7,7}=49.21m \] \[ p_{8,7}= p_{7,7}=3.52 \]
8 \( 50.05m \) \[ K_{8}= \frac{3.52}{3.52+25}=0.12 \] \[ \hat{x}_{8,8}= 49.21+0.12 \left( 50.05 -49.21 \right) =49.31m \] \[ p_{8,8}= \left( 1-0.12 \right) 3.52=3.08 \] \[ \hat{x}_{9,8}= \hat{x}_{8,8}=49.31m \] \[ p_{9,8}= p_{8,8}=3.08 \]
9 \( 51.27m \) \[ K_{9}= \frac{3.08}{3.08+25}=0.11 \] \[ \hat{x}_{9,9}=~ 49.31+0.11 \left( 51.27 -49.31 \right) =49.53m \] \[ p_{9,9}= \left( 1-0.11 \right) 3.08=2.74 \] \[ \hat{x}_{10,9}= \hat{x}_{9,9}=49.53m \] \[ p_{10,9}= p_{9,9}=2.74 \]
10 \( 49.95m \) \[ K_{10}= \frac{2.74}{2.74+25}=0.1 \] \[ \hat{x}_{10,10}=~ 49.53+0.1 \left( 49.95 -49.53 \right) =49.57m \] \[ p_{10,10}= \left( 1-0.1 \right) 2.74=2.47 \] \[ \hat{x}_{11,10}= \hat{x}_{10,10}=49.57m \] \[ p_{11,10}= p_{10,10}=2.47 \]

O gráfico a seguir compara o valor verdadeiro, os valores medidos e as estimativas.

True value, measured values and estimates

Como você pode ver, o valor estimado converge cerca de 49.5 metros após 7 medições.

O próximo gráfico compara a incerteza da medição e a incerteza estimada.

Measurement uncertainty and estimate uncertainty

Na primeira iteração do filtro, a incerteza da estimativa está próxima da incerteza da medição e diminui rapidamente. Após 10 medições, a incerteza estimada (\ (\sigma^{2} \)) é 2.47, ou seja, o desvio padrão do erro da estimativa é: \ (\sigma = \sqrt[]{2,47} = 1.57m \)

Portanto, podemos dizer que a estimativa da altura do edifício é: \ (49.57 \pm 1.57m \)

O próximo gráfico mostra o ganho de Kalman.

The Kalman Gain

Como você pode ver, o ganho de Kalman está diminuindo, tornando o peso de medição cada vez menor.

Example summary

Neste exemplo, medimos a altura do edifício usando o Filtro Kalman unidimensional. Ao contrário do filtro \( \alpha - \beta - (\gamma) \), o ganho de Kalman é dinâmico e depende da precisão do dispositivo de medição.

No início, a inicialização do Filtro de Kalman não é precisa. Portanto, o peso das medições na Equação de Atualização do Estado é alto e a incerteza da estimativa é alta.

A cada iteração, o peso da medição é menor e a incerteza da estimativa é menor.

A saída do Filtro de Kalman inclui a estimativa e a incerteza da estimativa.

O modelo completo do Filtro Kalman unidimensional

Agora, vamos atualizar a Equação de Extrapolação de Covariância com a variável de ruído do processo.

The Process Noise

Em um mundo real, existem incertezas no modelo dinâmico do sistema. Por exemplo, quando queremos estimar o valor da resistência do resistor, assumimos o modelo dinâmico constante, ou seja, a resistência não muda entre as medições. No entanto, a resistência pode mudar ligeiramente devido à flutuação da temperatura ambiente. Ao rastrear mísseis balísticos com o radar, a incerteza do modelo dinâmico inclui mudanças aleatórias na aceleração do alvo. Para a aeronave, as incertezas são muito maiores devido às possíveis manobras da aeronave.

Por outro lado, quando estimamos a localização de um objeto estático usando o receptor GPS, a incerteza do modelo dinâmico é zero, uma vez que o objeto estático não se move. A incerteza do modelo dinâmico é chamada de Ruído do Processo. Na literatura, também é denominado ruído de planta, ruído de condução, ruído de dinâmica, ruído de modelo e ruído de sistema. O ruído do processo produz erros de estimativa.

No exemplo anterior, estimamos a altura do edifício. A altura do edifício não muda. Portanto, não levamos em consideração o ruído do processo.

A Variância de ruído do processo é indicada pela letra \(q \).

A Equação de Extrapolação de Covariância deve incluir a Variância de Ruído do Processo.

A Equação de Extrapolação de Covariância para dinâmica constante é:

\[ p_{n+1,n}= p_{n,n}+ q_{n} \]

Estas são as equações do Filtro de Kalman atualizadas em uma dimensão:

Equação Nome da Equação Nomes alternativos usados na literatura
\( \hat{x}_{n,n}=~ \hat{x}_{n,n-1}+ K_{n} \left( z_{n}- \hat{x}_{n,n-1} \right) \) Atualização de estado Equação de Filtragem
\( \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \)
\( \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \)
(Para dinâmica de velocidade constante)
State Extrapolation Equação de Predição
Equação de Transição
Equação de Previsão
Modelo Dinâmico
Modelo Espaço de Estados
\( K_{n}= \frac{p_{n,n-1}}{p_{n,n-1}+r_{n}} \) Ganho de Kalman Equação de Peso
\( p_{n,n}=~ \left( 1-K_{n} \right) p_{n,n-1} \) Atualização da Covariância Equação de Correção
\( p_{n+1,n}= p_{n,n} + q_{n} \)
(For constant dynamics)
Extrapolação da Covariância Equação Preditora da Covariância
Nota 1: Na Equação de Extrapolação de Estado e na Equação de Extrapolação de Covariância dependem da dinâmica do sistema.
Nota 2: A tabela acima demonstra a forma especial das equações do Filtro de Kalman adaptadas para o caso específico. A forma geral da equação será apresentada posteriormente em uma notação matricial. No momento, nosso objetivo é entender o conceito do Filtro de Kalman.

Exemplo 6 – Estimando a temperatura de um líquido em um tanque

Nós gostariamos de estimar a temperatura de um líquido em um tanque.

Estimando a temperatura de um líquido

Nós presumimos que em regime estacionário a temperatura do líquido é constante. Entretanto, algumas flutuações na temperatura real do líquido são possíveis. Podemos descrever a dinâmica do sistema pela equação seguinte:

\[ x_{n}=T+ w_{n} \]

onde:

\( T \) é a temperatura constante

\( w_{n} \) é um ruído de processo aleatório \( q \)

O exemplo ńumérico

  • Vamos assumir que a temperatura real é de 50 graus Celsius.
  • Nós acreditamos que temos um modelo preciso, portanto configuramos a variância do ruído do processo ( \( q \) ) para 0.0001.
  • O erro de medição (desvio padrão) é de 0.1 graus Celsius.
  • As medições são feitas a cada 5 segundos.
  • As temperaturas reais do líquido nos pontos de medições são: 49.979\( ^{o}C \), 50.025\( ^{o}C \), 50\( ^{o}C \), 50.003\( ^{o}C \), 49.994\( ^{o}C \), 50.002\( ^{o}C \), 49.999\( ^{o}C \), 50.006\( ^{o}C \), 49.998\( ^{o}C \), e 49.991\( ^{o}C \).
  • O conjunto de medições é: 49.95\( ^{o}C \), 49.967\( ^{o}C \), 50.1\( ^{o}C \), 50.106\( ^{o}C \), 49.992\( ^{o}C \), 49.819\( ^{o}C \), 49.933\( ^{o}C \), 50.007\( ^{o}C \), 50.023\( ^{o}C \), and 49.99\( ^{o}C \).

O gráfico a seguir compara a temperatura real do líquido e as medições.

Temperatura real vs. medições

Iteração Zero

Antes da primeira iteração, precisamos inicializar o Filtro de Kalman e prever o próximo estado (que é o primeiro estado).

Inicialização

Nós não sabemos qual a temperatura do líquido, e nosso palpite é 10\( ^{o}C \).

\[ \hat{x}_{0,0}=10^{o}C \]

Nosso palpite é bem impreciso. Configuramos nosso erro de estimativa de inicialização \( \sigma \) com 100. A Incerteza de Estimativa da inicialização é o erro de variância \( \left( \sigma ^{2} \right) \):

\[ p_{0,0}=100^{2}=10,000 \]

Essa variância é muito alta. Se inicializarmos com um valor mais significativo vamos obter um a convergência do Filtro de Kalman mais rápida.

Predição

Agora, nós devemos prever o próximo estado baseado nos valores de inicialização.

Uma vez que nosso modelo tem dinâmica constante, a estimativa prevista é igual a estimativa atual:

\[ \hat{x}_{1,0}=10^{o}C \]

A extrapolação da incerteza de estimativa (variância):

\[ p_{1,0}= p_{0,0}+q=10000+ 0.0001=10000.0001 \]

Primeira Iteração

Passo 1 - Medir

O valor de medição:

\[ z_{1}=~ 49.95^{o}C \]

Uma vez que o erro de medição é 0.1 ( \( \sigma \) ), a variância ( \( \sigma ^{2} \) ) seria 0.01, logo a incerteza de medição é:

\[ r_{1}= 0.01 \]

Passo 2 - Atualizar

Cálculo do Ganho de Kalman:

\[ K_{1}= \frac{p_{1,0}}{p_{1,0}+r_{1}}= \frac{10000.0001}{10000.0001+0.01} = 0.999999 \]

O Ganho de Kalman é quase 1, ou seja, nosso erro de estimativa é muito maior que o erro de medição. Portanto, o peso de estimativa é insignificante, enquanto o peso de medição é quase 1.

Estimando o estado atual:

\[ \hat{x}_{1,1}=~ \hat{x}_{1,0}+ K_{1} \left( z_{1}- \hat{x}_{1,0} \right) =10+0.999999 \left( 49.95-10 \right) =49.95^{o}C \]

Atualizar a incerteza de estimativa atual:

\[ p_{1,1}=~ \left( 1-K_{1} \right) p_{1,0}= \left( 1-0.999999 \right) 10000.0001=0.01 \]

Passo 3 - Prever

Uma vez que o Modelo Dinâmico do sistema utilizado é constante, ou seja, a temperatura do líquido não varia, então:

\[ \hat{x}_{2,1}=\hat{x}_{1,1}= 49.95^{o}C \]

A extrapolação da incerteza de estimativa (variância) é:

\[ p_{2,1}= p_{1,1}+q=0.01+ 0.0001=0.0101 \]

Segunda Iteração

Passo 1 - Medir

O valor de medição:

\[ z_{2}=~ 49.967^{o}C \]

Uma vez que o erro de medição é 0.1 ( \( \sigma \) ), a variância ( \( \sigma^{2} \) ) seria 0.01, logo a incerteza de medição é:

\[ r_{2}= 0.01 \]

Passo 2 - Atualizar

cálculo do Ganho de Kalman:

\[ K_{2}= \frac{p_{2,1}}{p_{2,1}+r_{2}}= \frac{0.0101}{0.0101+0.01} = 0.5 \]

O Ganho de Kalman é 0.5, ou seja, o peso da estimativa e o peso de medição são iguais.

Estimando o estado atual:

\[ \hat{x}_{2,2}=~ \hat{x}_{2,1}+ K_{2} \left( z_{2}- \hat{x}_{2,1} \right) =49.95+0.5 \left( 49.967-49.95 \right) =49.959^{o}C \]

Atualizar a incerteza de estimativa atual:

\[ p_{2,2}=~ \left( 1-K_{2} \right) p_{2,1}= \left( 1-0.5 \right) 0.0101=0.005 \]

Passo 3 - Prever

Uma vez que o Modelo Dinâmico do sistema utilizado é constante, ou seja, a temperatura do líquido não varia, então:

\[ \hat{x}_{3,2}=\hat{x}_{2,2}= 49.959^{o}C \]

A extrapolação da incerteza de estimativa (variância) é:

\[ p_{3,2}= p_{2,2}+q=0.005+ 0.0001=0.0051 \]

Iterações 3-10

Os cálculos para as próximas iterações estão resumidos na tabela a seguir:

\( n \) \( z_{n} \) Estimativas do estado atual ( \( K_{n} \) , \( \hat{x}_{n,n} \) , \( p_{n,n} \) ) Predição ( \( \hat{x}_{n+1,n} \) , \( p_{n+1,n} \) )
3 \( 50.1^{o}C \) \[ K_{3}= \frac{0.0051}{0.0051+0.01}=0.3388 \] \[ \hat{x}_{3,3}=~ 49.959+0.3388 \left( 50.1-49.959 \right) =50.007^{o}C \] \[ p_{3,3}= \left( 1-0.3388 \right)0.0051 =0.0034 \] \[ \hat{x}_{4,3}= \hat{x}_{3,3}=50.007^{o}C \] \[ p_{4,3}= 0.0034+0.0001=0.0035 \]
4 \( 50.106^{o}C \) \[ K_{4}= \frac{0.0035}{0.0035+0.01}=0.2586 \] \[ \hat{x}_{4,4}=~ 50.007+0.2586 \left( 50.106-50.007 \right) =50.032^{o}C \] \[ p_{4,4}= \left( 1-0.2586 \right) 0.0035=0.0026 \] \[ \hat{x}_{5,4}= \hat{x}_{4,4}=50.032^{o}C \] \[ p_{5,4}= 0.0026+0.0001=0.0027 \]
5 \( 49.992^{o}C \) \[ K_{5}= \frac{0.0027}{0.0027+0.01}=0.2117 \] \[ \hat{x}_{5,5}= 50.032+0.2117 \left( 49.992-50.032 \right) =50.023^{o}C \] \[ p_{5,5}= \left( 1-0.2117 \right) 0.0027=0.0021 \] \[ \hat{x}_{6,5}= \hat{x}_{5,5}=50.023^{o}C \] \[ p_{6,5}= 0.0021+0.0001=0.0022 \]
6 \( 49.819^{o}C \) \[ K_{6}= \frac{0.0022}{0.0022+0.01}=0.1815 \] \[ \hat{x}_{6,6}=~ 50.023+0.1815 \left( 49.819-50.023 \right) =49.987^{o}C \] \[ p_{6,6}= \left( 1-0.1815 \right) 0.0022=0.0018 \] \[ \hat{x}_{7,6}= \hat{x}_{6,6}=49.987^{o}C \] \[ p_{7,6}= 0.0018+0.0001=0.0019 \]
7 \( 49.933^{o}C \) \[ K_{7}= \frac{0.0019}{0.0019+0.01}=0.1607 \] \[ \hat{x}_{7,7}=~ 49.987+0.1607 \left( 49.933-49.987 \right) =49.978^{o}C \] \[ p_{7,7}= \left( 1-0.1607 \right) 0.0019=0.0016 \] \[ \hat{x}_{8,7}= \hat{x}_{7,7}=49.978^{o}C \] \[ p_{8,7}= 0.0016+0.0001=0.0017 \]
8 \( 50.007^{o}C \) \[ K_{8}= \frac{0.0017}{0.0017+0.01}=0.1458 \] \[ \hat{x}_{8,8}= 49.978+0.1458 \left( 50.007-49.978 \right) =49.983^{o}C \] \[ p_{8,8}= \left( 1-0.1458 \right) 0.0017=0.0015 \] \[ \hat{x}_{9,8}= \hat{x}_{8,8}=49.983^{o}C \] \[ p_{9,8}= 0.0015+0.0001=0.0016 \]
9 \( 50.023^{o}C \) \[ K_{9}= \frac{0.0016}{0.0016+0.01}=0.1348 \] \[ \hat{x}_{9,9}=~ 49.983+0.1348 \left( 50.023-49.983 \right) =49.988^{o}C \] \[ p_{9,9}= \left( 1-0.1348 \right) 0.0016=0.0014 \] \[ \hat{x}_{10,9}= \hat{x}_{9,9}=49.988^{o}C \] \[ p_{10,9}= 0.0014+0.0001=0.0015 \]
10 \( 49.99^{o}C \) \[ K_{10}= \frac{0.0015}{0.0015+0.01}=0.1265 \] \[ \hat{x}_{10,10}=~ 49.988+0.1265 \left( 49.99 -49.988 \right) =49.988^{o}C \] \[ p_{10,10}= \left( 1-0.1265 \right) 0.0015=0.0013 \] \[ \hat{x}_{11,10}= \hat{x}_{10,10}=49.988^{o}C \] \[ p_{11,10}= 0.0013+0.0001=0.0014 \]

O gráfico a seguir compara o valor real, os valores medidos e os valores estimados.

Valor real, valores medidos e valores estimados

Como você pode ver, o valor estimado converge para o valor real.

O próximo gráfico mostra a incerteza de estimativa.

Incerteza de estimativa

A incerteza de estimativa rapidamente cai. Após 10 medições, ela tem um valor de 0.0013 ( \( \sigma ^{2} \) ), ou seja, o desvio padrão do erro de estimativa é: \( \sigma = \sqrt[]{0.0013}=0.036^{o}C \)

Então, nós podemos dizer que a temperatura estimada do líquido é: \( 49.988 \pm 0.036_{ }^{o}C \)

O próximo gráfico mostra o Ganho de Kalman.

O Ganho de Kalman

Como você pode ver, o Ganho de Kalman éstá caindo, fazendo o peso de medição ficar cada vez menor.

Resumo do Exemplo

Nesse exemplo nós medimos a temperatura de um líquido usando o Filtro de Kalman unidimensional. Embora a dinâmica do sistema inclua um ruído de processo aleatório, o Filtro de Kalman pôde nos fornecer uma boa estimação.

Exemplo 7 – Estimando a temperatura de um líquido em aquecimento

Assim como no exemplo anterior, nesse exemplo vamos medir a temperatura de um líquido em um tanque. A dinâmica do sistema não é constante, o líquido está aquecendo a uma taxa de 0.1\( ^{o}C \) por segundo.

Os parâmetros do Filtro de Kalman são similares ao exemplo anterior:

  • Nós acreditamos que temos um modelo preciso, logo configuramos nossa variância do ruído do processo (q) para 0.0001.
  • O erro de medição (desvio padrão) é 0.1\( ^{o}C \).
  • As medições são feitas a cada 5 segundos.
  • A dinâmica do sistema é constante.

Preste atenção, embora a dinâmica do sistema real não seja constante (uma vez que o líquido está aquecendo), vamos tratar o sistema como um com dinâmica constante (a temperatura não varia).

  • As temperaturas reais do líquido nos pontos de medição são:: 50.479\( ^{o}C \), 51.025\( ^{o}C \), 51.5\( ^{o}C \), 52.003\( ^{o}C \), 52.494\( ^{o}C \), 53.002\( ^{o}C \), 53.499\( ^{o}C \), 54.006\( ^{o}C \), 54.498\( ^{o}C \), and 54.991\( ^{o}C \).
  • O conjunto de medição é: 50.45\( ^{o}C \), 50.967\( ^{o}C \), 51.6\( ^{o}C \), 52.106\( ^{o}C \), 52.492\( ^{o}C \), 52.819\( ^{o}C \), 53.433\( ^{o}C \), 54.007\( ^{o}C \), 54.523\( ^{o}C \), and 54.99\( ^{o}C \).

O gráfico a seguir compara a temperatura real do líquido e as medições.

Temperatura real vs. medições

Iteração Zero

A iteração zero é similiar ao exemplo anterior.

Antes da primeira iteração, precisamos inicializar o Filtro de Kalman e prever o próximo estado (que é o primeiro estado).

Inicialização

Nós não sabemos qual a temperatura do líquido no tanque e nosso palpite é \( ^{o}C \).

\[ \hat{x}_{0,0}=10^{o}C \]

Nosso palpite é bem impreciso, nós configuramos nosso erro de estimativa de inicialização ( \( \sigma \) ) em 100. A Incerteza de Estimativa da inicialização é o erro de variância \( \left( \sigma ^{2} \right) \):

\[ p_{0,0}=100^{2}=10,000 \]

Essa variância é muito alta. Se nós inicializarmos com um valor mais significativo, vamos conseguir uma convergência do Filtro de Kalman mais rápida.

Predição

Agora, devemos prever o próximo estado baseado nos valores iniciais.

Uma vez que nosso modelo tem dinâmica constante, a estimativa prevista é igual à estimativa atual:

\[ \hat{x}_{1,0}=10^{o}C \]

A extrapolação da incerteza de estimativa (variância):

\[ p_{1,0}= p_{0,0}+q=10000+ 0.0001=10000.0001 \]

Iterações 1-10

Os cálculos para as próximas iterações estão resumidos na tabela a seguir:

\( n \) \( z_{n} \) Estimativa dos estados atuais( \( K_{n} \) , \( \hat{x}_{n,n} \) , \( p_{n,n} \) ) Predição ( \( \hat{x}_{n+1,n} \) , \( p_{n+1,n} \) )
1 \( 50.45^{o}C \) \[ K_{1}= \frac{10000.0001}{10000.0001+0.01} = 0.999999 \] \[ \hat{x}_{1,1}=~ 10+0.999999 \left( 50.45-10 \right) =50.45^{o}C \] \[ p_{1,1}= \left( 1-0.999999 \right) 10000.0001=0.01 \] \[ \hat{x}_{2,1}= \hat{x}_{1,1}=50.45^{o}C \] \[ p_{2,1}= 0.01+0.0001=0.0101 \]
2 \( 50.967^{o}C \) \[ K_{2}= \frac{0.0101}{0.0101+0.01}=0.5025 \] \[ \hat{x}_{2,2}=~ 50.45+0.5025 \left( 50.967-50.45 \right) =50.71^{o}C\] \[ p_{2,2}= \left( 1-0.5025 \right) 0.0101=0.005 \] \[ \hat{x}_{3,2}= \hat{x}_{2,2}=50.71^{o}C \] \[ p_{3,2}= 0.005+0.0001=0.0051 \]
3 \( 51.6^{o}C \) \[ K_{3}= \frac{0.0051}{0.0051+0.01}=0.3388 \] \[ \hat{x}_{3,3}=~ 50.71+0.3388 \left( 51.6-50.71 \right) =51.011^{o}C\] \[ p_{3,3}= \left( 1-0.3388 \right) 0.0051=0.0034 \] \[ \hat{x}_{4,3}= \hat{x}_{3,3}=51.011^{o}C \] \[ p_{4,3}= 0.0034+0.0001=0.0035 \]
4 \( 52.106^{o}C \) \[ K_{4}= \frac{0.0035}{0.0035+0.01}=0.2586 \] \[ \hat{x}_{4,4}=~ 51.011+0.2586 \left( 52.106-51.011 \right) =51.295^{o}C \] \[ p_{4,4}= \left( 1-0.2586 \right) 0.0035=0.0026 \] \[ \hat{x}_{5,4}= \hat{x}_{4,4}=51.295^{o}C \] \[ p_{5,4}= 0.0026+0.0001=0.0027 \]
5 \( 52.492^{o}C \) \[ K_{5}= \frac{0.0027}{0.0027+0.01}=0.2117 \] \[ \hat{x}_{5,5}= 51.295+0.2117 \left( 52.492-51.295 \right) =51.548^{o}C \] \[ p_{5,5}= \left( 1-0.2117 \right) 0.0027=0.0021 \] \[ \hat{x}_{6,5}= \hat{x}_{5,5}=51.548^{o}C \] \[ p_{6,5}= 0.0021+0.0001=0.0022 \]
6 \( 52.819^{o}C \) \[ K_{6}= \frac{0.0022}{0.0022+0.01}=0.1815 \] \[ \hat{x}_{6,6}=~ 51.548+0.1815 \left( 52.819-51.548 \right) =51.779^{o}C \] \[ p_{6,6}= \left( 1-0.1815 \right) 0.0022=0.0018 \] \[ \hat{x}_{7,6}= \hat{x}_{6,6}=51.779^{o}C \] \[ p_{7,6}= 0.0018+0.0001=0.0019 \]
7 \( 53.433^{o}C \) \[ K_{7}= \frac{0.0019}{0.0019+0.01}=0.1607 \] \[ \hat{x}_{7,7}=~ 51.779+0.1607 \left( 53.433-51.779 \right) =52.045^{o}C \] \[ p_{7,7}= \left( 1-0.1607 \right) 0.0019=0.0016 \] \[ \hat{x}_{8,7}= \hat{x}_{7,7}=52.045^{o}C \] \[ p_{8,7}= 0.0016+0.0001=0.0017 \]
8 \( 54.007^{o}C \) \[ K_{8}= \frac{0.0017}{0.0017+0.01}=0.1458 \] \[ \hat{x}_{8,8}= 52.045+0.1458 \left( 54.007-52.045 \right) =52.331^{o}C \] \[ p_{8,8}= \left( 1-0.1458 \right) 0.0017=0.0015 \] \[ \hat{x}_{9,8}= \hat{x}_{8,8}=52.331^{o}C \] \[ p_{9,8}= 0.0015+0.0001=0.0016 \]
9 \( 54.523^{o}C \) \[ K_{9}= \frac{0.0016}{0.0016+0.01}=0.1348 \] \[ \hat{x}_{9,9}=~ 52.331+0.1348 \left( 54.523-52.331 \right) =52.626^{o}C \] \[ p_{9,9}= \left( 1-0.1348 \right) 0.0016=0.0014 \] \[ \hat{x}_{10,9}= \hat{x}_{9,9}=52.626^{o}C \] \[ p_{10,9}= 0.0014+0.0001=0.0015 \]
10 \( 54.99^{o}C \) \[ K_{10}= \frac{0.0015}{0.0015+0.01}=0.1265 \] \[ \hat{x}_{10,10}=~ 2.626+0.1265 \left( 54.99 -52.626 \right) =52.925^{o}C \] \[ p_{10,10}= \left( 1-0.1265 \right) 0.0015=0.0013 \] \[ \hat{x}_{11,10}= \hat{x}_{10,10}=52.925^{o}C \] \[ p_{11,10}= 0.0013+0.0001=0.0014 \]

O gráfico a seguir comapra o valor real, os valores medidos e os valores estimados.

Valor real, valores medidos e valores estimados

Como você pode ver, o Filtro de Kalman falhou em fornecer uma estimação confiável. Há um erro de atraso na estimação do filtro. Nós já encontramos o erro de atraso no Exemplo 3, onde estimamos a posição de uma aeronave em acelaração usando o filtro \( \alpha - \beta \) que presume uma velocidade constante para a aeronave. Nos livramos do erro de atraso no Exemplo 4, onde substituimos o filtro \( \alpha - \beta \) pelo filtro \( \alpha -\beta -\gamma \) que presume uma aceleração.

Existem duas razões que causam o erro de atraso no nosso exemplo do Filtro de Kalman:

  • A dimâmica do modelo não se encaixa ao caso.
  • A confiabilidade do modelo do processo. Nós escolhemos um ruído muito baixo \( \left( q=0.0001 \right) \) enquanto as flutuações na temperatura real são bem maiores.
Nota: O erro de atraso deve ser contante, portanto a curva de estimatvia deve ter a mesma inclinação da curva de valor real. A figura acima apresenta apenas as 10 primeiras medições e não é suficiente para a convergência. A figura abaixo apresenta as primeiras 100 medições com o erro de atraso constante.
Valor real, valores medidos e valores estimados

Existem dois caminhos possíveis para corrigir o erro de atraso:

  • Se nós sabemos que a temperatura do líquido pode variar linearmente, podemos dedinir um novo modelo que leva em conta essa possível variação linear na temperatura do líquido. Nós fizemos isso no Exemplo 4. Esse é um método preferido. Entretanto,se a variação da temperatura não puder ser modelada, esse método não vai melhorar a performance do Filtro de Kalman.
  • Por outro lado, uma vez que nosso modelo não é bem definido, nós podemos ajustar a confiabildiade do modelo do processo aumentando o ruído do processo \( \left( q \right) \). Veja o próximo exemplo para detalhes.

Resumo do exemplo

Nesse exemplo, nós medimos a temperatura de um líquido em aquecimento usando o Filtro de Kalman unidimensional com uma dinâmica de modelo constante. Nós observamos o erro de atraso na estimação do Filtro de Kalman. Esse erro é causado pela definição errada da dinâmica do modelo e pela definição errada do modelo do processo.

P errp de atraso pode ser corrigido com a definição apropriada da dinâmica do modelo ou do modelo do processo.

Exemplo 8 – Estimando a temperatura de um líquido em aquecimento

Esse exemplo é semelhante ao exemplo anterior com apenas uma mudança. Uma vez que nosso processo não está bem definido, vamos aumentar a incerteza do processo \( \left( q \right) \) de 0.0001 para 0.15.

Iteração Zero

Antes da primeira iteração, precisamos incializar o Filtro de Kalman e prever o próximo estado (que é o primeiro estado).

Inicialização

A inicialização zero é similar ao exemplo anterior.

Nós não sabemos qual é a temperatura do líquido no tanque e nosso palpite é 10\( ^{o}C \).

\[ \hat{x}_{0,0}=10^{o}C \]

Nosso palpite é bem impreciso, configuramos o erro de estimativa de inicialização ( \( \sigma \) ) com valor 100. A Incerteza de Estimativa da inicialização é o erro de variância \( \left( \sigma ^{2} \right) \):

\[ p_{0,0}=100^{2}=10,000 \]

Essa variância é muito alta. Se nós inicializarmos com um valor mais significativo, vamos conseguir uma convergência do Filtro de Kalman mais rápida.

Predição

Agora, devemos prever o próximo estado baseado nos valores de inicialização.

Uma vez que nosso modelo tem dinâmica constante, a estimativa prevista é igual a estimativa atual:

\[ \hat{x}_{1,0}=10^{o}C \]

A extrapolação da incerteza de estimativa (variância):

\[ p_{1,0}= p_{0,0}+q=10000+ 0.15=10000.15 \]

Iterações 1-10

Os cálculos para as próximas iterações estão resumidos na tabela a seguir:

\( n \) \( z_{n} \) Estimativa dos estados atuais( \( K_{n} \) , \( \hat{x}_{n,n} \) , \( p_{n,n} \) ) Predição ( \( \hat{x}_{n+1,n} \) , \( p_{n+1,n} \) )
1 \( 50.45^{o}C \) \[ K_{1}= \frac{10000.15}{10000.15+0.01} = 0.999999 \] \[ \hat{x}_{1,1}=~ 10+0.999999 \left( 50.45-10 \right) =50.45^{o}C \] \[ p_{1,1}= \left( 1-0.999999 \right)10000.15=0.01 \] \[ \hat{x}_{2,1}= \hat{x}_{1,1}=50.45^{o}C \] \[ p_{2,1}= 0.01+0.15=0.16 \]
2 \( 50.967^{o}C \) \[ K_{2}= \frac{0.16}{0.16+0.01}=0.9412 \] \[ \hat{x}_{2,2}=~ 50.45+0.9412 \left( 50.967-50.45 \right) =50.94^{o}C\] \[ p_{2,2}= \left( 1-0.9412 \right) 0.16=0.0094 \] \[ \hat{x}_{3,2}= \hat{x}_{2,2}=50.94^{o}C \] \[ p_{3,2}= 0.0094+0.15=0.1594 \]
3 \( 51.6^{o}C \) \[ K_{3}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{3,3}=~ 50.94+0.941 \left( 51.6-50.94 \right) =51.56^{o}C\] \[ p_{3,3}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{4,3}= \hat{x}_{3,3}=51.56^{o}C \] \[ p_{4,3}= 0.0094+0.15=0.1594 \]
4 \( 52.106^{o}C \) \[ K_{4}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{4,4}=~ 51.56+0.941 \left( 52.106-51.56 \right) =52.07^{o}C \] \[ p_{4,4}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{5,4}= \hat{x}_{4,4}=52.07^{o}C \] \[ p_{5,4}= 0.0094+0.15=0.1594 \]
5 \( 52.492^{o}C \) \[ K_{5}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{5,5}= 52.07+0.941 \left( 52.492-52.07 \right) =52.47^{o}C \] \[ p_{5,5}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{6,5}= \hat{x}_{5,5}=52.47^{o}C \] \[ p_{6,5}= 0.0094+0.15=0.1594 \]
6 \( 52.819^{o}C \) \[ K_{6}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{6,6}=~ 52.47+0.941 \left( 52.819-52.47 \right) =52.8^{o}C \] \[ p_{6,6}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{7,6}= \hat{x}_{6,6}=52.8^{o}C \] \[ p_{7,6}= 0.0094+0.15=0.1594 \]
7 \( 53.433^{o}C \) \[ K_{7}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{7,7}=~ 52.8+0.941 \left( 53.433-52.8 \right) =53.4^{o}C \] \[ p_{7,7}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{8,7}= \hat{x}_{7,7}=53.4^{o}C \] \[ p_{8,7}= 0.0094+0.15=0.1594 \]
8 \( 54.007^{o}C \) \[ K_{8}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{8,8}= 53.4+0.941 \left( 54.007-53.4 \right) =53.97^{o}C \] \[ p_{8,8}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{9,8}= \hat{x}_{8,8}=53.97^{o}C \] \[ p_{9,8}= 0.0094+0.15=0.1594 \]
9 \( 54.523^{o}C \) \[ K_{9}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{9,9}=~ 53.97+0.941 \left( 54.523-53.97 \right) =54.49^{o}C \] \[ p_{9,9}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{10,9}= \hat{x}_{9,9}=54.49^{o}C \] \[ p_{10,9}= 0.0094+0.15=0.1594 \]
10 \( 54.99^{o}C \) \[ K_{10}= \frac{0.1594}{0.1594+0.01}=0.941 \] \[ \hat{x}_{10,10}=~ 54.49+0.941 \left( 54.99 -54.49 \right) =54.96^{o}C \] \[ p_{10,10}= \left( 1-0.941 \right) 0.1594=0.0094 \] \[ \hat{x}_{11,10}= \hat{x}_{10,10}=54.96^{o}C \] \[ p_{11,10}= 0.0094+0.15=0.1594 \]

O gráfico a seguir comaprar o valor real, os valores medidos e os valores estimados.

Valor real, valores medidos e valores estimados

Como você pode ver, as estimativas estão seguindo as medições. Não há erro de atraso.

O próximo gráfico mostra o Ganho de Kalman.

O Ganho de Kalman

Devido à alta incerteza do processo, o peso de medição é muito maior que o peso de estimativa, logo o Ganho de Kalman é alto, e converge em 0.94.

Resumo do exemplo

Nós podemos nos livrar do erro de atraso configurando a alta incerteza do processo. Entretanto, uma vez que nosso modelo não está bem definido, nós obtemos estimativas ruidosas que são quase iguais às medições, e perdemos o objetivo do Filtro de Kalman.

A melhor implementação do Filtro de Kalman deve envolver o modelo que é bem próximo da realidade deixando um espaço pequeno para o ruído do processo. Entretanto, o modelo preciso nem sempre está disponível. Por exemplo, o piloto de um avião pode decidir realizar subitamente uma manobra que vai mudar a trajetória prevista da aeronave. Nesse caso, o ruído do processo deve ser aumentado.

Anterior Próximo