navlie.filters.InteractingModelFilter¶
- class navlie.filters.InteractingModelFilter(kf_list: List[ExtendedKalmanFilter], transition_matrix: ndarray)¶
Bases:
object
On-manifold Interacting Multiple Model Filter (IMM).
References for the IMM:
H. A. P. Blom and Y. Bar-Shalom, “The interacting multiple model algorithm for systems with Markovian switching coefficients,” in IEEE Transactions on Automatic Control, vol. 33, no. 8, pp. 780-783, Aug. 1988, doi: 10.1109/9.1299.
The IMM involves Gaussian mixtures. Reference for mixing Gaussians on manifolds:
J. Ćesić, I. Marković and I. Petrović, “Mixture Reduction on Matrix Lie Groups,” in IEEE Signal Processing Letters, vol. 24, no. 11, pp. 1719-1723, Nov. 2017, doi: 10.1109/LSP.2017.2723765.
Initialize InteractingModelFilter.
- Parameters:
kf_list (List[ExtendedKalmanFilter]) – A list of filter instances which correspond to each model of the IMM.
transition_matrix (np.ndarray) – Probability transition matrix corresponding to the IMM models.
- interaction(x: MixtureState)¶
The interaction (mixing) step of the IMM.
- Parameters:
x (MixtureState) –
- Return type:
- predict(x_km: MixtureState, u: Input, dt: float)¶
Carries out prediction step for each model of the IMM.
- Parameters:
x_km (MixtureState) – Model estimates from previous timestep, after mixing.
u (Input) – Input
dt (Float) – Timestep
- Return type:
- correct(x_check: MixtureState, y: Measurement, u: Input)¶
Carry out the correction step for each model and update model probabilities.
- Parameters:
x_check (MixtureState mu_km_models : List[Float]) – Probabilities for each model from previous timestep.
y (Measurement) – Measurement to be fused into the current state estimate.
u (Input) – Most recent input, to be used to predict the state forward if the measurement stamp is larger than the state stamp.
- Returns:
Corrected state estimates and probabilities
- Return type: