Projeto

Geral

Perfil

Guia básico do Filtro de Kalman » Histórico » Versão 1

Lucas Germano, 18/02/2019 13:57 h

1 1 Lucas Germano
# Guia básico do Filtro de Kalman
2
3
O tutorial que será ensinado aqui tem como base essa playlist do youtube: https://www.youtube.com/watch?v=CaCcOwJPytQ&list=PLX2gX-ftPVXU3oUFNATxGXY90AULiqnWT
4
5
O filtro funciona da seguinte maneira: 
6
7
![](diagrama.png)
8
9
Primeiramente faremos uma análise mais simples, depois partiremos para uma análise mais geral, onde haverá cálculos mais complicados.
10
11
O *Kalman Gain* é calculado por:
12
13
![](kalman_gain.png)
14
15
Ele é calculado dessa forma para representarmos as seguintes características:
16
17
![](fig1.png)
18
19
Do *Kalman Gain* tira-se o resultado para as estimativas:
20
21
![](eq1.png)
22
23
Temos ainda que calcular o erro na estimativa atual, baseando-se no erro das estimativas anteriores, isto pode ser feito desta forma:
24
25
![](eq2.png)
26
27
Então, em toda iteração nesta abordagem mais simples que fizemos, temos que repetir essas 3 equações (lembrando que o erro na medição é considerado constante):
28
29
![](iteracao.png)
30
31
Neste vídeo é feito um exemplo com todas essas equações vistas até agora: https://www.youtube.com/watch?v=PZrFFg5_Sd0
32
33
Agora vamos partir para o modelo de Kalman multi-dimensional, ou seja, onde queremos determinar e prever mais de uma variável. Para uma visão mais geral do modelo, que nem foi feito no começo, observe o seguinte fluxograma do kalman:
34
35
![](picture489-1.png)
36
37
A matrix de estado, que é a X, pode ter a quantidade de atributos que desejarmos (geralmente posição e velocidade), como por exemplo:
38
39
![](picture489-2.png)
40
41
As matrizes A e B vistos na determinação dos futuros estados são mudadas conforme o sistema, por exemplo, se estivermos querendo prever a altura e a velocidade de um objeto em queda livre, poderíamos atribuir os seguinte valores:
42
43
![](new.png)
44
45
A partir disso trabalharíamos com a equação para gerar o próximo estado, que podemos relembrá-la aqui: 
46
47
![](picture489-4.png)
48
49
Daí, é fácil ver que chegamos nas equações que estudamos em física I, do MRUV:
50
51
![](picture489-5.png)
52
53
Um exemplo feito passo-a-passo, com valores reais, pode ser visto aqui: https://www.youtube.com/watch?v=mRf-cL2mjo4&t=15s
54
55
Da mesma forma, podemos ver um exemplo aplicado em 2D, perceba que temos que mudar as matrizes A e B, principalmente porque aumentamos o número de variáveis:
56
57
![](picture489-7.png)
58
59
Pode-se ver facilmente a analogia entre este exemplo acima e o anterior. Vemos novamente as equações de posição e velocidade do MRUV. Não irei escrever aqui sobre o exemplo em 3D, mas ele segue os mesmos passos do anterior, fica aqui o link para quem quiser conferir: https://www.youtube.com/watch?v=FFvQtplnnWc
60
61
Agora vamos passar para a parte das matrizes de covariância.
62
63
Temos essas novas equações que irão definir as matrizes de covariância e o *kalman gain*:
64
65
![](picture30-1.png)
66
67
Uma explicação mais completa do que representa cada variável pode ser vista aqui:
68
69
![](picture30-2.png)
70
71
Aqui está um exemplo de uma matriz de matriz de covariância em 2D, onde cada termo representa a variância (termos da diagonal) ou a covariância (termos das outras células):
72
73
![](picture30-3.png)
74
75
A variância e a covariância são definidas por:
76
77
![](picture30-4.png)
78
79
Um exemplo simples da aplicação destas últimas equações pode ser visto em: [exercicio 1](https://www.youtube.com/watch?v=xPu1m2xfhVc&t=3s), [exercicio 2 - parte 1](https://www.youtube.com/watch?v=zRHzMsV9yEo) e [exercicio 2 - parte 2](https://www.youtube.com/watch?v=LmZAwtQ6XzI&t=3s).
80
81
Aqui segue um exemplo de como calcular a matriz de covariância baseada em notas de um aluno: [exemplo](https://www.youtube.com/watch?v=9B5vEVjH2Pk)
82
83
Um fato importante sobre a matriz de covariância é que se a estimativa para uma variável, digamos *x*, é completamente independente de outra variável, digamos velocidade *v*, então nenhum ajuste é feito para as estimativas de uma variável em função do erro de outra. Ou seja, teríamos uma matriz de covariância com termos nulos fora da diagonal principal:
84
85
![](picture30-5.png)