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.
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.
No tempo \( n \), a estimativa \( \hat{x}_{n,n} \) seria a média de todas as medições anteriores:
\( 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 |
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:
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:
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á:
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.
O quadro a seguir retrata o algoritmo de estimação utilizado neste exemplo.
Agora, estamos prontos para começar o processo de medição e estimaçã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 \]
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 \]
Realiza-se a medição do peso com a balança:
\[ z_{1}= 1030g \]
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 \]
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 \]
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 \]
Realiza-se a segunda medição do peso:
\[ z_{2}= 989g \]
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 \]
\[ \hat{x}_{3,2}= \hat{x}_{2,2}=1009.5g \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 |
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.
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.
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.
\( 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:
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:
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.
Agora, vamos modificar a Equação de Atualização de Estado para nosso exemplo.
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:
Qual das duas afirmações é verdadeira?
Vamos escrever a Equação de Atualização de Estado para a velocidade:
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:
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 \).
O quadro a seguir descreve o algoritmo de estimação utilizado neste exemplo.
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.
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:
O intervalo entre rastreamentos é 5 segundos.
As condições iniciais para o instante \( n=0 \) são dadas:
\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=40m/s \]
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 \]
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 \]
O radar mede a distância da aeronave:
\[ z_{1}= 30110m \]
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 \]
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 \]
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 \]
O radar mede a distância da aeronave:
\[ z_{2}= 30265m \]
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 \]
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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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 \]
\[ 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.
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.
O quadro a seguir mostra o valor verdadeiro, os valores medidos e as estimativas para \( \alpha = 0.8 \) e \( \beta = 0.5 \).
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.
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.
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.
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.
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.
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:
O intervalo entre os rastreamentos é de 5 segundos
As condições iniciais para o tempo \ (n = 0 \) são dadas:
\[ \hat{x}_{0,0}=30000m \] \[ \hat{\dot{x}}_{0,0}=50m/s \]
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.
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:
Nesse exemplo, examinamos o erro de atraso causado pela aceleração constante.
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 \) (à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.
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.
Existem muitos tipos de filtros \( \alpha - \beta - ( \gamma) \) e eles são baseados no mesmo princípio:
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:
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.