O filtro \( \alpha -\beta -\gamma \)

Exemplo 1 – Pesando o ouro

Agora, estamos prontos para o primeiro exemplo simples. Neste exemplo, nós vamos estimar o estado de um sistema estático. O sistema estático é aquele que não muda seu estado durante um período de tempo considerável. Por exemplo, o sistema estático pode ser uma torre, e o estado ser sua altura.

Neste exemplo, nós vamos estimar o peso de uma barra de ouro. Usaremos escalas imparciais, isto é, as medidas não possuem erro sistemático, mas contêm um ruído aleatório.

Barras de Ouro

Em nosso exemplo, o sistema é a barra de ouro e seu estado é o peso da barra. O modelo dinâmico do sistema é constante, desde que assumamos que o peso não varia durante intervalos curtos de tempo.

A fim de estimar o estado do sistema (isto é, o valor do peso), nós podemos fazer várias medições e calcular a média.

Medições vs. Valor real

No tempo \( n \), a estimativa \( \hat{x}_{n,n} \) seria a média de todas as medições anteriores:

\[ \hat{x}_{n,n}= \frac{1}{n} \left( z_{1}+ z_{2}+ \ldots + z_{n-1}+ z_{n} \right) = \frac{1}{n} \sum _{i=1}^{n} \left( z_{i} \right) \]
Notação do exemplo:
\( x \) é o valor real do peso
\( z_{n} \) é o valor medido do peso no tempo \( n \)
\( \hat{x}_{n,n} \) é a estimativa de \( x \) no tempo \( n \) (a estimativa é feita depois da medição \( z_{n} \) )
\( \hat{x}_{n,n-1} \) é a estimativa anterior de \( x \) que foi feita no tempo \( n-1 \) (a estimativa foi feita depois da medição \( z_{n-1} \))
\( \hat{x}_{n+1,n} \) é a estimativa do estado futuro (\( n+1 \) ) de \( x \). A estimativa é feita no tempo \( n \), logo após a medição \( z_{n} \). Em outras palavras, \( \hat{x}_{n+1,n} \) é o estado previsto
Nota: Na literatura, o acento circunflexo sobre uma variável é usado para indicar valor estimado.

O modelo dinâmico nesse exemplo é dinâmico, por isso \( \hat{x}_{n+1,n}= \hat{x}_{n,n} \).

Para estimar \( \hat{x}_{n,n} \), precisamos lembrar de todo o histórico de medições. Suponha que nós não temos caneta e papel para escrever as medições, também não podemos confiar em nossa memória e lembrar de todas elas. Apenas queremos usar a estimativa anterior e adicionar um pequeno ajuste (em aplicações reais, queremos economizar a memória do computador). Nós podemos fazer isso com um pequeno truque matemático:

Notas
\( \hat{x}_{n,n}= \frac{1}{n} \sum _{i=1}^{n} \left( z_{i} \right) = \) Fórmula da média: soma de \( n \) medições dividida por \( n \)
\( = \frac{1}{n} \left( \sum _{i=1}^{n-1} \left( z_{i} \right) + z_{n} \right) = \) Soma de \( n - 1 \) medições mais a última medição dividida por \( n \)
\( = \frac{1}{n} \sum _{i=1}^{n-1} \left( z_{i} \right) + \frac{1}{n} z_{n} = \) Expansão da expressão
\( = \frac{1}{n}\frac{n-1}{n-1} \sum _{i=1}^{n-1} \left( z_{i} \right) + \frac{1}{n} z_{n} = \) Multiplica e divide pelo termo \( n - 1 \)
\( \frac{n-1}{n}\color{#FF8C00}{\frac{1}{n-1} \sum _{i=1}^{n-1} \left( z_{i} \right)} + \frac{1}{n} z_{n} = \) Reordenando
O termo 'laranja' é a estimativa anterior
\( = \frac{n-1}{n}\color{#FF8C00}{\hat{x}_{n-1,n-1}} + \frac{1}{n} z_{n} = \) Reescrevendo a soma
\( = \hat{x}_{n-1,n-1}- \frac{1}{n}\hat{x}_{n-1,n-1}+ \frac{1}{n} z_{n} = \) Separando o termo \( \frac{n-1}{n} \)
\( = \hat{x}_{n-1,n-1}+ \frac{1}{n} \left( z_{n}- \hat{x}_{n-1,n-1} \right) \) Reordenando

\( \hat{x}_{n-1,n-1} \) é o estado estimado de \( x \) at tno momento \( n - 1\), based ocom base na medição no momento \( n-1 \).

Vamos encontrar \( \hat{x}_{n,n-1} \) (o estado previsto de \( x \) no momento \( n \) ), com base em \( \hat{x}_{n-1,n-1} \) (a estimativa no momento \( n - 1 \)). Em outras palavras, gostaríamos de extrapolar \( \hat{x}_{n-1,n-1} \) para o momento n.

Como o modelo dinâmico neste exemplo é estático, ou seja, o peso da barra de ouro não muda ao longo do tempo, o estado previsto de \( x \) é igual ao estado estimado de \( x \): \( \hat{x}_{n,n-1} = \hat{x}_{n-1,n-1} \).

Com base no exposto, a estimativa do estado atual \( \hat{x}_{n,n} \), pode ser escrita da seguinte forma:

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

A equação acima é uma das cinco equações do filtro de Kalman. Ela é chamada de Equação de Atualização de Estado. Ela significa o seguinte:

Atualização de Estados

O fator \( \frac{1}{n} \) é específico para nosso exemplo. Nós vamos discutir o importante papel desse fator depois, mas agora eu gostaria de afirmar que, no filtro de Kalman, esse fator é chamado de Ganho de Kalman. Ele é denotador por \( K_{n} \). O subscrito \( n \) indica que o Ganho de Kalman pode mudar em cada iteração.

A descoberta do \( K_{n} \) foi uma das maiores contribuições de Rudolf Kalman.

Por enquanto, antes de adentrarmos mais fundo no Filtro de Kalman, vamos usar a letra grega \( \alpha _{n} \) ao invés de \( K_{n} \).

Então, a Equação de Atualização de Estado será:

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

O termo \( \left( z_{n}- x_{n,n-1} \right) \) é uma medição residual, também chamada de inovação. A inovação contém a informação nova.

Em nosso exemplo, \( \frac{1}{n} \) decai à medida que \( n \) cresce. Isso significa que, no começo, nós não temos informação suficiente sobre o valor do peso, logo baseamos a estimativa nas medições. Com o passar do tempo, cada medição sucessiva tem menos peso no processo de estimativa, uma vez que \( \frac{1}{n} \) decai. Em algum momento, a contribuição das novas medições será desprezível.

Vamos continuar com o exemplo. Antes de fazermos a primeira medição, podemos supor (ou grosseiramente estimar) o peso da barra de ouro, simplesmente, lendo o selo da barra. Isso é chamado de Suposição Inicial e será nossa primeira estimativa.

Como veremos futuramente, o Filtro de Kalman exige a suposição inicial como um pré-requisito, e ela pode ser bem grosseira.

Algoritmo de estimação

O quadro a seguir retrata o algoritmo de estimação utilizado neste exemplo.

Algoritmo de estimação

Agora, estamos prontos para começar o processo de medição e estimação.

O exemplo numérico

Iteração Zero

Inicialização

Nossa suposição inicial do peso da barra de ouro é 1000 gramas. A suposição inicial é usada apenas uma vez para inicialização do filtro, logo não será necessária para as próximas iterações.

\[ \hat{x}_{0,0}=1000g \]

Predição

O peso de uma barra de ouro não deve mudar. Portanto, o modelo dinâmico do sistema é estático. Nossa próxima estimativa de estado (predição) é igual à inicialização.

\[ \hat{x}_{1,0} = \hat{x}_{0,0}=1000g \]

Primeira Iteração

Passo 1

Realiza-se a medição do peso com a balança:

\[ z_{1}= 1030g \]

Passo 2

Calcula-se o ganho. Em nosso exemplo \( \alpha _{n}= \frac{1}{n} \) , logo:

\[ \alpha _{1}= \frac{1}{1}=1 \]

Calcula-se a estimativa atual utilizando a equação de atualização de estado:

\[ \hat{x}_{1,1}= \hat{x}_{1,0}+ \alpha _{1} \left( z_{1}- \hat{x}_{1,0} \right) =1000+1 \left( 1030-1000 \right) =1030g \]

Nota: Neste exemplo em específico, a suposição inicial poderia ser qualquer número. Desde que \( \alpha _{1}= 1 \), a suposição inicial é eliminada na primeira iteração.
Passo 3

O modelo dinâmico do sistema é estático, logo o peso da barra de ouro não deve mudar. Nossa próxima estimativa de estado (predição) é igual à estimativa atual do estado:

\[ \hat{x}_{2,1}= \hat{x}_{1,1}=1030g \]

Segunda Iteração

Depois de um atraso de tempo unitário, a estimativa prevista da iteração anterior se torna a estimativa anterior na iteração atual:

\[ \hat{x}_{2,1}=1030g \]

Passo 1

Realiza-se a segunda medição do peso:

\[ z_{2}= 989g \]

Passo 2

Calcula-se o ganho:

\[ \alpha _{2}= \frac{1}{2} \]

Calcula-se a estimativa atual:

\[ \hat{x}_{2,2}= \hat{x}_{2,1}+ \alpha _{2} \left( z_{2}- \hat{x}_{2,1} \right) =1030+\frac{1}{2} \left( 989-1030 \right) =1009,5g \]

Passo 3

\[ \hat{x}_{3,2}= \hat{x}_{2,2}=1009.5g \]

Terceira Iteração

\[ z_{3}= 1017g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{3}= \frac{1}{3} \] \[ \hat{x}_{3,3}=~ 1009,5+\frac{1}{3} \left( 1017-1009,5 \right) =1012g \] \[ \hat{x}_{4,3}=1012g \]

Quarta Iteração

\[ z_{4}= 1009g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{4}= \frac{1}{4} \] \[ \hat{x}_{4,4}= 1012+\frac{1}{4} \left( 1009-1012 \right) =1011.25g \] \[ \hat{x}_{5,4}=1011,25g \]

Quinta Iteração

\[ z_{5}= 1013g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{5}= \frac{1}{5} \] \[ \hat{x}_{5,5}= 1011,25+\frac{1}{5} \left( 1013-1011,25 \right) =1011,6g \] \[ \hat{x}_{6,5}=1011,6g \]

Sexta Iteração

\[ z_{6}= 979g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{6}= \frac{1}{6} \] \[ \hat{x}_{6,6}= 1011,6+\frac{1}{6} \left( 979-1011,6 \right) =1006,17g \] \[ \hat{x}_{7,6}=1006,17g \]

Sétima Iteração

\[ z_{7}=1008g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{7}= \frac{1}{7} \] \[ \hat{x}_{7,7}= 1006,17+\frac{1}{7} \left( 1008-1006,17 \right) =1006,43g \] \[ \hat{x}_{8,7}=1006,43g \]

Oitava Iteração

\[ z_{8}=1042g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{8}= \frac{1}{8} \] \[ \hat{x}_{8,8}= 1006,43+\frac{1}{8} \left( 1042-1006,43 \right) =1010,87g \] \[ \hat{x}_{9,8}=1010,87g \]

Nona Iteração

\[ z_{9}=1012g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{9}= \frac{1}{9} \] \[ \hat{x}_{9,9}= 1010,87+\frac{1}{9} \left( 1012-1010,87 \right) =1011g \] \[ \hat{x}_{10,9}=1011g \]

Décima Iteração

\[ z_{10}=1011g~~~~~~~~~~~~~~~~~~~~~~~~~~ \alpha _{10}= \frac{1}{10} \] \[ \hat{x}_{10,10}= 1011+\frac{1}{10} \left( 1011-1011 \right) =1011g \] \[ \hat{x}_{11,10}=1011g \]

Podemos parar por aqui. O ganho decresce com cada medição. Portanto, a contribuição de cada medição consecutiva é menor do que a da anterior. Nós chegamos bem próximo ao valor verdadeiro, que é 1010 gramas. Se fizéssemos mais medições, chegaríamos ainda mais próximo.

A tabela a seguir sumariza nossas medições e estimativas, e o quadro comparar os valores medidos, as estimativas e o valor verdadeiro.

\( n \) 1 2 3 4 5 6 7 8 9 10
\( \alpha _{n} \) \( 1 \) \( \frac{1}{2} \) \( \frac{1}{3} \) \( \frac{1}{4} \) \( \frac{1}{5} \) \( \frac{1}{6} \) \( \frac{1}{7} \) \( \frac{1}{8} \) \( \frac{1}{9} \) \( \frac{1}{10} \)
\( z_{n} \) 1030 989 1017 1009 1013 979 1008 1042 1012 1011
\( \hat{x}_{n,n} \) 1030 1009,5 1012 1011,25 1011,6 1006,17 1006,43 1010,87 1011 1011
\( \hat{x}_{n+1,n} \) 1030 1009,5 1012 1011,25 1011,6 1006,17 1006,43 1010,87 1011 1011
Medições vs. Valor Verdadeiro vs. Estimativas

Podemos ver que nosso algoritmo de estimação tem um efeito de suavização nas medições, e ele converge em direção ao valor verdadeiro.

Resumo do exemplo

Neste exemplo, nós desenvolvemos um algoritmo de estimação simples para um sistema estático. Nós também derivamos a equação de atualização de estado, que é uma das cinco equações do Filtro de Kalman.

Exemplo 2 – Rastreando uma aeronave de velocidade constante em uma dimensão

Agora,s é a hora de examinarmos um sistema dinâmico que muda seu estado ao longo do tempo. Neste exemplo, nós vamos rastrear uma aeronave de velocidade constante em uma dimensão usando o filtro α-β.

Vamos considerar um mundo unidimensional. Assumimos que a aeronave está se afastando (ou se aproximando) radialmente do radar. No mundo unidimensional, o ângulo do radar é constante e a altitude da aeronave também, como mostrado na figura a seguir.

Cenário 1D

\( x_{n} \) representa a distância até a aeronave no instante \( n \) . A velocidade da aeronave é definida como a taxa de variação da distância em relação ao tempo, logo a velocidade é uma derivada da distância:

\[ \dot{x}= v= \frac{dx}{dt} \]

O radar envia um feixe de rastreamento na direção do alvo em uma frequência constante. O intervalo entre rastreamentos é \( \Delta t \).

Assumindo que a velocidade é constante, o modelo dinâmico do sistema pode ser descrito por duas equações de movimento:

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

De acordo com as equações, a distância da aeronave no próximo ciclo de rastreamento é igual à distância do ciclo atual mais a velocidade do alvo multiplicada pelo intervalo entre rastreamentos. Neste exemplo, nós assumimos velocidade constante. Portanto, a velocidade no próximo ciclo é igual a velocidade no ciclo atual.

O sistema de equações acima é chamado de uma Equação de Extrapolação de Estado (também chamada de Equação de Transição ou de Equação de Predição) e essa é uma das cinco equações do filtro de Kalman. Esse sistema de equações extrapola o estado atual para o próximo (predição).

Nós já utilizamos a Equação de Extrapolação de Estado no exemplo anterior, no qual nós assumimos que o peso do próximo estado seria igual ao peso do estado atual.

Existe uma forma genérica da Equação de Extrapolação de Estado em notação matricial, que estudaremos depois.

Neste exemplo, nós vamos utilizar o conjunto de equações acima que é específico para nosso caso.

Nota: nós já aprendemos duas das cinco equações do filtro de Kalman:
  • Equação de Atualização de Estado
  • Equação de Extrapolação de Estado

Agora, vamos modificar a Equação de Atualização de Estado para nosso exemplo.

O filtro \( \alpha - \beta \)

Tomemos o intervalo entre rastreamentos ( \( \Delta t \) ) como sendo 5 segundos. Assumimos que no instante \( n - 1 \), a distância estimada da ANT (aeronave não tripulada) é 30.000m e sua velocidade estimada é 40m/s.

Usando as Equações de Extrapolação de Estado, nós podemos prever a posição do alvo no instante \( n \):

\[ \hat{x}_{n,n-1}= \hat{x}_{n-1,n-1}+ \Delta t\hat{\dot{x}}_{n-1,n-1}=30000+5\ast40=30200m \]

A velocidade do alvo no instante \( n \):

\[ \hat{\dot{x}}_{n,n-1}= \hat{\dot{x}}_{n-1,n-1}=40m/s \]

Entretanto, no instante \( n \), o radar mede uma distância ( \( z_{n} \) ) de 30.110m e não de 30.200m como esperado. Existe uma diferença de 90m entre a distância esperada (predita) e a distância medida. Existem duas possíveis razões para essa diferença:

  • As medições do radar não são precisas
  • A velocidade da aeronave mudou. A sua nova velocidade é: \( \frac{30.110-30.000}{5}=22m/s \)

Qual das duas afirmações é verdadeira?

Vamos escrever a Equação de Atualização de Estado para a velocidade:

\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) \]

O valor do fator \( \beta \) depende do nível de precisão do radar. Suponha que a precisão \( 1 \sigma \) do radar é 20m. Provavelmente, os 90 metros de diferença entre as distâncias predita e a medida é resultado da mudança na velocidade da aeronave. Neste caso, nós definimos um alto valor para o fator \( \beta \). Se definirmos \( \beta \) = 0.9, logo a velocidade estimada seria:

\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) =40+0.9 \left( \frac{30110-30200}{5} \right) =23.8m/s \]

Suponha que a precisão \( 1 \sigma \) do radar é 150m. Provavelmente, a diferença de 90m é consequência do erro de medição do radar. Neste caso, definimos uma valor baixo para o fator \( \beta \). Se definirmos \( \beta \) = 0.1, logo a velocidade estimada seria:

\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) =40+0.1 \left( \frac{30110-30200}{5} \right) =38.2m/s \]

A Equação de Atualização de Estado para a posição da aeronave é semelhante à equação que foi obtida no exemplo anterior:

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

Ao contrário do exemplo anterior, em que o fator \( \alpha \) é recalculado em cada iteração ( \( \alpha _{n}= \frac{1}{N} \) ), neste exemplo, o fator \( \alpha \) é constante.

A magnitude do fator \( \alpha \) depende da precisão de medição do radar. Para uma alta precisão, nós escolhemos um alto \( \alpha \) , dando um peso alto para as medições. Se \( \alpha = 1 \) , a distância estimada é igual à distância medida:

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

Se \( \alpha =0 \) , a medição não tem nenhuma influência:

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

Então, nós obtivemos um sistema de equações que compõe a Equação de Atualização de Estado para o rastreamento do radar. Elas também são chamadas de equações de atualização de rastreamento \( \alpha - \beta \) ou equações de filtragem de rastreamento \( \alpha - \beta \).

A Equação de Atualização de Estado para a posição:
\[ \hat{x}_{n,n}=~ \hat{x}_{n,n-1}+ \alpha \left( z_{n}- \hat{x}_{n,n-1} \right) \]

A Equação de Atualização de Estado para a velocidade:
\[ \hat{\dot{x}}_{n,n}= \hat{\dot{x}}_{n,n-1}+ \beta \left( \frac{z_{n}-\hat{x}_{n,n-1}}{ \Delta t} \right) \]
Nota: Em alguns livros, o filtro \( \alpha - \beta \) é também chamado de filtro g-h, em que a letra grega \( \alpha \) é substituída pela letra g, e a letra grega \( \beta \) é substituída pela letra h.
Nota: Neste exemplo, nós estamos obtendo a velocidade da aeronave a partir das medições de distância ( \( \dot{x}= \frac{ \Delta x}{ \Delta t} \) ). Os radares modernos podem medir a velocidade radial usando diretamente o efeito Doppler. Entretanto, meu objetivo é explicar o filtro de Kalman e não o funcionamento do Radar. Logo, por uma questão de generalidade, em nossos exemplo, eu continuarei obtendo a velocidade a partir das medições de distância.

Algoritmo de Estimação

O quadro a seguir descreve o algoritmo de estimação utilizado neste exemplo.

Algoritmo de Estimação

Ao contrário do exemplo anterior, aqui os valores de Ganho \( \alpha \) e \( \beta \) já são dados. No filtro de Kalman, \( \alpha \) e \( \beta \) são substituídos pelo Ganho de Kalman, que é calculado a cada iteração, mas nós iremos aprender isso depois.

Agora, estamos prontos para iniciar o exemplo numérico.

O exemplo numérico

Dado que a aeronave está se afastando (ou se aproximando) radialmente do radar em um mundo unidimensional.

Os parâmetros do filtro \( \alpha - \beta \) são:

  • \( \alpha =0,2 \)
  • \( \beta =0,1 \)

O intervalo entre rastreamentos é 5 segundos.

Nota: Neste exemplo, vamos usar um radar bem impreciso e um alvo (ANT) de baixa velocidade para uma melhor representação gráfica. Na vida real, os radares são, comumente, mais precisos e os alvos se movem bem mais rápido.

Iteração Zero

Inicialização

As condições iniciais para o instante \( n=0 \) são dadas:

\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=40m/s \]

Nota: A Iniciação do Rastreamento (ou como nós obtemos as condições iniciais) é um tópico muito importante, que será discutido posteriormente. Agora, nosso objetivo é o entendimento da operação básica do filtro \( \alpha - \beta \), logo assumiremos que as condições iniciais foram dadas por alguém.
Predição

A suposição inicial será extrapolada para o primeiro ciclo ( \( n=1 \) ) usando as Equações de Extrapolação de Estado:

\[ \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \rightarrow \hat{x}_{1,0}= \hat{x}_{0,0}+ \Delta t\hat{\dot{x}}_{0,0} =30000+5 \times 40=30200m \] \[ \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \rightarrow \hat{\dot{x}}_{1,0}= \hat{\dot{x}}_{0,0} =40m/s \]

Primeira Iteração

No primeiro ciclo ( \( n=1 \) ), a suposição inicial é a estimativa anterior:

\[ \hat{x}_{n,n-1}=~ \hat{x}_{1,0}=30200m \] \[ \hat{\dot{x}}_{n,n-1}=~ \hat{\dot{x}}_{1,0}=40m/s \]

Passo 1

O radar mede a distância da aeronave:

\[ z_{1}= 30110m \]

Passo 2

Calcula-se a estimativa atual usando a Equação de Atualização de Estado:

\[ \hat{x}_{1,1}=~ \hat{x}_{1,0}+ \alpha \left( z_{1}- \hat{x}_{1,0} \right) =30200+0,2 \left( 30110-30200 \right) =30182m \] \[ \hat{\dot{x}}_{1,1}= \hat{\dot{x}}_{1,0}+ \beta \left( \frac{z_{1}-\hat{x}_{1,0}}{ \Delta t} \right) = 40+0,1 \left( \frac{30110-30200}{5} \right) =38.2m/s \]

Passo 3

Calcula-se a estimativa do próximo estado usando as Equações de Extrapolação de Estado:

\[ \hat{x}_{2,1}= \hat{x}_{1,1}+ \Delta t\hat{\dot{x}}_{1,1} =30182+5 \times 38,2=30373m \] \[ \hat{\dot{x}}_{2,1}= \hat{\dot{x}}_{1,1} =38,2m/s \]

Segunda Iteração

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

\[ \hat{x}_{2,1}=30373m \] \[ \hat{\dot{x}}_{2,1}= 38,2m/s \]

Passo 1

O radar mede a distância da aeronave:

\[ z_{2}= 30265m \]

Passo 2

Calcula-se a estimativa atual usando a Equação de Atualização de Estado:

\[ \hat{x}_{2,2}=~ \hat{x}_{2,1}+ \alpha \left( z_{2}- \hat{x}_{2,1} \right) =30373+0,2 \left( 30265-30373 \right) =30351,4m \] \[ \hat{\dot{x}}_{2,2}= \hat{\dot{x}}_{2,1}+ \beta \left( \frac{z_{2}-\hat{x}_{2,1}}{ \Delta t} \right) = 38,2+0,1 \left( \frac{30265-30373}{5} \right) =36m/s \]

Passo 3

Calcula-se a estimativa do próximo estado usando as Equações de Extrapolação de Estado:

\[ \hat{x}_{3,2}= \hat{x}_{2,2}+ \Delta t\hat{\dot{x}}_{2,2} =30351,4+5 \times 36=30531,6m \] \[ \hat{\dot{x}}_{3,2}= \hat{\dot{x}}_{2,2} =36m/s \]

Terceira Iteração

\[ z_{3}= 30740 \] \[ \hat{x}_{3,3}=~ 30531,6+0,2 \left( 30740~ -30531,6 \right) =30573,3m \] \[ \hat{\dot{x}}_{3,3}= 36+0,1 \left( \frac{30740~ -30531,6}{5} \right) =40,2m/s \] \[ \hat{x}_{4,3}= 30573.3+5 \times 40.2=30774,3m \] \[ \hat{\dot{x}}_{4,3}= 40,2m/s \]

Quarta Iteração

\[ z_{4}= 30750 \] \[ \hat{x}_{4,4}=~ 30774,3+0,2 \left( 30750-30774,3 \right) =30769,5m \] \[ \hat{\dot{x}}_{4,4}= 40,2+0.1 \left( \frac{30750-30774,3}{5} \right) =39,7m/s \] \[ \hat{x}_{5,4}= 30769,5+5 \times 39,7=30968,1m \] \[ \hat{\dot{x}}_{5,4}= 39,7m/s \]

Quinta Iteração

\[ z_{5}= 31135 \] \[ \hat{x}_{5,5}=~ 30968,1+0.2 \left( 31135 -30968,1 \right) =31001,5m \] \[ \hat{\dot{x}}_{5,5}= 39,7+0.1 \left( \frac{31135 -30968,1}{5} \right) =43,1m/s \] \[ \hat{x}_{6,5}= 31001,5+5 \times 43,1=31216,8m \] \[ \hat{\dot{x}}_{6,5}= 43,1m/s \]

Sexta Iteração

\[ z_{6}= 31015 \] \[ \hat{x}_{6,6}=~ 31216,8+0,2 \left( 31015 -31216,8 \right) =31176,4m \] \[ \hat{\dot{x}}_{6,6}= 43,1+0,1 \left( \frac{31015 -31216,8}{5} \right) =39m/s \] \[ \hat{x}_{7,6}= 31176,4+5 \times 39=31371,5m \] \[ \hat{\dot{x}}_{7,6}= 39m/s \]

Sétima Iteração

\[ z_{7}= 31180 \] \[ \hat{x}_{7,7}=~ 31371,5+0,2 \left( 31180 -31371,5 \right) =31333,2m \] \[ \hat{\dot{x}}_{7,7}= 39+0,1 \left( \frac{31180 -31371,5}{5} \right) =35,2m/s \] \[ \hat{x}_{8,7}= 31333,2+5 \times 35,2=31509,2m \] \[ \hat{\dot{x}}_{8,7}= 35,2m/s \]

Oitava Iteração

\[ z_{8}= 31610 \] \[ \hat{x}_{8,8}=~ 31509,2+0,2 \left( 31610 -31509,2 \right) =31529,4m \] \[ \hat{\dot{x}}_{8,8}= 35,2+0,1 \left( \frac{31610 -31509,2}{5} \right) =37,2m/s \] \[ \hat{x}_{9,8}= 31529,4+5 \times 37,2=31715,4m \] \[ \hat{\dot{x}}_{9,8}= 37,2m/s \]

Nona Iteração

\[ z_{9}= 31960 \] \[ \hat{x}_{9,9}=~ 31715,4+0,2 \left( 31960 -31715,4 \right) =31764,3m \] \[ \hat{\dot{x}}_{9,9}= 37,2+0,1 \left( \frac{31960 -31715,4}{5} \right) =42,1m/s \] \[ \hat{x}_{10,9}= 31764,3+5 \times 42,1=31974,8m \] \[ \hat{\dot{x}}_{10,9}=42,1m/s \]

Décima Iteração

\[ z_{10}= 31865 \] \[ \hat{x}_{10,10}=~ 31974,8+0,2 \left( 31865 -31974,8 \right) =31952,9m \] \[ \hat{\dot{x}}_{10,10}= 42,1+0,1 \left( \frac{31865 -31974,8}{5} \right) =39,9m/s \] \[ \hat{x}_{11,10}= 31952,9+5 \times 39,9=32152,4m \] \[ \hat{\dot{x}}_{11,10}= 39,9m/s \]

A tabela a seguir dispõe nossas medições e estimativas.

\( n \) 1 2 3 4 5 6 7 8 9 10
\( z_{n} \) 30110 30265 30740 30750 31135 31015 31180 31610 31960 31865
\( \hat{x}_{n,n} \) 30182 30351,4 30573,3 30769,5 31001,5 31176,4 31333,2 31529,4 31764,3 31952,9
\( \dot{\hat{x}}_{n,n} \) 38,2 36 40,2 39,7 43,1 39,/td> 35,2 37,2 42,1 39,9
\( \hat{x}_{n+1,n} \) 30373 30531,6 30774,3 30968,1 31216,8 31371,5 31509,2 31715,4 31974,8 32152,4
\( \dot{\hat{x}}_{n+1,n} \) 38,2 36,0 40,2 39,7 43,1 39 35,2 37,2 42,1 39,9

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

Medições vs. Valor real vs. Estimativas - Alpha e Beta pequenos

Nós podemos observar que nosso algoritmo de estimação tem um efeito de suavização nas medições, e ele converge em direção ao valor verdadeiro.

Usando valores altos para \( \alpha \) e \( \beta \)

O quadro a seguir mostra o valor verdadeiro, os valores medidos e as estimativas para \( \alpha = 0.8 \) e \( \beta = 0.5 \).

Medições vs. Valor real vs. Estimativas - Alpha e Beta altos

O grau de "suavização" do filtro é bem menor. A "estimativa atual" é muito próxima aos valores medidos e o erro da estimativa predita é bem maior.

Então, nós devemos sempre escolher valores pequenos para \( \alpha \) e \( \beta \) ?

A respota é NÃO. O valor de \( \alpha \) e \( \beta \) dependerá da precisão das medições. Se utilizamos um equipamento muito preciso, como um radar a laser, nós preferiríamos \( \alpha \) e \( \beta \) altos que seguissem as medições. Neste caso, o filtro iria responder rapidamente à variação de velocidade do alvo. Por outro lado, se a precisão das medições for baixa, preferiríamos \( \alpha \) e \( \beta \) pequenos. Neste caso, o filtro vai suavizar a incerteza (erros) nas medições. Entretanto, a reação do filtro à alterações de velocidade do alvo será bem mais lenta.

Uma vez que o cálculo de \( \alpha \) e \( \beta \) é um tópico tão importante, nós o discutiremos depois com mais detalhes.

Resumo do exemplo

Neste exemplo, nós encontramos a equação de atualização de estado do filtro \( \alpha - \beta \). Nós também aprendemos a Equação de Extrapolação de Estado. Desenvolvemos um algoritmo de estimação para um sistema dinâmico unidimensional, baseado no filtro \( \alpha - \beta \), e solucionamos um exemplo numérico para um alvo de velocidade constante.

Exemplo 3 – Rastreando uma aeronave em aceleração em uma dimensão

Neste exemplo, vamos rastrear uma aeronave que está se movendo com aceleração constante usando o filtro \( \alpha - \beta \), que já foi explicado no exemplo anterior.

No exemplo anterior, rastreamos o ANT que está se movendo a uma velocidade constante de 40m/s. O gráfico a seguir mostra a distância do alvo e a velocidade em função do tempo.

Movimento com velocidade constante

Como você pode ver, a função da distância é linear.

Agora vamos examinar uma aeronave de caça. Esta aeronave se move com velocidade constante de 50m/s por 15 segundos. Em seguida, a aeronave acelera com aceleração constante de 8m/s2 por mais 35 segundos.

O gráfico a seguir mostra a distância do alvo, velocidade e aceleração em função do tempo.

Movimento acelerado

Como você pode ver no gráfico, a velocidade da aeronave é constante nos primeiros 15 segundos e depois cresce linearmente. A distância cresce linearmente nos primeiros 15 segundos e, em seguida, aumenta quadraticamente.

Vamos rastrear essa aeronave com o filtro \( \alpha - \beta \) que foi usado no exemplo anterior.

O exemplo numérico

Dada a aeronave que está se aproximando (ou se distanciando) radialmente do radar no mundo unidimensional.

Os parâmetros do filtro \( \alpha - \beta \) são:

  • \( \alpha =0,2 \)
  • \( \beta =0,1 \)

O intervalo entre os rastreamentos é de 5 segundos

Iteração Zero

Inicialização

As condições iniciais para o tempo \ (n = 0 \) são dadas:

\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=50m/s \]

Nota:A Iniciação do Rastreamento (ou como obtemos as condições iniciais) é um tópico muito importante que será discutido mais tarde. Neste momento, nosso objetivo é entender a operação básica do filtro \( \alpha - \beta \), então vamos supor que as condições iniciais são fornecidas por outra pessoa.
Predição

A suposição inicial deve ser extrapolada para o primeiro ciclo (\ (n=1 \)) usando as Equações de Extrapolação de Estado:

\[ \hat{x}_{n+1,n}= \hat{x}_{n,n}+ \Delta t\hat{\dot{x}}_{n,n} \rightarrow \hat{x}_{1,0}= \hat{x}_{0,0}+ \Delta t\hat{\dot{x}}_{0,0} =30000+5 \times 50=30250m \] \[ \hat{\dot{x}}_{n+1,n}= \hat{\dot{x}}_{n,n} \rightarrow \hat{\dot{x}}_{1,0}= \hat{\dot{x}}_{0,0} =50m/s \]

Todas as iterações do filtro estão resumidas na próxima tabela:

\( n \) \( z_{n} \) Estimativas do estado atual ( \( \hat{x}_{n,n} \), \( \hat{\dot{x}}_{n,n} \) ) Predição ( \( \hat{x}_{n+1,n} \), \( \hat{\dot{x}}_{n+1,n} \) )
1 \( 30160m \) \[ \hat{x}_{1,1}=~ 30250+0,2 \left( 30160- 30250 \right) =30232m \] \[ \hat{\dot{x}}_{1,1}= 50+0,1 \left( \frac{30160 -30250}{5} \right) =48,2m/s \] \[ \hat{x}_{2,1}= 30232+5 \times 48,2=30473m \] \[ \hat{\dot{x}}_{2,1}= 48,2m/s \]
2 \( 30365m \) \[ \hat{x}_{2,2}=~ 30473+0,2 \left( 30365 -30473 \right) =30451,1m \] \[ \hat{\dot{x}}_{2,2}= 48,2+0,1 \left( \frac{30365 -30473}{5} \right) =46m/s \] \[ \hat{x}_{3,2}= 30451,1+5 \times 46=30681,6m \] \[ \hat{\dot{x}}_{3,2}= 46m/s \]
3 \( 30890m \) \[ \hat{x}_{3,3}=~ 30681,6+0.2 \left( 30890 -30681,6 \right) =30723,3m \] \[ \hat{\dot{x}}_{3,3}= 46+0,1 \left( \frac{30890 -30681,6}{5} \right) =50,2m/s \] \[ \hat{x}_{4,3}= 30723,3+5 \times 50,2=30974,3m \] \[ \hat{\dot{x}}_{4,3}= 50,2m/s \]
4 \( 31050m \) \[ \hat{x}_{4,4}=~ 30974,3+0,2 \left( 31050 -30974.3 \right) =30989,5m \] \[ \hat{\dot{x}}_{4,4}= 50,2+0,1 \left( \frac{31050 -30974,3}{5} \right) =51,7m/s \] \[ \hat{x}_{5,4}= 30989,5+5 \times 51,7=31248,1m \] \[ \hat{\dot{x}}_{5,4}= 51,7m/s \]
5 \( 31785m \) \[ \hat{x}_{5,5}=~ 31248,1+0,2 \left( 31785 -31248,1 \right) =31355,5m \] \[ \hat{\dot{x}}_{5,5}= 51,7+0,1 \left( \frac{31785 -31248,1}{5} \right) =62,5m/s \] \[ \hat{x}_{6,5}= 31355,5+5 \times 62,5=31667,8m \] \[ \hat{\dot{x}}_{6,5}= 62,5m/s \]
6 \( 32215m \) \[ \hat{x}_{6,6}=~ 31667,8+0,2 \left( 32215 -31667,8 \right) =31777.2m \] \[ \hat{\dot{x}}_{6,6}= 62,5+0,1 \left( \frac{32215 -31667,8}{5} \right) =73,4m/s \] \[ \hat{x}_{7,6}= 31777,2+5 \times 73,4=32144,2m \] \[ \hat{\dot{x}}_{7,6}= 73,4m/s \]
7 \( 33130m \) \[ \hat{x}_{7,7}=~ 32144,2+0,2 \left( 33130 -32144,2 \right) =32341,4m \] \[ \hat{\dot{x}}_{7,7}= 73,4+0,1 \left( \frac{33130 -32144,2}{5} \right) =93,1m/s \] \[ \hat{x}_{8,7}= 32341,4+5 \times 93,1=32807m \] \[ \hat{\dot{x}}_{8,7}= 93,1m/s \]
8 \( 34510m \) \[ \hat{x}_{8,8}=~ 32807+0,2 \left( 34510 -32807 \right) =33147,6m \] \[ \hat{\dot{x}}_{8,8}= 93,1+0,1 \left( \frac{34510 -32807}{5} \right) =127,2m/s \] \[ \hat{x}_{9,8}= 33147,6+5 \times 127,2=33783,5m \] \[ \hat{\dot{x}}_{9,8}= 127,2m/s \]
9 \( 36010m \) \[ \hat{x}_{9,9}=~ 33783,5+0,2 \left( 36010 -33783,5 \right) =34228,8m \] \[ \hat{\dot{x}}_{9,9}= 127,2+0,1 \left( \frac{36010 -33783,5}{5} \right) =171,7m/s \] \[ \hat{x}_{10,9}= 34228,8+5 \times 171,7=35087,4m \] \[ \hat{\dot{x}}_{10,9}= 171,7m/s \]
10 \( 37265m \) \[ \hat{x}_{10,10}=~ 35087,4+0,2 \left( 37265 -35087,4 \right) =35522,9m \] \[ \hat{\dot{x}}_{10,10}= 171,7+0.1 \left( \frac{37265 -35087,4}{5} \right) =215,3m/s \] \[ \hat{x}_{11,10}= 35522,9+5 \times 215,3=36559,2m \] \[ \hat{\dot{x}}_{11,10}= 215,3m/s \]

Os gráficos a seguir comparam o valor real, os valores medidos e as estimativas para a distância e velocidade nos primeiros 75 segundos.

Distância em função do tempo
Velocidade em função do tempo

Você pode ver uma lacuna constante entre os valores verdadeiros ou medidos e os valores estimados. A lacuna é chamada de erro de atraso. Outros nomes comuns para o erro de atraso são:

  • Erro dinâmico
  • Erro sistemático
  • Viés
  • Erro de truncamento

Resumo do exemplo

Nesse exemplo, examinamos o erro de atraso causado pela aceleração constante.

Exemplo 4 - Rastreamento de uma aeronave em aceleração com o filtro \( \alpha - \beta - \gamma \)

Neste exemplo, vamos rastrear a aeronave que está se movendo com aceleração constante usando o filtro \( \alpha - \beta - \gamma \).

O filtro \( \alpha - \beta - \gamma \)

O filtro \( \alpha - \beta - \gamma \) (às vezes chamado de filtro g-h-k ) considera a aceleração do alvo, portanto, as Equações de Extrapolação de Estado tornam-se:

Os gráficos a seguir comparam o valor real, os valores medidos e as estimativas para a distância, velocidade e aceleração nos primeiros 50 segundos.

Distância em função do tempo
Velocidade em função do tempo
Aceleração em função do tempo

Como você pode ver, o filtro \( \alpha - \beta - \gamma \) com equações de modelo dinâmico que incluem aceleração pode rastrear o alvo com aceleração constante e eliminar o erro de atraso.

Mas o que acontecerá no caso de um alvo manobrando? O alvo pode mudar repentinamente a direção do vôo fazendo uma curva. O verdadeiro modelo dinâmico do alvo também pode incluir um solavanco (mudança de aceleração). Nesses casos, o filtro \( \alpha - \beta - \gamma \) com coeficientes \( \alpha - \beta - \gamma \) constantes produzirá os erros de estimativa e em alguns casos perderá o rastreamento do alvo.

O filtro de Kalman pode lidar com a incerteza no modelo dinâmico e será nosso próximo tópico logo após o resumo.

Resumo do filtro \( \alpha -\beta - ( \gamma ) \)

Existem muitos tipos de filtros \( \alpha - \beta - ( \gamma) \) e eles são baseados no mesmo princípio:

  • A estimativa do estado atual é baseada nas equações de atualização de estado.
  • A próxima estimativa de estado (predição) é baseada nas equações do modelo dinâmico.

A principal diferença entre esses filtros é a seleção dos coeficientes de ponderação \( \alpha - \beta - ( \gamma ) \). Alguns tipos de filtro usam coeficientes de ponderação constantes, outros computam coeficientes de ponderação para cada iteração de filtro (ciclo).

A escolha de \( \alpha \), \( \beta \) e \( \gamma \) é crucial para a funcionalidade adequada de seu algoritmo de estimação. Outra questão importante é a inicialização do filtro, ou seja, fornecer o valor inicial para a primeira iteração.

A lista a seguir inclui os filtros \( \alpha - \beta - ( \gamma) \) mais populares:

  • Filtro de Wiener
  • Filtro Bayesiano
  • Filtro polinomial com desvanecimento de memória (Fading-memory)
  • Filtro polinomial com memória expansiva (ou memória crescente)
  • Filtro de mínimos quadrados
  • Filtro de Benedict–Bordner
  • Filtro de parâmetros concentrados (Lumped)
  • Filtro \( \alpha - \beta \) de mínimos quadrados ponderado
  • Filtro \( \alpha - \beta \) criticamente amortecido
  • Filtro de memória crescente
  • Filtro de Kalman
  • Filtro de Kalman estendido
  • Filtro de Kalman Unscented
  • Filtro de Kalman complexo estendido
  • Filtro Gauss-Hermite Kalman
  • Filtro Cubature Kalman
  • Filtro de partículas

Espero escrever um tutorial sobre alguns desses filtros no futuro. Mas este tutorial é sobre o Filtro de Kalman e esse é o tópico do nosso próximo exemplo.

Anterior Próximo