Filtrage de Kalman

Avertissement
Module au stade expérimental (fonctions très limitées, tests incomplets, API non stabilisée).


Structures

struct SSM
Modèle abtrait pour une représentation d'état.

struct SSMLineaire
Modèle linéaire.

struct FiltreSSM
Filtre abstrait pour retrouver la séquence d'états cachés d'un modèle SSM.

struct IMUConfig
Configuration pour le modèle IMU.

Fonctions

sptr<SSMLineaire> ssm_lineaire(const Tabf &A, const Tabf &C, const Tabf &B=Tabf(), const Tabf &D=Tabf())

Tabf jacobienne_num(fonction<Vecf(const Vecf &)> f, const Vecf &x)
Dérivation numérique.

sptr<FiltreSSM> filtre_kalman(sptr<SSMLineaire> ssm, const Vecf &x0=Vecf(), const Tabf &p0=Tabf())
Construction d'un filtre de Kalman.

sptr<FiltreSSM> filtre_ekf(sptr<SSM> ssm)
Construction d'un filtre de Kalman étendu (EKF / Extended Kalman Filter).

sptr<SSMLineaire> modele_marche_aleatoire(entier ndim=1, const Tabf &Q=Tabf(), const Tabf &R=Tabf())
Marche aléatoire.

sptr<SSMLineaire> modele_constante(float R=0.1)
Le système en représentation d'état le plus simple : une valeur constante.

sptr<SSM> modele_kitagawa()
Modèle non linéaire de Kitagawa.

tuple<Tabf, float> dare(const Tabf &A, const Tabf &C, const Tabf &Q, const Tabf &R, float tolerance=1e-7, entier iter_max=1000)
Résolution de l'équation de Riccati discrète (DARE).

Tabf kalman_ssg(sptr<const SSMLineaire> modele)
Calcul le gain de Kalman en régime établi.

tsd::vue::Figures tsd::kalman::plot_etats(sptr<const SSM> ssm, const Tabf &x, const Tabf &xe=Tabf())
Affichage d'une séquence d'états.

tsd::vue::Figures tsd::kalman::plot_obs(sptr<const SSM> sys, const Tabf &y)
Affichage d'une séquence d'observations.

sptr<SSM> modele_imu(const IMUConfig &cfg)
Modèle générique IMU (Inertial Measuring Unit).