Estou empolgado em modelar um modelo de sistema, ou seja, obter meu vetor de estado e vetor de entrada. Meu palpite é que posição e velocidade são vetor de estado e aceleração é vetor de entrada. Meu segundo palpite é que todas as três quantidades estão no vetor de estado e nenhuma no vetor de entrada.
Então ... o que é vetor de estado e o que é vetor de entrada no meu caso?
-
Informação adicional:
Recebo medições do sensor de posição e do sensor de aceleração. Tudo está acontecendo em 1D, por exemplo, em linha reta. Quero mesclar essas leituras (e remover o ruído) para obter uma estimativa de velocidade para cada passo de tempo.
Essas equações descrevem o sistema; Não tenho certeza se eles são modelados corretamente. Se eu entendi direito, é seguro prever que a aceleração é constante (mesmo que na realidade mude) - porque a matriz de covariância do processo corrige essa suposição (certo?).
Também tenho alguns dados de exemplo para trabalhar (os valores de entrada não são barulhentos aqui por simplicidade):
time pos acc what I should get as output (velocity)
[0.0s] 0.000, -0.000 | 18.850
[0.1s] 1.885, -0.113 | 18.850
[0.2s] 3.768, -0.227 | 18.839
[0.3s] 5.650, -0.340 | 18.816
[0.4s] 7.528, -0.452 | 18.782
[0.5s] 9.401, -0.565 | 18.737
ADIÇÃO 2:
Para uma melhor comunicação, estou criando uma nova resposta, mas deve ser tratado como um comentário para a primeira resposta. Jason, você já me ajudou tremendamente e estou realmente agradecido pelo seu tempo. Ainda tenho problemas com isso - os resultados do Kalman Filter não são os esperados. Você pode encontrar o tempo, consulte o seguinte, obrigado. Eu já lhe devo uma cerveja ou duas (ou cofres, se quiser) - se você tiver paypal, entre em contato comigo no primoz [at] codehunter.eu :)
Eu implementei o modelo que Jason havia proposto na primeira resposta. Eu adicionei o idiota como quarta variável de estado. Depois de horas analisando, decidi voltar aqui para obter ajuda. Os valores que recebo da KF não são os esperados. A tabela abaixo representa os dados das 10 primeiras iterações do algoritmo. Observe como o idiota está aumentando a cada passo, tornando outras estimativas erradas. Após um segundo, a diferença entre a aceleração real e a estimativa é superior a 1m / s² (consulte a tabela na última linha)!
real measured estimated real
time pos acc pos acc pos acc jerk vel[!] velocity
0.0 0.000 -0.000 -0.040 0.030 | -0.300 -0.060 0.000 18.850 <--> 18.850
0.1 1.885 -0.113 1.965 -0.153 | 1.585 -0.061 -0.006 18.844 <--> 18.844
0.2 3.768 -0.227 3.778 -0.247 | 3.469 -0.066 -0.035 18.835 <--> 18.827
0.3 5.650 -0.340 5.750 -0.370 | 5.351 -0.090 -0.122 18.815 <--> 18.799
0.4 7.528 -0.452 7.358 -0.452 | 7.228 -0.152 -0.291 18.769 <--> 18.759
0.5 9.401 -0.565 9.251 -0.555 | 9.094 -0.282 -0.574 18.673 <--> 18.708
0.6 11.269 -0.677 11.309 -0.717 | 10.938 -0.518 -1.006 18.494 <--> 18.646
0.7 13.130 -0.788 13.260 -0.758 | 12.752 -0.840 -1.490 18.233 <--> 18.573
0.8 14.983 -0.899 15.043 -0.949 | 14.520 -1.286 -2.096 17.854 <--> 18.488
0.9 16.827 -1.009 16.977 -1.089 | 16.235 -1.838 -2.770 17.362 <--> 18.393
1.0 18.661 -1.118 18.831 -1.168 | 17.890 -2.477 -3.476 16.762 <--> 18.287
Minhas matrizes estão aqui:
O que está causando essa adição em cada timestep para idiota ? Alguma das minhas matrizes está errada?
O mesmo acontece com a primeira solução (apenas modelo de 3 estados) - a aceleração não está mudando como deveria.
ÚLTIMA EDIÇÃO:
Finalmente consegui fazê-lo funcionar. Não tenho certeza se houve um erro de implementação ou matrizes de P&Q erradas.