Répétitions

  1. Rappels
  2. Indépendance
  3. Chaîne de Markov
  4. Réseaux bayésiens
  5. Variables aléatoire gaussiennes, code générant les figures
  6. Estimation statique
  7. Filtre de Kalman
  8. Récapitulatif Il vous est fortement conseillé d'essaier de faire les exercises par vous même et d'imprimer les solutions d'examens correspondants.

Exercises supplémentaires

Pour résoudre ces exercises, il peut être avantageux ou intéressant d'utiliser Matlab.

Projet

L'énoncé (amendé 17/04/2012) du projet est disponible, ainsi que la toolbox qui lui est associée.

Détails pratiques :

FAQ

Dans la fonction mobile_move.m de la toolbox, nous avons pu remarquer que l'accélération est divisée par la masse du robot. S'agit-il donc d'une force ou d'une accélération ?
Effectivement, il s'agit bien d'une force qui applique une accélération au mobile.
Au paragraphe 3.3, la matrice sigma_x n'est pas identique à celle construite dans le code. Par ailleurs, dans le code apparaît une variable zeta non mentionnée dans l'énoncé. Comment devons-nous l'interpréter ?
Dans ce même paragraphe, il semble qu'il y ait un problème de dimensions dans la matrice: la variance sur la position ne doit-elle pas s'exprimer en m^2 ?
Toujours dans ce paragraphe, la figure mentionne une zone de confiance à 75 % alors que dans le code, l'intervalle de confiance est fixé à 90% et celui-ci génère la même figure que dans l'énoncé.
Effectivement, il y a une différence entre la matrice sigma_x de l'énoncé et dans le code. Gardez celle du code, c'est un oubli qui n'a pas été modifié.
La variable zeta est un facteur multiplicateur qui permet de multiplier la matrice de covariance initiale. Son utilisation permettra de répondre aisément à la question 3.
Du point de vue des unités, la variance de sigma_x devrait être effectivement être exprimé en m^2. Dans le code, tu verras que c'est le cas. D'un point de vue plus pratique, la constante 0.5 pourrait être une constante exprimé en m.
Excellente observation pour la figure sur l'intervalle de confiance. Vous pouvez garder la valeur du fichier main.m.
Enfin, quel est l'intérêt d'avoir une zone de confiance d'initialisation aussi large par rapport à l'aire de jeu ?
La taille de la zone de confiance dépend de la matrice de covariance intiale. Or celle-ci a été choisie suffisament large afin de se rapprocher de la distribution stationnaire. Cela explique que la zone de confiance initial est supérieure à celle de l'aire de jeu. (cf. présentation sur les variables aléatoires gaussiennes).
De plus à priori sans aucune information, notre incertitute sur la position du robot doit au moins avoir la taille de l'aire de jeu.
Dans l'énoncé du projet, vous faites référence à une matrice de covariance sur la moyenne de "x". Ne serait-ce pas sur "x" simplement ?
La notation sigma_x_bar a été utilisé au lieu de sigma_x pour souligner le fait que la matrice se réfère à une distribution de moyenne x_bar, et la dissocier de sigma_x_tilde.
Pour la question 6, il est demandé de modifier le nombre de mesures pas intervalle d'accélération. Est-il normal que dans le cadre de ces modifications la trajectoire réelle du robot change d'une manière non-négligeable vu que théoriquement le pas de temps devrait s'adapter de sorte que le temps de chaque phase d'accélération soit constant quel que soit le nombre de mesures ?
Il faut que la trajectoire effectuée et donc le signal commande prenne en compte la modification du pas de temps. Remarquez que les bruits ajoutés peuvent modifier la trajectoire du mobile.
Dans l'énoncé, au niveau de l'équation de x(k+1) au début du point 4 : -> Le second terme de la somme est Bk * w(k). Tenant compte des équations (2) p2, n'est-il pas équivalent voire correct de considérer le terme comme étant "Bk + w(k)" avec Bk la matrice 4x1 tel que définie dans "kalman_filter.m" et w(k) un vecteur nul puisque dans ce même fichier le vecteur w(k) n'apparait pas (équation ligne 56) ?
Non, les formulations du filtre de Kalman et du filtre de Kalman étendu ne sont pas les mêmes.
Concernant le bruit de stabilisation (p7, 5.2) : dans le fichier "kalman_filter.m", ligne 75 à 77, le terme correcteur du bruitde stabilisation semble commenté. Pourquoi ce terme peut-il être omis alors que d'après le paragraphe 5.2 celui-ci est nécessaire pour éviter des divergences ?
Je t'invite à tester avec et sans le bruit de stabilisation et de constater si il y a un problème de divergence.
à plusieurs reprises dans le code, des lignes de commentaires contenant le sigma_square_stab apparaissent. Faut-il utiliser celui-ci à partir de la question 3 et l'intégrer au filtre de Kalman?
Non.
Est ce que le code permettant de répondre aux questions n'est pas à rendre?
Tous les codes permettant de répondre aux questions doivent être rendu. Des petits ordinateurs ont été ajoutés afin d'être en accord avec les guidelines.
Ensuite, dans le cas du filtre de Kalman étendu, on précise à la sous-section 5.1 que l'estimation des matrices F_k et H_k se fait systématiquement à l'état prédit ou estimé \hat{x} mais, à la sous-section 5.3, la notation employée semble indiquer que l'estimation se fait en l'état moyen xbar. Le plus logique des deux raisonnements semble être le premier pour ma part, et il me semble que c'est ce que le code kalman_filter accomplit, mais à nouveau, j'apprécierais avoir une confirmation de votre part.
Dans la section 5.3, \bar{x} correspond au point moyen autour desquelle la linéarisation est faite. Si tu regardes à la section 5.1, tu verras que \bar{x} correspond \hat{x}(k|k-1) pour le filtre de Kalman étendu.
A la dernière question, l'accélération reste-t-elle constante ou est-elle évolutive?
L'accélération évolue dynamiquement.

Examens et correctifs