I have built (several) discrete Extended Kalman Filters (EKF). The system model I am building has 9 states, and 10 observations. I see that most of the states converge except one. All except 1-2 of the EKF state estimate appears to drift. Since the EKF is dependent on all the states being convergent, the rest of the states are very erroneous after the divergence.
How do I check the observability of the EKF? Do I simply check the rank of the measurement Jacobian and see if it's less than the maximum rank of the measurement Jacobian?
After adding more measurements in my simulation, I was able to get things to converge. However, my question about observability still remains!
Issue:
Ground truth and EKF estimate graphs can be found here or see below.
Notes:
- The model is quite non-linear between time steps 400-600 hence some divergence of some of the states
- Figure/State 6 is the one that seems to be diverging
- Please ignore the "sensor readings" plots for Figures 8/9
Things I have tried:
- I know for linear state space systems you can use the Cayley Hamilton Theorem to check observability.
- I have tried to check the Innovation/measurement residual
e
and all innovations converge to 0 - I've also tested different inputs and they don't seem to affect the convergence of the diverging state(s)
- I've tuned the EKF without any sign of convergence for the diverging state(s)
- Graphs for another input signal: or see below
- After talking to a colleague, he suggested that I investigate another issue that could be that there is an observation that is linearly dependent on 2 states, e.g.
y = x1 + x2
. There is an infinite number of values that could satisfy the samey
, but shouldn't observability capture this issue as well?
Please let me know if there's anything else I can provide.
Ground truth & EKF estimate graphs:
Click on image for larger view
Additional input signal:
Click on image for larger view
rank(O) = [H; HA...] = n
. The only issue is that I have something likesin( x(3) )
or sine of state 3. Do I linearize it tox(3)
and treat it as part of the A matrix? I'll take a shot at this in the morning and report back. cwrucutter.wordpress.com/2012/11/12/… $\endgroup$