trying to understand U error estimation
Closed this issue · 1 comments
Is something missing in the U error estimation section? I'm not seeing how or where uerr is computed. is it a separate step outside the normal predict/update cycle?
I infer
X_est[k+1] = A X[k] + B u[k]
X_actual[k+1] = A X[k] + B u[k] + Berr uerr[k]
-> uerr[k+1] = inv(Berr) ( X_actual[k+1] - X_est[k+1] )
Is that the right track? it looks like something you would augment the observer with. if you could make inv(Berr) work..
The observer correction step does the u_error
computation implicitly. The correction step adds K(y - Cx - Du)
to the state estimate, where u_error
is part of the state. The equation you wrote is implicit in the choice of the kalman gain K
in that K
will adjust u_error
to minimize the innovation y - Cx - Du
.
By the way, inv(Berr)
would be the pseudoinverse of Berr
. While what you wrote technically works, it doesn't filter the u_error estimate through the model dynamics, so it could be pretty noisy. When it's included in the observer correction term, its contribution can be tuned using the relevant diagonal entry in the process noise covariance matrix Q
.