@@ -30,8 +30,8 @@ function init_estimate_cov!(estim::MovingHorizonEstimator, y0m, d0, u0)
3030 nd > 0 && (estim. D0[1 : nd] .= d0) # add d0(-1) to the data window
3131 estim. lastu0 .= u0
3232 # estim.cov.P̂_0 is P̂(-1|-1) if estim.direct==false, else P̂(-1|0)
33- invert_cov! (estim, estim. cov. P̂_0)
3433 estim. P̂arr_old .= estim. cov. P̂_0
34+ invert_cov! (estim, estim. covestim)
3535 estim. x̂0arr_old .= 0
3636 return nothing
3737end
@@ -709,7 +709,7 @@ function correct_cov!(estim::MovingHorizonEstimator)
709709 correct_estimate! (estim. covestim, y0marr, d0arr)
710710 all (isfinite, estim. covestim. cov. P̂) || error (" Arrival covariance P̄ is not finite" )
711711 estim. P̂arr_old .= estim. covestim. cov. P̂
712- invert_cov! (estim, estim. P̂arr_old )
712+ invert_cov! (estim, estim. covestim )
713713 catch err
714714 if err isa PosDefException
715715 @error (" Arrival covariance P̄ is not positive definite: keeping the old one" )
@@ -736,7 +736,7 @@ function update_cov!(estim::MovingHorizonEstimator)
736736 update_estimate! (estim. covestim, y0marr, d0arr, u0arr)
737737 all (isfinite, estim. covestim. cov. P̂) || error (" Arrival covariance P̄ is not finite" )
738738 estim. P̂arr_old .= estim. covestim. cov. P̂
739- invert_cov! (estim, estim. P̂arr_old )
739+ invert_cov! (estim, estim. covestim )
740740 catch err
741741 if err isa PosDefException
742742 @error (" Arrival covariance P̄ is not positive definite: keeping the old one" )
@@ -749,8 +749,9 @@ function update_cov!(estim::MovingHorizonEstimator)
749749 return nothing
750750end
751751
752- " Invert the covariance estimate at arrival `P̄`."
753- function invert_cov! (estim:: MovingHorizonEstimator , P̄)
752+ " Invert the covariance estimate at arrival `P̄` and store it in `estim.cov.invP̄`."
753+ function invert_cov! (estim:: MovingHorizonEstimator , covestim:: StateEstimator )
754+ P̄ = estim. P̂arr_old
754755 estim. cov. invP̄ .= P̄
755756 try
756757 inv! (estim. cov. invP̄)
@@ -763,6 +764,9 @@ function invert_cov!(estim::MovingHorizonEstimator, P̄)
763764 end
764765 return nothing
765766end
767+ " Do nothing if `covestim` is a [`SteadyKalmanFilter`]."
768+ invert_cov! (:: MovingHorizonEstimator , :: SteadyKalmanFilter ) = nothing
769+
766770
767771"""
768772 obj_nonlinprog(estim::MovingHorizonEstimator, ::LinModel, _ , _ , _ , Z̃)
0 commit comments