Eu construí (vários) filtros Kalman estendidos (EKF) discretos. O modelo de sistema que estou construindo possui 9 estados e 10 observações. Vejo que a maioria dos estados converge, exceto um. Todos, exceto 1-2 da estimativa do estado EKF, parecem flutuar. Como o EKF depende de todos os estados serem convergentes, o restante dos estados é muito errado após a divergência.
Como verifico a observabilidade do EKF? Simplesmente verifico a classificação da medida jacobiana e ver se é menor que a classificação máxima da medida jacobiana?
Depois de adicionar mais medidas na minha simulação, consegui fazer com que as coisas convergissem. No entanto, minha pergunta sobre observabilidade ainda permanece!
Questão:
Os gráficos da verdade do solo e da estimativa do EKF podem ser encontrados aqui ou veja abaixo.
Notas:
- O modelo é bastante não linear entre as etapas de tempo 400-600, portanto, há alguma divergência de alguns dos estados
- Figura / Estado 6 é o que parece divergir
- Por favor, ignore as plotagens de "leituras do sensor" das Figuras 8/9
Coisas que tentei:
- Sei que em sistemas lineares de espaço de estados você pode usar o Teorema de Cayley Hamilton para verificar a observabilidade.
- Tentei verificar o residual Inovação / medição
e
e todas as inovações convergem para 0 - Também testei entradas diferentes e elas não parecem afetar a convergência do (s) estado (s) divergente (s)
- Ajustei o EKF sem nenhum sinal de convergência para o (s) estado (s) divergente (s)
- Gráficos para outro sinal de entrada: ou veja abaixo
- Depois de conversar com um colega, ele sugeriu que eu investigasse outra questão que poderia ser a de que existe uma observação que depende linearmente de dois estados, por exemplo
y = x1 + x2
. Há um número infinito de valores que podem satisfazer o mesmoy
, mas a observabilidade não deve capturar esse problema também?
Informe-me se houver mais alguma coisa que eu possa fornecer.
Verdade do solo e gráficos de estimativa EKF:
Clique na imagem para ampliá-la
Sinal de entrada adicional:
Clique na imagem para ampliá-la
rank(O) = [H; HA...] = n
. A única questão é que eu tenho algo comosin( x(3) )
ou seno de estado 3. Eu o linearizox(3)
e o trato como parte da matriz A? Vou tentar isso de manhã e relatar de volta. Você pode usar o seguinte