O assunto deste post é o filtro de Kalman. É uma ferramenta muito útil em sistemas de controle, onde não há certeza nas informações em um sistema.
O que é?
O filtro de Kalman é um algoritmo de otimização para estimar o estado de um sistema com ruído e incertezas. Este filtro recebe medidas imprecisas com ruído, consegue estimar o estado atual com boa precisão e fazer uma previsão do estado futuro.
Por quê usar filtro de Kalman?
Existem situações onde um valor desejado não pode ser medido diretamente, alguns exemplos: A temperatura de motor de avião ou da câmara de combustão de um foguete. Se a temperatura for muito alta, as partes mecânicas serão danificadas. Não é possível medir a temperatura diretamente com um sensor, pois este não suporta altas temperaturas. Então o sensor deve ser posicionado em um lugar mais frio e a temperatura deve ser medida indiretamente .
E então, entra o filtro de Kalman, obtendo uma estimativa da temperatura verdadeira a partir de . Também pode ser usado para estimar o estado a partir da medida de vários sensores. Por exemplo, um carro ou drone tem GPS, unidade de medida inercial (IMU) e odômetro, este mede a velocidade relativa. Os sensores estão sujeitos a ruído e erros. O filtro de Kalman usa as medições para obter uma estimativa ótima da posição e velocidade do veículo ou drone.
Como funciona?
Nesta parte é explicada uma introdução ao funcionamento do filtro de Kalman padrão (KF), que trabalha somente com equações lineares. Outras variações do filtro serão assunto para futuros posts.
Primeiro é preciso criar um modelo matemático do sistema, porém este é só uma aproximação do sistema real. Supondo que u é a entrada do sistema, y e são as saídas do sistema real e modelo respectivamente. Enquanto x e são os vetores de variáveis do sistema real e do modelo respectivamente que têm que estimar.
A parte contornada em vermelho é o observador de estado.
O cálculo do erro .
A, B e C são matrizes. O filtro de Kalman deve ter um contador de tempo discreto k.
Para melhorar a precisão, o ruído do processo e a variável aleatória devem ser considerados.
e são curvas gaussianas. Uma curva gaussiana tem a forma mostrada abaixo, neste exemplo, a média é 0 e o desvio padrão é 1.
e têm média zero e matrizes de covariância e respectivamente.
Algoritmo
O filtro de Kalman tem que combinar os vetores e para ter a melhor estimativa. O algoritmo tem dois passos: previsão, onde os estados são estimados com as incertezas e atualização, a parte de medição com ruído. Estas são as equações da previsão.
- é o vetor de estimativa a priori, antes da medição.
- é o erro de covariância a priori, a medida da incerteza no estado medido.
- e são valores que devem ser estimados no início do algoritmo com k=0.
O próximo passo é a parte da atualização e estas são as equações.
e são usados para calcular o ganho de Kalman e atualizar os valores a posteriori de e . O ganho de Kalman indica a influência da medição e da estimativa a priori para calcular . Se R tende a zero, o limite do ganho de Kalman é 1, porque na maioria dos casos a matriz C vale 1.
Em contraste, se o erro de covariância tende a zero, o ganho de Kalman também será zero.
Soma-se +1 ao tempo discreto k, a próxima previsão para o instante a seguir é feita e o ciclo continua. Algumas fontes trocam o C por H e colocam z como vetor de medição.
Aplicações na robótica
Robôs autônomos navegando por um ambiente cheio de obstáculos, precisam prever a posição e velocidade futuras para planejar um caminho e chegar na posição certa. Além disso, usam vários sensores mostrando medidas imperfeitas do estado atual.
Este filtro será muito útil em carros sem motorista, o passageiro vai indicar o local para onde quer ir e o carro vai planejar a trajetória considerando a distância e o trânsito.
Também tem aplicação na visão de máquina para saber a trajetória de um objeto.