Em estatística, o filtro de Kalman é um método matemático criado por Rudolf Kalman. Seu propósito é utilizar medições de grandezas realizadas ao longo do tempo (contaminadas com ruído e outras incertezas) e gerar resultados que tendam a se aproximar dos valores reais das grandezas medidas e valores associados. O filtro de Kalman apresenta diversas aplicações e é uma parte essencial do desenvolvimento de tecnologias espaciais e militares. Talvez o tipo mais usado e simples do filtro de Kalman seja em phase-locked loop (malhas de captura de fase), bastante comuns em rádios FM e na maioria dos equipamentos de telecomunicações existentes. Extensões e generalizações do método também foram desenvolvidas.
O filtro de Kalman produz estimativas dos valores reais de grandezas medidas e valores associados predizendo um valor, estimando a incerteza do valor predito e calculando uma média ponderada entre o valor predito e o valor medido. O peso maior é dado ao valor de menor incerteza. As estimativas geradas pelo método tendem a estar mais próximas dos valores reais que as medidas originais pois a média ponderada apresenta uma melhor estimativa de incerteza que ambos os valores utilizados no seu cálculo.
Do ponto de vista teórico, o filtro de Kalman é um algoritmo para realizar, de forma eficiente, inferências exatas sobre um sistema dinâmico linear, que é um modelo Bayesiano semelhante a um Modelo oculto de Markov, mas onde o espaço de estados das variáveis não observadas é contínuo e todas as variáveis, observadas e não observadas, apresentam distribuição normal (ou, frequentemente, distribuição normal multivariada).
Histórico O filtro é nomeado em homenagem a Rudolf Kalman, embora Thorvald Nicolai ThieleSteffen L. Lauritzen. "Time series analysis in 1880. A discussion of contributions made by T.N. Thiele". International Statistical Review 49, 1981, 319-333.Steffen L. Lauritzen, Thiele: Pioneer in Statistics, Oxford University Press, 2002. ISBN 0-19-850972-3. e Peter Swerling tenham desenvolvido um algoritmo similar antes.
Stanley F. Schmidt é geralmente citado como tendo desenvolvido a primeira implementação do filtro de Kalman. Richard S. Bucy contribuiu com a teoria, levando à denominação ocasional do filtro de Kalman-Bucy. Durante uma visita de Kalman ao NASA Ames Research Center ele viu a aplicação de suas ideias no problema de estimação de trajetórias para o Projeto Apollo, levando à incorporação do filtro no computador de navegação do projeto Apollo. O filtro de Kalman foi primeiramente descrito e desenvolvido parcialmente nos artigos acadêmicos de Swerling (1958), Kalman (1960) e Kalman e Bucy (1961).
Os filtros de Kalman tem sido vitais na implementação de sistemas de navegação de submarinos e nos sistemas de guiamento e navegação de mísseis de cruzeiro como o Tomahawk da marinha americana, e o AGM-86 ALCM da força aérea americana. O filtro de Kalman também é utilizado no guiamento e navegação dos Ônibus Espacias da NASA e no controle de atitude da Estação Espacial Internacional.
Esse filtro digital é ocasionalmente chamado de filtro de Stratonovich–Kalman–Bucy por ser um caso particular de um filtro mais geral e não-linear desenvolvido pouco antes pelo matemático russo Ruslan Stratonovich.Stratonovich, R.L. (1959). Optimum nonlinear systems which bring about a separation of a signal with constant parameters from noise. Radiofizika, 2:6, pp. 892–901.Stratonovich, R.L. (1960) Application of the Markov processes theory to optimal filtering. Radio Engineering and Electronic Physics, 5:11, pp. 1–19. De fato, algumas equações de casos especiais lineares apareceram nos artigos de Stratonovich que foram publicados antes do verão de 1960, quando Kalman se encontrou com Stratonovich durante uma conferência em Moscow.
Descrição técnica
O filtro de Kalman é um eficiente filtro recursivo que estima o estado de um sistema dinâmico linear a partir de uma série de medições ruidosas. O filtro é utilizado em uma grande variedade de aplicações em engenharia e econometria, desde radar e visão computacional até modelos macroeconômicos e é um tópico importante na teoria de sistemas de controle. O filtro de Kalman é utilizado, em conjunto com o regulador quadrático linear (linear quadratic regulator - LQR), para resolver o problema de controle gaussiano quadrático linear (linear-quadratic-Gaussian control - LQG). O filtro de Kalman, o regulador quadrático linear e o controlador gaussiano quadrático linear são soluções para os problemas mais fundamentais da teoria de controle.
Na maioria das aplicações, o estado completo do sistema é muito maior (apresenta mais graus de liberdade) que os poucos parâmetros passíveis de serem medidos. Porém, ao combinar uma série de medições, o filtro de Kalman é capaz de estimar o estado completo.
Uma grande variedade de filtros de Kalman foi desenvolvida, desde a forma original de Kalman, o filtro de Kalman-Bucy, o filtro estendido de Schmidt, o filtro de informação (information filter) e uma variedade de filtros baseados em raízes quadradas desenvolvidos por Bierman, Thornton e muitos outros. Talvez o tipo mais usado e simples do filtro de Kalman seja em phase-locked loop (malhas de captura de fase), bastante comuns em rádios FM e na maioria dos equipamentos de telecomunicações existentes.
Equacionamento Visão geral O filtro de Kalman utiliza um modelo dinâmico de um sistema (as equações do movimento, por exemplo), entradas de controle conhecidas e medições (como as de sensores) para gerar uma estimativa das grandezas variáveis do sistema (seus estados). A estimativa obtida desta forma é melhor que a estimativa obtida utilizando-se qualquer uma das medidas unicamente. Assim, é um algoritmo usual para fusão de sensores.
Todas as medições e cálculos baseados em modelos são, de certo modo, estimativas. Sinais ruidosos de sensores, aproximações nas equações que descrevem o comportamento do sistema e fatores externos não considerados introduzem incerteza sobre os valores inferidos para o estado de um sistema. O filtro de Kalman combina uma predição do estado de um sistema com uma nova medida usando uma média ponderada. A ideia dos pesos é que valores com menor incerteza estimada sejam mais "confiados". Os pesos são calculados através da covariância, uma medida da incerteza estimada da predição do estado do sistema. O resultado da média ponderada é uma nova estimativa do estado, que se localiza entre o estado predito e o estado medido, apresentando uma melhor incerteza estimada que qualquer um dos dois unicamente. Este processo é repetido a cada passo de tempo, com a nova estimativa e sua covariância gerando a predição usada na próxima iteração. Isto significa que o filtro de Kalman funciona recursivamente e requer apenas a última estimativa - não o histórico completo - do estado de um sistema para calcular o próximo estado.
Quando executando os cálculos para o filtro (como explicado abaixo), a estimativa do estado e as covariâncias são representadas por matrizes, para tratar as múltiplas dimensões envolvidas num único passo do cálculo. Desta forma, é possível representar as relações lineares entre diferentes variáveis de estado (como posição, velocidade e aceleração) em qualquer um dos modelos de transição ou covariâncias.
Modelo de sistema dinâmico considerado Os filtros de Kalman são baseados em sistemas dinâmicos lineares discretizados no domínio do tempo. Eles são modelados em uma cadeia de Markov sobre operadores lineares perturbados por distribuições normais. O estado do sistema é representado como um vetor de números reais. A cada passo de tempo, um operador linear é aplicado ao estado para gerar o próximo estado, com adição de ruído e, opcionalmente, alguma informação sobre as entradas de controle, caso sejam conhecidas. Depois, outro operador linear com mais adição de ruído gera as observações do estado real. O filtro de Kalman pode ser visto como análogo ao modelo oculto de Markov, com a diferença principal que as variáveis ocultas pertencem a um espaço contínuo (ao contrário do espaço de estados discreto do modelo oculto de Markov. Além disso, o modelo oculto de Markov pode representar uma distribuição arbitrária para o próximo valor das variáveis de estado, ao contrário do modelo de ruído Gaussiano utilizado para o filtro de Kalman. Há uma significativa dualidade entre as equações do filtro de Kalman e do modelo oculto de Markov, como mostrado por Roweis and Ghahramani (1999).Roweis, S. and Ghahramani, Z., A unifying review of linear Gaussian models, Neural Comput. Vol. 11, No. 2, (February 1999), pp. 305–345.
De modo a utilizar o filtro de Kalman para estimar o estado completo de um processo dada apenas uma sequência de observações ruidosas, é necessário modelar o processo de acordo com o framework do filtro de Kalman. Isto significa especificar as seguintes matrizes: Fk, o modelo de transição de estados; Hk, o modelo de observação; Qk, a covariância do ruído do processo; Rk, a covariância do ruído da observação; e, ocasionalmente, Bk, o modelo das entradas de controle, para cada passo de tempo k, como descrito abaixo.
right|thumb|250px|Modelo considerado no filtro de Kalman. Círculos são vetores, quadrados são matrizes, e estrelas representam ruído gaussiano associado com a matriz de covariância no canto inferior direito.
O modelo para o filtro de Kalman assume que o estado real no tempo k é obtido através do estado no tempo (k − 1) de acordo com
onde
Fk é o modelo de transição de estados, aplicado no estado anterior xk−1; Bk é o modelo das entradas de controle, aplicado no vetor de entradas de controle uk; wk é o ruído do processo, assumido como sendo amostrado de uma distribuição normal multivariada de média zero e covariância Qk.
No tempo k, uma observação (ou medição) zk do estado real xk é feita de acordo com
onde Hk é o modelo de observação, que mapeia o espaço de estados real no espaço de estados observado, e vk é o ruído da observação, assumido como sendo um ruído branco gaussiano de média zero e covariância Rk.
O estado inicial e os vetores de ruído a cada passo {x0, w1, ..., wk, v1 ... vk} são assumidos como sendo mutuamente independentes.
Muitos sistemas dinâmicos reais não se encaixam perfeitamente neste modelo. De fato, efeitos dinâmicos não modelados podem degradar significativamente o desempenho do filtro, mesmo levando em conta que o filtro deve funcionar com sinais estocásticos desconhecidos como entrada. O motivo deste fato é que os efeitos dinâmicos não modelados dependem das entradas e, desta forma, podem levar o algoritmo de estimação à instabilidade (divergência). Por outro lado, sinais de ruído branco independentes não farão o algoritmo divergir. O problema de separação entre ruído na medição e efeitos dinâmicos não modelados é difícil, sendo tratado na teoria de controle na área de controle robusto.
Equações
O filtro de Kalman é um estimador recursivo. Isto significa que apenas a estimativa do estado no passo anterior e a medição atual são necessários para computar a estimativa do estado atual. Ao contrário de outras técnicas de estimação, nem o histórico de observações, nem o histórico das estimativas são necessários. No restante do texto, a notação representa a estimativa de no tempo n, dadas as observações até o tempo m, inclusive.
O estado do filtro é representado por duas variáveis:
, a estimativa a posteriori do estado no tempo k, dadas as observações até o tempo k, inclusive; , a matriz de covariância do erro a posteriori (uma medida da acurácia estimada da estimativa do estado).