<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbelhoua</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sbelhoua"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Sbelhoua"/>
		<updated>2026-05-13T23:15:50Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation20_P24.png&amp;diff=69771</id>
		<title>Fichier:Equation20 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation20_P24.png&amp;diff=69771"/>
				<updated>2019-02-26T19:13:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69770</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69770"/>
				<updated>2019-02-26T19:12:18Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bete_à_cornes_PFE_P24.png|1000px|thumb|center|Figure  : Bête à cornes]]&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:calendrier_prévisionnel1_PFE_P24.png|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
Lors de cette semaine, la finition du projet a été réalisé.&lt;br /&gt;
&lt;br /&gt;
===Semaine 13===&lt;br /&gt;
&lt;br /&gt;
Lors de cette dernière semaine, le travail a été focalisé sur les tâches suivantes.&lt;br /&gt;
* Finalisation du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
Pour l'utilisation du filtre de Kalman, le système doit être un système linéaire bruité. Nous pouvons écrire sous la forme suivante le système : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation1_P24.png|1000px|thumb|center|Figure  : Forme du système]]&lt;br /&gt;
&lt;br /&gt;
Rappel sur les bruits blancs Gaussiens :&lt;br /&gt;
Un bruit blanc est un processus aléatoire ayant la même densité spectrale de puissance(DSP) à toutes les fréquences de la bande passante. On dit qu'un bruit blanc est Gaussien&lt;br /&gt;
lorsqu'il a une distribution normale et que sa moyenne est nulle. De plus ce bruit est ajouté au système. Pour commencer, nous savons que nous avons besoin de mesures pour le filtre de&lt;br /&gt;
Kalman et étant donné que nous n'en avons pas au début il faut bien initialiser une valeur. Nous recherchons à minimiser la matrice de covariance de l'erreur. &lt;br /&gt;
&lt;br /&gt;
Par la suite les deux étapes nécessaires au fonctionnement de ce filtrage sont la prédiction et la correction.&lt;br /&gt;
&lt;br /&gt;
*Étape de prédiction :&lt;br /&gt;
Lors de l'étape de prédiction, nous avons l'erreur d'estimation qui croit car l'initialisation était obligatoire pour la suite et le bon fonctionnement de l'algorithme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation2_P24.png|1000px|thumb|center|Figure  : Prédiction de Kalman]]&lt;br /&gt;
&lt;br /&gt;
* Étape de correction :&lt;br /&gt;
Nous prenons en compte les différentes mesures pour corriger l'estimation trouvée. C'est pour cela que nous utilisons le théorème récursif des moindres carrés. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation20_P24.png|1000px|thumb|center|Figure  : Correction de Kalman]]&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Acquisition de mesures et commande==&lt;br /&gt;
&lt;br /&gt;
L'étape qui précède l'identification et la validation du modèle est la collecte de données. Ainsi pour cela l'établissement d'un parcours a été effectué, cette partie fut alors la partie commande. Le parcours a été établi pour durer assez longtemps c'est-à-dire entre 45 min et 1 heure. Ensuite, dans cet enregistrement de données nous avons les différentes données concernant les moteurs par exemple. Au départ le lacet du robot nous intéressé&lt;br /&gt;
particulièrement. Les entrées du système sont les consignes de vitesses angulaires envoyées et la sortie était le lacet du robot mobile. Le Robotino était testé sur la piste de test de robots de Polytech Lille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:piste_robotino_P24.png|1500px|thumb|center|Figure  :  Arène de test du Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
'''Modifications paramétriques majeures du modèle'''&lt;br /&gt;
&lt;br /&gt;
Pour identifier les différents paramètres du Robotino, nous utilisons la méthode des sousespaces décrite précédemment. En utilisant cette méthode à partir de mesures nous obtenons les différentes matrices A, B, C et D mais pour avoir une filtre de Kalman performant l'un des changements majeurs fut l'identification des paramètres G, R et Q. Ainsi en trouvant G nous aurons une initialisation beaucoup plus proche de la réalité. Pour trouver la matrice G nous pouvons aussi utiliser la méthode des sous-espaces. Dans ce cas, nous pouvons constater que K équivaut à notre G il est donc faisable de trouver son approximation. De plus pour trouver les paramètres R et Q il a fallu étudier le&lt;br /&gt;
bruit que nous avions entre la sortie réel et la sortie estimée. Ceci nous a amené à en déduire par exemple que Q équivalait à : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:équation4_P24.png|1500px|thumb|center|Figure  : Calcul de Q]]&lt;br /&gt;
&lt;br /&gt;
Pour réaliser des études de bruits, il a donc été nécessaire de faire le calcul de la sortie estimée du filtre de Kalman avec la sortie réelle du Robotino. De plus dans un premier&lt;br /&gt;
temps il a été plus simple de trouver l'équivalence de R en faisant l'hypothèse que le bruit de mesure était le même. &lt;br /&gt;
&lt;br /&gt;
Concernant l'implémentation du filtre sur le modèle complet, le principe était le même que précédemment. Dès le départ le but était de l'implémenter sur la position du lacet. Au départ nous avions une grosse différence entre la sortie estimée et la sortie réelle. De plus comme nous pouvons le remarquer sur la figure 14 ces deux courbes sont confondus. La performance du filtre de Kalman est donc réelle, pour information ce modèle a été identifié et validé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure14_P24.png|1500px|thumb|center|Figure  :  Implémentation du filtre de Kalman sur le lacet, en bleu courbe réelle et en rouge&lt;br /&gt;
courbe du filtrage  ]]&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
'''Changements réalisé sur le système avant la détection de défauts'''&lt;br /&gt;
&lt;br /&gt;
L’objectif est de pouvoir utiliser le filtre de Kalman sur plus de sorties car nous n'avons pour l'instant que l'utilisation du filtre de Kalman sur le lacet. Le Robotino possède trois entrées à savoir les vitesses qu’on donne comme consigne, et nous avons qu'une seule sortie qui est la position du lacet. Cependant l'objectif suivant, a pour but de considérer d’autres sorties comme, les vitesses angulaires des roues, les positions x et y.&lt;br /&gt;
&lt;br /&gt;
* Dans un premier temps, le choix des sorties seraient les vitesses angulaires des roues, ainsi que les différentes positions des roues.&lt;br /&gt;
* Nous pouvons ensuite faire une acquisition assez longue pour pouvoir enregistrer les différents bruits pour chaque sortie.&lt;br /&gt;
 Remarque : Possibilité de rajouter plus d'itérations pour que le filtre soit plus précis.&lt;br /&gt;
* Après cette acquisition il suffira de mettre dans un fichier pour identifier le modèle pour pouvoir le valider par la suite.&lt;br /&gt;
&lt;br /&gt;
En suivant les précédentes manœuvres, nous pourrons utiliser le filtre de Kalman de manière optimale. De plus, pour pouvoir obtenir les différentes vitesses des roues la séparation de la matrice est nécessaire. Après avoir réalisé la séparation de ces matrices pour avoir les vitesses angulaires de chaque roue ainsi que les positions nous incluons le filtrage de Kalman pour ces différentes sorties et nous obtenons cela. Cette méthode fut la&lt;br /&gt;
première utilisée, par la suite, un changement a été réalisé dans la sortie du modèle pour avoir une meilleure estimation.&lt;br /&gt;
&lt;br /&gt;
'''Surveillance et détection de défaut'''&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire de réaliser de la surveillance sur un système, pour détecter les différents défauts d'un système. Nous pouvons définir le mode de fonctionnement à partir des données que nousavons collecté précédemment. Pour réaliser des diagnostics, nous pouvons utiliser des données en ligne et hors ligne.&lt;br /&gt;
&lt;br /&gt;
Un défaut existe une fois que nous avons un écart avec la valeur théorique et la valeur mesurée. Lorsqu'il n'y a pas de défauts l'erreur est quasiment nulle, en effet les défauts peuvent arriver au niveau des actionneurs et au niveau des capteurs.&lt;br /&gt;
&lt;br /&gt;
''' Résidus'''&lt;br /&gt;
&lt;br /&gt;
Pour détecter les défauts, l'utilisation de résidus a été réalisé. Les résidus sont mis en place à l'aide des mesures réalisées et des calculs théoriques. Dans un premier temps, l'établissement de résidus fixes a été effectué. Puis dans un second temps, les résidus ont été implémenté pour évoluer pendant la période demandée. Une fois cela effectué nous pouvons décider s'il y a un dysfonctionnement ou non.&lt;br /&gt;
&lt;br /&gt;
Après cela, une modification d'un élément d'une de ces matrices m'a permis d'inclure un défaut. Ainsi j'ai donc fait plusieurs scénarios pour pouvoir tester des visualisations de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure15_P24.png|1500px|thumb|center|Figure  :   Introduction de défaut pour la vitesse de la première roue]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :   Calcul de l'erreur qui montre un pic dépassant largement les seuils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, après divers tests, j'ai pu décider des différentes valeurs de mes seuillage pour&lt;br /&gt;
pouvoir dire s'il y avait défaut ou non. Comme nous pouvons l'observer, je&lt;br /&gt;
n'ai ajouté qu'un défaut au niveau de la vitesse angulaire de la première roue. Et nous&lt;br /&gt;
voyons bien que ce défaut et bien visible car il dépasse bien notre seuillage&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :    L'erreur est à 0 pour les positions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par contre nous pouvons remarquer qu'au niveau des positions rien n'a changé et cela est&lt;br /&gt;
normal car il n'y a pas de défauts.&lt;br /&gt;
&lt;br /&gt;
Résidus évolutifs :&lt;br /&gt;
&lt;br /&gt;
Concernant les résidus évolutifs, une matrice a été crée pour pouvoir avoir des résidus qui évoluent bien en fonction de la valeur réel. De plus, un calcul a été réalisé pour cela en effet après avoir réalisé le calcul de la sortie réelle et de la sortie estimée. Nous calculons la covariance de cela pour ne récupérer que les écarts types de ces matrices. &lt;br /&gt;
Ensuite la création d'un matrice comportant la racine carrée de ces valeurs est établie. Dans cette exemple j'ai mis une matrice 6x6 mais celle-ci peut différer en fonction des sorties. Lorsque cela a été réalisé, nous mettons cette enveloppe de résidus à plus ou moins trois fois l'écart type.&lt;br /&gt;
&lt;br /&gt;
On ajoute un défaut et pouvons observer directement les écarts :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure17_P24.png|1500px|thumb|center|Figure  :    Position de la roue&lt;br /&gt;
1 mesurée et estimée dépassant&lt;br /&gt;
largement l'enveloppe de&lt;br /&gt;
seuillage]]&lt;br /&gt;
[[Fichier:figure18_P24.png|1500px|thumb|center|Figure  :    Vitesse de la roue 1 mesurée et estimée&lt;br /&gt;
dépassant l'enveloppe de seuillage&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Bete_%C3%A0_cornes_PFE_P24.png&amp;diff=69768</id>
		<title>Fichier:Bete à cornes PFE P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Bete_%C3%A0_cornes_PFE_P24.png&amp;diff=69768"/>
				<updated>2019-02-26T19:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Calendrier_pr%C3%A9visionnel1_PFE_P24.png&amp;diff=69767</id>
		<title>Fichier:Calendrier prévisionnel1 PFE P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Calendrier_pr%C3%A9visionnel1_PFE_P24.png&amp;diff=69767"/>
				<updated>2019-02-26T19:08:07Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69766</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69766"/>
				<updated>2019-02-26T19:07:56Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Préparation du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
[[Fichier:bete_à_cornes_PFE_P24.png|1000px|thumb|center|Figure  : Bête à cornes]]&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:calendrier_prévisionnel1_PFE_P24.png|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
Pour l'utilisation du filtre de Kalman, le système doit être un système linéaire bruité. Nous pouvons écrire sous la forme suivante le système : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation1_P24.png|1000px|thumb|center|Figure  : Forme du système]]&lt;br /&gt;
&lt;br /&gt;
Rappel sur les bruits blancs Gaussiens :&lt;br /&gt;
Un bruit blanc est un processus aléatoire ayant la même densité spectrale de puissance(DSP) à toutes les fréquences de la bande passante. On dit qu'un bruit blanc est Gaussien&lt;br /&gt;
lorsqu'il a une distribution normale et que sa moyenne est nulle. De plus ce bruit est ajouté au système. Pour commencer, nous savons que nous avons besoin de mesures pour le filtre de&lt;br /&gt;
Kalman et étant donné que nous n'en avons pas au début il faut bien initialiser une valeur. Nous recherchons à minimiser la matrice de covariance de l'erreur. &lt;br /&gt;
&lt;br /&gt;
Par la suite les deux étapes nécessaires au fonctionnement de ce filtrage sont la prédiction et la correction.&lt;br /&gt;
&lt;br /&gt;
*Étape de prédiction :&lt;br /&gt;
Lors de l'étape de prédiction, nous avons l'erreur d'estimation qui croit car l'initialisation était obligatoire pour la suite et le bon fonctionnement de l'algorithme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation2_P24.png|1000px|thumb|center|Figure  : Prédiction de Kalman]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Acquisition de mesures et commande==&lt;br /&gt;
&lt;br /&gt;
L'étape qui précède l'identification et la validation du modèle est la collecte de données. Ainsi pour cela l'établissement d'un parcours a été effectué, cette partie fut alors la partie commande. Le parcours a été établi pour durer assez longtemps c'est-à-dire entre 45 min et 1 heure. Ensuite, dans cet enregistrement de données nous avons les différentes données concernant les moteurs par exemple. Au départ le lacet du robot nous intéressé&lt;br /&gt;
particulièrement. Les entrées du système sont les consignes de vitesses angulaires envoyées et la sortie était le lacet du robot mobile. Le Robotino était testé sur la piste de test de robots de Polytech Lille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:piste_robotino_P24.png|1500px|thumb|center|Figure  :  Arène de test du Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
'''Modifications paramétriques majeures du modèle'''&lt;br /&gt;
&lt;br /&gt;
Pour identifier les différents paramètres du Robotino, nous utilisons la méthode des sousespaces décrite précédemment. En utilisant cette méthode à partir de mesures nous obtenons les différentes matrices A, B, C et D mais pour avoir une filtre de Kalman performant l'un des changements majeurs fut l'identification des paramètres G, R et Q. Ainsi en trouvant G nous aurons une initialisation beaucoup plus proche de la réalité. Pour trouver la matrice G nous pouvons aussi utiliser la méthode des sous-espaces. Dans ce cas, nous pouvons constater que K équivaut à notre G il est donc faisable de trouver son approximation. De plus pour trouver les paramètres R et Q il a fallu étudier le&lt;br /&gt;
bruit que nous avions entre la sortie réel et la sortie estimée. Ceci nous a amené à en déduire par exemple que Q équivalait à : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:équation4_P24.png|1500px|thumb|center|Figure  : Calcul de Q]]&lt;br /&gt;
&lt;br /&gt;
Pour réaliser des études de bruits, il a donc été nécessaire de faire le calcul de la sortie estimée du filtre de Kalman avec la sortie réelle du Robotino. De plus dans un premier&lt;br /&gt;
temps il a été plus simple de trouver l'équivalence de R en faisant l'hypothèse que le bruit de mesure était le même. &lt;br /&gt;
&lt;br /&gt;
Concernant l'implémentation du filtre sur le modèle complet, le principe était le même que précédemment. Dès le départ le but était de l'implémenter sur la position du lacet. Au départ nous avions une grosse différence entre la sortie estimée et la sortie réelle. De plus comme nous pouvons le remarquer sur la figure 14 ces deux courbes sont confondus. La performance du filtre de Kalman est donc réelle, pour information ce modèle a été identifié et validé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure14_P24.png|1500px|thumb|center|Figure  :  Implémentation du filtre de Kalman sur le lacet, en bleu courbe réelle et en rouge&lt;br /&gt;
courbe du filtrage  ]]&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
'''Changements réalisé sur le système avant la détection de défauts'''&lt;br /&gt;
&lt;br /&gt;
L’objectif est de pouvoir utiliser le filtre de Kalman sur plus de sorties car nous n'avons pour l'instant que l'utilisation du filtre de Kalman sur le lacet. Le Robotino possède trois entrées à savoir les vitesses qu’on donne comme consigne, et nous avons qu'une seule sortie qui est la position du lacet. Cependant l'objectif suivant, a pour but de considérer d’autres sorties comme, les vitesses angulaires des roues, les positions x et y.&lt;br /&gt;
&lt;br /&gt;
* Dans un premier temps, le choix des sorties seraient les vitesses angulaires des roues, ainsi que les différentes positions des roues.&lt;br /&gt;
* Nous pouvons ensuite faire une acquisition assez longue pour pouvoir enregistrer les différents bruits pour chaque sortie.&lt;br /&gt;
 Remarque : Possibilité de rajouter plus d'itérations pour que le filtre soit plus précis.&lt;br /&gt;
* Après cette acquisition il suffira de mettre dans un fichier pour identifier le modèle pour pouvoir le valider par la suite.&lt;br /&gt;
&lt;br /&gt;
En suivant les précédentes manœuvres, nous pourrons utiliser le filtre de Kalman de manière optimale. De plus, pour pouvoir obtenir les différentes vitesses des roues la séparation de la matrice est nécessaire. Après avoir réalisé la séparation de ces matrices pour avoir les vitesses angulaires de chaque roue ainsi que les positions nous incluons le filtrage de Kalman pour ces différentes sorties et nous obtenons cela. Cette méthode fut la&lt;br /&gt;
première utilisée, par la suite, un changement a été réalisé dans la sortie du modèle pour avoir une meilleure estimation.&lt;br /&gt;
&lt;br /&gt;
'''Surveillance et détection de défaut'''&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire de réaliser de la surveillance sur un système, pour détecter les différents défauts d'un système. Nous pouvons définir le mode de fonctionnement à partir des données que nousavons collecté précédemment. Pour réaliser des diagnostics, nous pouvons utiliser des données en ligne et hors ligne.&lt;br /&gt;
&lt;br /&gt;
Un défaut existe une fois que nous avons un écart avec la valeur théorique et la valeur mesurée. Lorsqu'il n'y a pas de défauts l'erreur est quasiment nulle, en effet les défauts peuvent arriver au niveau des actionneurs et au niveau des capteurs.&lt;br /&gt;
&lt;br /&gt;
''' Résidus'''&lt;br /&gt;
&lt;br /&gt;
Pour détecter les défauts, l'utilisation de résidus a été réalisé. Les résidus sont mis en place à l'aide des mesures réalisées et des calculs théoriques. Dans un premier temps, l'établissement de résidus fixes a été effectué. Puis dans un second temps, les résidus ont été implémenté pour évoluer pendant la période demandée. Une fois cela effectué nous pouvons décider s'il y a un dysfonctionnement ou non.&lt;br /&gt;
&lt;br /&gt;
Après cela, une modification d'un élément d'une de ces matrices m'a permis d'inclure un défaut. Ainsi j'ai donc fait plusieurs scénarios pour pouvoir tester des visualisations de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure15_P24.png|1500px|thumb|center|Figure  :   Introduction de défaut pour la vitesse de la première roue]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :   Calcul de l'erreur qui montre un pic dépassant largement les seuils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, après divers tests, j'ai pu décider des différentes valeurs de mes seuillage pour&lt;br /&gt;
pouvoir dire s'il y avait défaut ou non. Comme nous pouvons l'observer, je&lt;br /&gt;
n'ai ajouté qu'un défaut au niveau de la vitesse angulaire de la première roue. Et nous&lt;br /&gt;
voyons bien que ce défaut et bien visible car il dépasse bien notre seuillage&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :    L'erreur est à 0 pour les positions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par contre nous pouvons remarquer qu'au niveau des positions rien n'a changé et cela est&lt;br /&gt;
normal car il n'y a pas de défauts.&lt;br /&gt;
&lt;br /&gt;
Résidus évolutifs :&lt;br /&gt;
&lt;br /&gt;
Concernant les résidus évolutifs, une matrice a été crée pour pouvoir avoir des résidus qui évoluent bien en fonction de la valeur réel. De plus, un calcul a été réalisé pour cela en effet après avoir réalisé le calcul de la sortie réelle et de la sortie estimée. Nous calculons la covariance de cela pour ne récupérer que les écarts types de ces matrices. &lt;br /&gt;
Ensuite la création d'un matrice comportant la racine carrée de ces valeurs est établie. Dans cette exemple j'ai mis une matrice 6x6 mais celle-ci peut différer en fonction des sorties. Lorsque cela a été réalisé, nous mettons cette enveloppe de résidus à plus ou moins trois fois l'écart type.&lt;br /&gt;
&lt;br /&gt;
On ajoute un défaut et pouvons observer directement les écarts :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure17_P24.png|1500px|thumb|center|Figure  :    Position de la roue&lt;br /&gt;
1 mesurée et estimée dépassant&lt;br /&gt;
largement l'enveloppe de&lt;br /&gt;
seuillage]]&lt;br /&gt;
[[Fichier:figure18_P24.png|1500px|thumb|center|Figure  :    Vitesse de la roue 1 mesurée et estimée&lt;br /&gt;
dépassant l'enveloppe de seuillage&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure18_P24.png&amp;diff=69763</id>
		<title>Fichier:Figure18 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure18_P24.png&amp;diff=69763"/>
				<updated>2019-02-26T19:04:04Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure17_P24.png&amp;diff=69762</id>
		<title>Fichier:Figure17 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure17_P24.png&amp;diff=69762"/>
				<updated>2019-02-26T19:03:49Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure160_P24.png&amp;diff=69761</id>
		<title>Fichier:Figure160 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure160_P24.png&amp;diff=69761"/>
				<updated>2019-02-26T19:02:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure16_P24.png&amp;diff=69760</id>
		<title>Fichier:Figure16 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure16_P24.png&amp;diff=69760"/>
				<updated>2019-02-26T19:01:29Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure15_P24.png&amp;diff=69759</id>
		<title>Fichier:Figure15 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure15_P24.png&amp;diff=69759"/>
				<updated>2019-02-26T19:01:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure14_P24.png&amp;diff=69758</id>
		<title>Fichier:Figure14 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Figure14_P24.png&amp;diff=69758"/>
				<updated>2019-02-26T19:00:43Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:%C3%89quation4_P24.png&amp;diff=69757</id>
		<title>Fichier:Équation4 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:%C3%89quation4_P24.png&amp;diff=69757"/>
				<updated>2019-02-26T18:59:40Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Piste_robotino_P24.png&amp;diff=69756</id>
		<title>Fichier:Piste robotino P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Piste_robotino_P24.png&amp;diff=69756"/>
				<updated>2019-02-26T18:57:53Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation2_P24.png&amp;diff=69755</id>
		<title>Fichier:Equation2 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation2_P24.png&amp;diff=69755"/>
				<updated>2019-02-26T18:57:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation1_P24.png&amp;diff=69754</id>
		<title>Fichier:Equation1 P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Equation1_P24.png&amp;diff=69754"/>
				<updated>2019-02-26T18:56:44Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69752</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69752"/>
				<updated>2019-02-26T18:56:01Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:calendrier_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
Pour l'utilisation du filtre de Kalman, le système doit être un système linéaire bruité. Nous pouvons écrire sous la forme suivante le système : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation1_P24.png|1000px|thumb|center|Figure  : Forme du système]]&lt;br /&gt;
&lt;br /&gt;
Rappel sur les bruits blancs Gaussiens :&lt;br /&gt;
Un bruit blanc est un processus aléatoire ayant la même densité spectrale de puissance(DSP) à toutes les fréquences de la bande passante. On dit qu'un bruit blanc est Gaussien&lt;br /&gt;
lorsqu'il a une distribution normale et que sa moyenne est nulle. De plus ce bruit est ajouté au système. Pour commencer, nous savons que nous avons besoin de mesures pour le filtre de&lt;br /&gt;
Kalman et étant donné que nous n'en avons pas au début il faut bien initialiser une valeur. Nous recherchons à minimiser la matrice de covariance de l'erreur. &lt;br /&gt;
&lt;br /&gt;
Par la suite les deux étapes nécessaires au fonctionnement de ce filtrage sont la prédiction et la correction.&lt;br /&gt;
&lt;br /&gt;
*Étape de prédiction :&lt;br /&gt;
Lors de l'étape de prédiction, nous avons l'erreur d'estimation qui croit car l'initialisation était obligatoire pour la suite et le bon fonctionnement de l'algorithme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation2_P24.png|1000px|thumb|center|Figure  : Prédiction de Kalman]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Acquisition de mesures et commande==&lt;br /&gt;
&lt;br /&gt;
L'étape qui précède l'identification et la validation du modèle est la collecte de données. Ainsi pour cela l'établissement d'un parcours a été effectué, cette partie fut alors la partie commande. Le parcours a été établi pour durer assez longtemps c'est-à-dire entre 45 min et 1 heure. Ensuite, dans cet enregistrement de données nous avons les différentes données concernant les moteurs par exemple. Au départ le lacet du robot nous intéressé&lt;br /&gt;
particulièrement. Les entrées du système sont les consignes de vitesses angulaires envoyées et la sortie était le lacet du robot mobile. Le Robotino était testé sur la piste de test de robots de Polytech Lille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:piste_robotino_P24.png|1500px|thumb|center|Figure  :  Arène de test du Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
'''Modifications paramétriques majeures du modèle'''&lt;br /&gt;
&lt;br /&gt;
Pour identifier les différents paramètres du Robotino, nous utilisons la méthode des sousespaces décrite précédemment. En utilisant cette méthode à partir de mesures nous obtenons les différentes matrices A, B, C et D mais pour avoir une filtre de Kalman performant l'un des changements majeurs fut l'identification des paramètres G, R et Q. Ainsi en trouvant G nous aurons une initialisation beaucoup plus proche de la réalité. Pour trouver la matrice G nous pouvons aussi utiliser la méthode des sous-espaces. Dans ce cas, nous pouvons constater que K équivaut à notre G il est donc faisable de trouver son approximation. De plus pour trouver les paramètres R et Q il a fallu étudier le&lt;br /&gt;
bruit que nous avions entre la sortie réel et la sortie estimée. Ceci nous a amené à en déduire par exemple que Q équivalait à : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:équation4_P24.png|1500px|thumb|center|Figure  : Calcul de Q]]&lt;br /&gt;
&lt;br /&gt;
Pour réaliser des études de bruits, il a donc été nécessaire de faire le calcul de la sortie estimée du filtre de Kalman avec la sortie réelle du Robotino. De plus dans un premier&lt;br /&gt;
temps il a été plus simple de trouver l'équivalence de R en faisant l'hypothèse que le bruit de mesure était le même. &lt;br /&gt;
&lt;br /&gt;
Concernant l'implémentation du filtre sur le modèle complet, le principe était le même que précédemment. Dès le départ le but était de l'implémenter sur la position du lacet. Au départ nous avions une grosse différence entre la sortie estimée et la sortie réelle. De plus comme nous pouvons le remarquer sur la figure 14 ces deux courbes sont confondus. La performance du filtre de Kalman est donc réelle, pour information ce modèle a été identifié et validé.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure14_P24.png|1500px|thumb|center|Figure  :  Implémentation du filtre de Kalman sur le lacet, en bleu courbe réelle et en rouge&lt;br /&gt;
courbe du filtrage  ]]&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
'''Changements réalisé sur le système avant la détection de défauts'''&lt;br /&gt;
&lt;br /&gt;
L’objectif est de pouvoir utiliser le filtre de Kalman sur plus de sorties car nous n'avons pour l'instant que l'utilisation du filtre de Kalman sur le lacet. Le Robotino possède trois entrées à savoir les vitesses qu’on donne comme consigne, et nous avons qu'une seule sortie qui est la position du lacet. Cependant l'objectif suivant, a pour but de considérer d’autres sorties comme, les vitesses angulaires des roues, les positions x et y.&lt;br /&gt;
&lt;br /&gt;
* Dans un premier temps, le choix des sorties seraient les vitesses angulaires des roues, ainsi que les différentes positions des roues.&lt;br /&gt;
* Nous pouvons ensuite faire une acquisition assez longue pour pouvoir enregistrer les différents bruits pour chaque sortie.&lt;br /&gt;
 Remarque : Possibilité de rajouter plus d'itérations pour que le filtre soit plus précis.&lt;br /&gt;
* Après cette acquisition il suffira de mettre dans un fichier pour identifier le modèle pour pouvoir le valider par la suite.&lt;br /&gt;
&lt;br /&gt;
En suivant les précédentes manœuvres, nous pourrons utiliser le filtre de Kalman de manière optimale. De plus, pour pouvoir obtenir les différentes vitesses des roues la séparation de la matrice est nécessaire. Après avoir réalisé la séparation de ces matrices pour avoir les vitesses angulaires de chaque roue ainsi que les positions nous incluons le filtrage de Kalman pour ces différentes sorties et nous obtenons cela. Cette méthode fut la&lt;br /&gt;
première utilisée, par la suite, un changement a été réalisé dans la sortie du modèle pour avoir une meilleure estimation.&lt;br /&gt;
&lt;br /&gt;
'''Surveillance et détection de défaut'''&lt;br /&gt;
&lt;br /&gt;
Il est nécessaire de réaliser de la surveillance sur un système, pour détecter les différents défauts d'un système. Nous pouvons définir le mode de fonctionnement à partir des données que nousavons collecté précédemment. Pour réaliser des diagnostics, nous pouvons utiliser des données en ligne et hors ligne.&lt;br /&gt;
&lt;br /&gt;
Un défaut existe une fois que nous avons un écart avec la valeur théorique et la valeur mesurée. Lorsqu'il n'y a pas de défauts l'erreur est quasiment nulle, en effet les défauts peuvent arriver au niveau des actionneurs et au niveau des capteurs.&lt;br /&gt;
&lt;br /&gt;
''' Résidus'''&lt;br /&gt;
&lt;br /&gt;
Pour détecter les défauts, l'utilisation de résidus a été réalisé. Les résidus sont mis en place à l'aide des mesures réalisées et des calculs théoriques. Dans un premier temps, l'établissement de résidus fixes a été effectué. Puis dans un second temps, les résidus ont été implémenté pour évoluer pendant la période demandée. Une fois cela effectué nous pouvons décider s'il y a un dysfonctionnement ou non.&lt;br /&gt;
&lt;br /&gt;
Après cela, une modification d'un élément d'une de ces matrices m'a permis d'inclure un défaut. Ainsi j'ai donc fait plusieurs scénarios pour pouvoir tester des visualisations de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure15_P24.png|1500px|thumb|center|Figure  :   Introduction de défaut pour la vitesse de la première roue]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :   Calcul de l'erreur qui montre un pic dépassant largement les seuils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, après divers tests, j'ai pu décider des différentes valeurs de mes seuillage pour&lt;br /&gt;
pouvoir dire s'il y avait défaut ou non. Comme nous pouvons l'observer, je&lt;br /&gt;
n'ai ajouté qu'un défaut au niveau de la vitesse angulaire de la première roue. Et nous&lt;br /&gt;
voyons bien que ce défaut et bien visible car il dépasse bien notre seuillage&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure16_P24.png|1500px|thumb|center|Figure  :    L'erreur est à 0 pour les positions]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par contre nous pouvons remarquer qu'au niveau des positions rien n'a changé et cela est&lt;br /&gt;
normal car il n'y a pas de défauts.&lt;br /&gt;
&lt;br /&gt;
Résidus évolutifs :&lt;br /&gt;
&lt;br /&gt;
Concernant les résidus évolutifs, une matrice a été crée pour pouvoir avoir des résidus qui évoluent bien en fonction de la valeur réel. De plus, un calcul a été réalisé pour cela en effet après avoir réalisé le calcul de la sortie réelle et de la sortie estimée. Nous calculons la covariance de cela pour ne récupérer que les écarts types de ces matrices. &lt;br /&gt;
Ensuite la création d'un matrice comportant la racine carrée de ces valeurs est établie. Dans cette exemple j'ai mis une matrice 6x6 mais celle-ci peut différer en fonction des sorties. Lorsque cela a été réalisé, nous mettons cette enveloppe de résidus à plus ou moins trois fois l'écart type.&lt;br /&gt;
&lt;br /&gt;
On ajoute un défaut et pouvons observer directement les écarts :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:figure17_P24.png|1500px|thumb|center|Figure  :    Position de la roue&lt;br /&gt;
1 mesurée et estimée dépassant&lt;br /&gt;
largement l'enveloppe de&lt;br /&gt;
seuillage]]&lt;br /&gt;
[[Fichier:figure18_P24.png|1500px|thumb|center|Figure  :    Vitesse de la roue 1 mesurée et estimée&lt;br /&gt;
dépassant l'enveloppe de seuillage&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69748</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69748"/>
				<updated>2019-02-26T18:37:37Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:calendrier_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
Pour l'utilisation du filtre de Kalman, le système doit être un système linéaire bruité. Nous pouvons écrire sous la forme suivante le système : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation1_P24.png|1000px|thumb|center|Figure  : Forme du système]]&lt;br /&gt;
&lt;br /&gt;
Rappel sur les bruits blancs Gaussiens :&lt;br /&gt;
Un bruit blanc est un processus aléatoire ayant la même densité spectrale de puissance(DSP) à toutes les fréquences de la bande passante. On dit qu'un bruit blanc est Gaussien&lt;br /&gt;
lorsqu'il a une distribution normale et que sa moyenne est nulle. De plus ce bruit est ajouté au système. Pour commencer, nous savons que nous avons besoin de mesures pour le filtre de&lt;br /&gt;
Kalman et étant donné que nous n'en avons pas au début il faut bien initialiser une valeur. Nous recherchons à minimiser la matrice de covariance de l'erreur. &lt;br /&gt;
&lt;br /&gt;
Par la suite les deux étapes nécessaires au fonctionnement de ce filtrage sont la prédiction et la correction.&lt;br /&gt;
&lt;br /&gt;
*Étape de prédiction :&lt;br /&gt;
Lors de l'étape de prédiction, nous avons l'erreur d'estimation qui croit car l'initialisation était obligatoire pour la suite et le bon fonctionnement de l'algorithme.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equation2_P24.png|1000px|thumb|center|Figure  : Prédiction de Kalman]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Acquisition de mesures et commande==&lt;br /&gt;
&lt;br /&gt;
L'étape qui précède l'identification et la validation du modèle est la collecte de données. Ainsi pour cela l'établissement d'un parcours a été effectué, cette partie fut alors la partie commande. Le parcours a été établi pour durer assez longtemps c'est-à-dire entre 45 min et 1 heure. Ensuite, dans cet enregistrement de données nous avons les différentes données concernant les moteurs par exemple. Au départ le lacet du robot nous intéressé&lt;br /&gt;
particulièrement. Les entrées du système sont les consignes de vitesses angulaires envoyées et la sortie était le lacet du robot mobile. Le Robotino était testé sur la piste de test de robots de Polytech Lille.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:piste_robotino_P24.png|1500px|thumb|center|Figure  :  Arène de test du Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_Projet_P24_Belhouachi.pdf&amp;diff=69746</id>
		<title>Fichier:Rapport Projet P24 Belhouachi.pdf</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_Projet_P24_Belhouachi.pdf&amp;diff=69746"/>
				<updated>2019-02-26T18:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : Sbelhoua a téléversé une nouvelle version de Fichier:Rapport Projet P24 Belhouachi.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_Projet_P24_Belhouachi.pdf&amp;diff=69734</id>
		<title>Fichier:Rapport Projet P24 Belhouachi.pdf</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Rapport_Projet_P24_Belhouachi.pdf&amp;diff=69734"/>
				<updated>2019-02-26T17:53:26Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Projets_IMA5_2018/2019&amp;diff=69732</id>
		<title>Projets IMA5 2018/2019</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Projets_IMA5_2018/2019&amp;diff=69732"/>
				<updated>2019-02-26T17:51:30Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en demandant une modification du format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
Toutes les sources doivent être déposées sur notre archive GIT. Le service est disponible à l'URL [https://archives.plil.fr archives.plil.fr]. Connectez-vous avec vos identifiants Polytech'Lille. Sauf indication contraire de vos encadrants, rendez le projet public et mettez le lien sur votre Wiki. Vous pouvez trouver de la documentation sur ce système d'archives sur ce [https://git-scm.com/book/fr/v1 site].&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Encadrants école !! Rapport intermédiaire !! Rapport final !! Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P0 [[IMA5 2018/2019 P0|Modèle]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P04 [[IMA5 2018/2019 P04|Conception mécatronique d'un gant haptique pour la réalité virtuelle]]&lt;br /&gt;
| Thomas Hubert&lt;br /&gt;
| Frédéric Giraud / Betty Semail&lt;br /&gt;
|[[Fichier:RapportIntermédiaire 2018P04.pdf]]&lt;br /&gt;
|[[Fichier:RapportFinal P04 ThomasHubert.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P05 [[IMA5 2018/2019 P05|Simulation on the Web]]&lt;br /&gt;
| Rodolphe Toin&lt;br /&gt;
| Jérémie Dequidt&lt;br /&gt;
|[[Fichier:Rapport_intermediaire_P05.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P06 [[IMA5 2018/2019 P06|Développement d'un système de gestion d'un réseau de capteurs]]&lt;br /&gt;
| Simon Feutrier / Antoine Duquenoy&lt;br /&gt;
| Thomas Vantroys / Alexandre Boé&lt;br /&gt;
|[[Fichier:PFE_06_Rapport_Intermediaire.pdf]]&lt;br /&gt;
|[[Fichier:PFE06_Final.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[ IMA5 2018/2019 P10|Traces d’exécution de système temps réel]]&lt;br /&gt;
| Amine El Messaoudi&lt;br /&gt;
| Julien Forget&lt;br /&gt;
|[[Fichier:rapport1_P10.pdf]]&lt;br /&gt;
|[[Fichier:rapport_P10.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P13 [[ IMA5 2018/2019 P13|Réseau de capteurs pour parking intelligent]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys&lt;br /&gt;
|[[Fichier:RapportIntermédiaire.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA5 2018/2019 P16|Le Sportif Augmenté]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| Alexandre Boé / Xavier Redon / Thomas Vantroys &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA5 2018/2019 P17|Système multisources de production d'hydrogène]]&lt;br /&gt;
| François-Xavier Cockenpot&lt;br /&gt;
| Anne-Lise Gehin &lt;br /&gt;
|&lt;br /&gt;
|[[fichier:Rapport_PFE17_Cockenpot.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P21 [[IMA5 2018/2019 P21|Pilotage automatique d'un drone]]&lt;br /&gt;
| Claire Vandamme / Justine Senellart&lt;br /&gt;
| Aziz Nakrachi / Claudine Lecocq&lt;br /&gt;
|[[Fichier:Rapport de projet intermediaire P21 Pilotage automatique de drone.pdf]]&lt;br /&gt;
|[[Media : Rapport_de_Projet_P21_Pilotage_automatique_de_drone.pdf | Rapport Final ]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA5 2018/2019 P22|Commande en position d'un drone]]&lt;br /&gt;
| Lijie YAO / Lirui ZHANG&lt;br /&gt;
| Komi Midzodzi PEKPE&lt;br /&gt;
|[[Fichier:Rapport_Intermédiaire_P22.pdf]]&lt;br /&gt;
|[[Fichier:Rapport_Final_P22.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P26 [[IMA5 2018/2019 P26|Interaction 2D en réalité virtuelle]]&lt;br /&gt;
| Ji YANG&lt;br /&gt;
| Laurent Grisoni&lt;br /&gt;
| [[Fichier:Ji_YANG_PRE_Intermediaire.pdf]]&lt;br /&gt;
|[[Fichier:Rapport_final_26.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA5 2018/2019 P28|Clonage d'une calculatrice open-source NumWorks]]&lt;br /&gt;
| Alexis Dorian&lt;br /&gt;
| Xavier Redon / Alexandre Boé / Thomas Vantroys&lt;br /&gt;
| &lt;br /&gt;
| [[Fichier:Rapport PFE 28 Alexis DORIAN.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA5 2018/2019 P30|Contrôle à distance d'un robot de grande taille]]&lt;br /&gt;
| Delaporte Maëva / Blas Simon&lt;br /&gt;
| Xavier Redon / Thomas Vantroys / Alexandre Boé&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P31 [[IMA5 2018/2019 P31|Supervision des serveurs de la plateforme informatique]]&lt;br /&gt;
| Taky Djeraba&lt;br /&gt;
| Xavier Redon / Thomas Vantroys&lt;br /&gt;
| [[Fichier:Rapport interm diaire PFE.pdf]]&lt;br /&gt;
| [[Fichier:Taky_Djeraba_Rapport_final_PFE.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P36 [[IMA5 2018/2019 P36|Pilotage automatique d'un drone]]&lt;br /&gt;
| Abass Ayoub / Alexis Viscogliosi&lt;br /&gt;
| Aziz Nakrachi / Claudine Lecocq&lt;br /&gt;
|[[Fichier:rapport_P36_Viscogliosi_Ayoub.pdf]]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA5 2018/2019 P42 |Traçage d'empreintes de navigateur en utilisant des techniques avancées d'apprentissage automatique]]&lt;br /&gt;
| Mehanna Naif&lt;br /&gt;
| Walter Rudametkin / Romain Rouvoy&lt;br /&gt;
| [[Media:Rapport intermediaire de PFE.pdf|Rapport de mi-projet]]&lt;br /&gt;
| [[Media:Rapport final naif mehanna.pdf| Rapport final de projet P42]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P43 [[IMA5 2018/2019 P43 |Réalisation d'un synthétiseur]]&lt;br /&gt;
| Untereiner Antoine&lt;br /&gt;
| Alexandre Boé&lt;br /&gt;
| Rapport intermédiaire de PFE : [[Media:Rapport_AU.pdf|Rapport de mi-projet]]&lt;br /&gt;
| Rapport final de PFE : [[Media:Antoine Untereiner - Rapport Final.pdf|Rapport final]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA5 2018/2019 P19 |Détection de menaces IOT sur FPGA]]&lt;br /&gt;
| MACHEREZ Alexis&lt;br /&gt;
| Alexandre Boé / Thomas Vantroys&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P24 [[IMA5 2018/2019 P24 |Filtrage de Kalman pour la détection de défaut sur un robot mobile]]&lt;br /&gt;
| Samy Belhouachi&lt;br /&gt;
| Komi Midzodzi PEKPE&lt;br /&gt;
|&lt;br /&gt;
|[[Fichier:Rapport_Projet_P24_Belhouachi.pdf]]&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA5 2018/2019 P44 |Iron Car]]&lt;br /&gt;
| DUFRESNE Erwan / ZALCZER Eloi&lt;br /&gt;
| Thomas Vantroys / Xavier Redon / Alexandre Boé &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA5 2018/2019 P18 | Emetteur / Récepteur analogique en bande FM ]]&lt;br /&gt;
| WATINE Jean-Baptiste&lt;br /&gt;
| Alexandre Boé &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Matériel à acquérir ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Matériel&lt;br /&gt;
|-&lt;br /&gt;
| P28 [[IMA5 2018/2019 P28|Clonage d'une calculatrice open-source NumWorks]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/Adesto-Technologies/AT25SF641-SUB-T?qs=H7WEQPD31y1rOaelqGYUaQ== AT25SF641  ](Ram)&lt;br /&gt;
&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/STMicroelectronics/STM32F412VGT6?qs=qzCNEk%252bRr%252baGf9Ry5zWpvw%3D%3D&amp;amp;gclid=EAIaIQobChMI8OWLjsq63QIVxIjVCh0HCADGEAAYASAAEgKz5_D_BwE STM32F412VGT6  ] (microcontroleur)&lt;br /&gt;
&lt;br /&gt;
[https://www.alibaba.com/product-detail/2-4-portait-LCD-module-ET024QV01_60727925701.html?spm=a2700.details.pronpeci14.2.5d9f12f4aeUQCE ET024QV01-K] (ecran)&lt;br /&gt;
&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/Newhaven-Display/NHD-24-240320CF-CTXI-F?qs=sGAEpiMZZMu%2fRY1bNe3bOwi7Ku0KTtuWVqK2peAZKeQH3KKyXLxcNw== NHD-2.4-240320CF] (autre ecran)&lt;br /&gt;
&lt;br /&gt;
[https://fr.farnell.com/hirose-hrs/fh12s-40s-0-5sh-55/fiche-femelle-ffc-fpc-0-5mm-zif/dp/1324588?MER=sy-me-pd-mi-alte connecteur nappe]&lt;br /&gt;
&lt;br /&gt;
[https://fr.farnell.com/richtek/rt9365gqw/driver-de-led-boost-250khz-wqfn/dp/2729821 RT9365GQW ](control retro éclairage)&lt;br /&gt;
&lt;br /&gt;
[https://fr.farnell.com/richtek/rt9078-28gj5/regul-ldo-fixe-2-8v-0-3a-tsot/dp/2729807?krypto=MSyMhsZJSwpJzbmMaWZGoRn20imQ%2Bn8JeH7D4MHTZf%2B2dB6VsTHGLrm%2FOLrSWQ7xeojNK5JXTGImaV58n0tJ9A%3D%3D&amp;amp;ddkey=https%3Afr-FR%2FElement14_France%2Fsearch RT9078-28GJ5 ](régulateur de tension)&lt;br /&gt;
&lt;br /&gt;
[https://fr.farnell.com/richtek/rt9526age/chargeur-bat-li-ion-0-5a-wdfn/dp/2433119?krypto=HIqdjNHqabMYeF39WOpX9xKeZ2JYmYKNIiZzSQh83hC6pdrzMzXqu1zU68gCpKyvU1HQLlLe%2FHV60YNgVaXvsg%3D%3D&amp;amp;ddkey=https%3Afr-FR%2FElement14_France%2Fsearch RT9526AGE ](chargeur lipo)&lt;br /&gt;
&lt;br /&gt;
[https://fr.farnell.com/stmicroelectronics/usblc6-2sc6/esd-protection-smd-sot-23-6/dp/1269406?st=USBLC6-2SC6 USBLC6-2SC6 ] (protection USB)&lt;br /&gt;
&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/Lite-On/LTST-S310F2KT?qs=xb8aMrBSZRKYryAdlDhh3g== TST-S310F2KT] (led multi couleur)&lt;br /&gt;
&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/ECS/ECS-2520MV-250-BN-TR?qs=sGAEpiMZZMtldj7qu1ydrQG1afnrXLdGjWqvhZ7yquORJy%252b1U87asg%3d%3d Oscillateurs]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA5 2018/2019 P16|Le Sportif Augmenté]]&lt;br /&gt;
|&lt;br /&gt;
*2 [https://www.digikey.com/product-detail/en/garmin-canada-inc/ANTAP281M5IB/1094-1004-ND/2748494 Module RF Ant+]&lt;br /&gt;
[https://www.digikey.com/product-detail/en/stmicroelectronics/STM32L031K6T7/497-16269-ND/5805501 MCU (Cortex M0) STM32-L0 (32-LQFP)]&lt;br /&gt;
&lt;br /&gt;
[https://www.digikey.com/product-detail/en/stmicroelectronics/STM32L152CBT6/497-11197-ND/2640843 MCU (Cortex M3) STM32-L1 (64-LQFP)]&lt;br /&gt;
*4 [https://www.digikey.com/product-detail/en/yageo/CC0603CRNPO9BN4R3/311-3858-6-ND/8025870  Capacités 4,3 pF] (pour l'oscillateur 32k768 Hz)&lt;br /&gt;
*2 [https://www.digikey.com/product-detail/en/epson/FC-135-32.7680KA-A0/SER4077CT-ND/5604233 Oscillateur 32k768 Hz]&lt;br /&gt;
&lt;br /&gt;
*4 [https://www.digikey.com/product-detail/en/kemet/C0603C180K5GACTU/399-7866-1-ND/3471589 Capacités 18 pF] (pour l'oscillateur 16 MHz)&lt;br /&gt;
*2 [https://www.digikey.com/product-detail/en/abracon-llc/ABLS-16.000MHZ-B4-T/535-10226-1-ND/2184261 Oscillateur 16MHz]&lt;br /&gt;
&lt;br /&gt;
[https://www.digikey.com/product-detail/en/sparkfun-electronics/SEN-13944/1568-1424-ND/6193601 Capteur 9-DOF]&lt;br /&gt;
&lt;br /&gt;
[https://www.digikey.com/product-detail/en/stmicroelectronics/NUCLEO-L031K6/497-16283-ND/5806780 Carte NUCLEO-L031]&lt;br /&gt;
[https://www.digikey.com/product-detail/en/stmicroelectronics/NUCLEO-L152RE/497-14363-ND/4695528 Carte NUCLEO-L152]&lt;br /&gt;
&lt;br /&gt;
*6 [https://www.digikey.com/product-detail/en/rohm-semiconductor/SML-D12U1WT86/SML-D12U1WT86CT-ND/5843858 LED RED CMS]&lt;br /&gt;
*6 [https://www.digikey.com/product-detail/en/rohm-semiconductor/ESR03EZPJ131/RHM130DCT-ND/1762927 Resistances 130Ω (Pour LED)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*15 [https://www.digikey.com/product-detail/en/samsung-electro-mechanics/CL10F104ZA8NNNC/1276-1011-1-ND/3889097 Capacités 100nF] (découplage/stabilité)&lt;br /&gt;
*6 [https://www.digikey.com/product-detail/en/rohm-semiconductor/ESR03EZPF1002/RHM10KADCT-ND/1983753 Resistances 10kΩ]&lt;br /&gt;
Les composants passifs permettant la mise en place de l'environnement des STM32 (resistances/capa) est deja en la possession de M. Redon (en 0603)&lt;br /&gt;
[https://www.mouser.fr/ProductDetail/Adesto-Technologies/AT25SF641-SUB-T?qs=H7WEQPD31y1rOaelqGYUaQ== AT25SF641  ](Ram)&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA5 2018/2019 P18|Emetteur récepteur bande FM]]&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
*2  [https://www.mouser.fr/ProductDetail/NXP-Semiconductors/SA612AD-01118?qs=sGAEpiMZZMv2G7q7wICjtfIJxBnl77S2%252b%252bZqLbCgGU0%3d mélangeurs]&lt;br /&gt;
*2  [https://www.mouser.fr/ProductDetail/NXP-Semiconductors/SA614AD-01118?qs=sGAEpiMZZMvKM5ialpXrmuXCYQ%252bnE0i4 système FM fi] (limiteur-détecteur de quadrature)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Molex/73366-0062?qs=sGAEpiMZZMuLQf%252bEuFsOrrXdJIKRuO8bR4ObDwYPMwJagDUqGGFvkA%3d%3d connecteur coaxial femelle]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/ON-Semiconductor-Fairchild/BZX79C6V2?qs=sGAEpiMZZMvAvBNgSS9Lqlg9n3rYFLVD diodes zener] &lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Texas-Instruments/LM317LIPK?qs=sGAEpiMZZMuTgk%252bQPI7Id6xN2vdLoIf2 régulateur de tension ] (alim 6V et 9V)&lt;br /&gt;
*4 [https://www.mouser.fr/ProductDetail/NXP-Semiconductors/BB202115?qs=me8TqzrmIYXTPBMElCe%252b3A%3D%3D diodes varicap BB202]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/NXP-Semiconductors/BBY40215?qs=sGAEpiMZZMvKM5ialpXrmmojF8tXHUxP diodes varicap BBY40]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Central-Semiconductor/2N2219?qs=sGAEpiMZZMshyDBzk1%2fWiw99kSkYzPxmDv7Gy92BLz8%3d transistors 2N2219]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Infineon-Technologies/BFR-92P-E6327?qs=sGAEpiMZZMvDjfggS9kWsTVpFmAS0FC53nH33%2fxtfLg%3d transistors BFR92 ]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/ON-Semiconductor-Fairchild/BC547B?qs=sGAEpiMZZMvAvBNgSS9LqhyF%2fsTQxMNe transistors BC547 ]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Texas-Instruments/TL081CP?qs=sGAEpiMZZMtCHixnSjNA6P3Ssczg4flJ1xPmD0j6Cko%3d ampli op TL081]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/Murata-Electronics/SFECV10M7FA00-R0?qs=sGAEpiMZZMtMMXztyU6kdIFTJJQM3M6Q8oelu8IKNP4%3d filtres céramiques 10.7 MHz ]&lt;br /&gt;
&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Murata-Electronics/LQH32NH181J23L?qs=sGAEpiMZZMsg%252by3WlYCkU3ZhzMeKyJmpRKAif0Lp6Ck%3d inductance 180 µH] (quadrature tank)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Murata-Electronics/TZB4P400AA10R00?qs=sGAEpiMZZMukHu%252bjC5l7YV3%252btnLLlDRG39nrOadOFPc%3d condensateur ajustable ] (quadrature tank)&lt;br /&gt;
&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Murata-Electronics/TZC3P200A110R00?qs=sGAEpiMZZMukHu%252bjC5l7YZvVElVk%252bNfj93Is%2fuvc9Wg%3d condensateurs ajustables 5/20 pF] (filtre entrée + oscillateur réception)&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Murata-Electronics/TZB4P300AA10B00?qs=sGAEpiMZZMukHu%252bjC5l7YTPfG1JP5wIeK%252bWvR6IL42U%3d condo ajustable 6.5 30 pF] ( oscillateur émission )&lt;br /&gt;
&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Texas-Instruments/LM386MX-1-NOPB?qs=sGAEpiMZZMvu8NZDyZ4K0W0q7hpC7Bhp amplificateur audio ]&lt;br /&gt;
*4 [https://www.mouser.fr/ProductDetail/Ohmite/OM1045E-R58?qs=sGAEpiMZZMtlubZbdhIBIJMLE6vvLglcKmQsvX788Ns%3d résistances 100k] (Commande d'accord)&lt;br /&gt;
&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/TDK/VLS6045EX-470M-H?qs=sGAEpiMZZMsg%252by3WlYCkUwWVs%252bZAfRN3PTEA%2fTmKAE8%3d self 47µH] (alim émetteur)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/ABRACON/AIML-0603-1R0K-T?qs=sGAEpiMZZMsg%252by3WlYCkUwX6XY3JXxzLWnI%2fwB2g2jA%3d self 1 µH] (oscillateur Clapp réception)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Sumida/RCH895NP-5R5M?qs=sGAEpiMZZMsg%252by3WlYCkUybotbHgb6KFVPPswvntSaM%3d self 5.5 µH] (alim SA612)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/TDK/MLG1005SR15JTD25?qs=sGAEpiMZZMsg%252by3WlYCkU3b8Zei%252b1OAifaUcqd304aU%3d inductance 150 nH] (filtre entrée récepteur)&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/Yageo/CFR-25JR-52-47K?qs=sGAEpiMZZMtlubZbdhIBIFoOGUvNp40aRsKgdTuFP2M%3d 47 kohm] &lt;br /&gt;
*5 [https://www.mouser.fr/ProductDetail/Yageo/CFR-12JB-52-6K8?qs=sGAEpiMZZMtlubZbdhIBINt%2ft6Hry3%2fBikJxMgrSCuc%3d 6.8kohm]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/Yageo/CFR-25JR-52-4K7?qs=sGAEpiMZZMtlubZbdhIBICXBKsnvdtuNQUT1efiei5o%3d 4.7kohm]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Ohmite/OM3315E-R58?qs=sGAEpiMZZMtlubZbdhIBIJMLE6vvLglc%252bDEGbeBtvHM%3d 330 ohm]&lt;br /&gt;
*4 [https://www.mouser.fr/ProductDetail/Yageo/CFR-25JR-52-10K?qs=sGAEpiMZZMtlubZbdhIBIFoOGUvNp40acurReI2X22I%3d 10kohm]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/Yageo/CFR-12JB-52-3K3?qs=sGAEpiMZZMtlubZbdhIBINt%2ft6Hry3%2fBD0BUzHysOuw%3d 3.3 kohm]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Yageo/CFR-25JT-52-1K?qs=sGAEpiMZZMtlubZbdhIBIFoOGUvNp40ae7jvtA1AnXI%3d 1kohm]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Vishay-Beyschlag/MBB02070C4707JRP00?qs=sGAEpiMZZMtlubZbdhIBIP7908E9uONJCHSyGAzV3aU%3d 470 µOhm]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Yageo/CFR-50JB-52-51R?qs=sGAEpiMZZMtlubZbdhIBINt%2ft6Hry3%2fBC5eCORtsLAg%3d 51 ohm ]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Fastron/0603AS-R25G-01?qs=sGAEpiMZZMsg%252by3WlYCkU8BLlVcluYKELzEDw6f1yWg%3d inductance 250 nH] (filtre entrée, récepteur)&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/BI-Technologies-TT-Electronics/P160KNPD-4FC20B10K?qs=sGAEpiMZZMtC25l1F4XBUzVC3q8S9Qb8aPhpXWOj9iI%3d potentiomètres 10k] (excursion émetteur + volume ampli)&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Vishay-BC-Components/A180J15C0GH5TAA?qs=sGAEpiMZZMt3KoXD5rJ2NzBWF85J6ZF%252b%252bo81cncSPEw%3d 18 pF]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/AVX/SA102A6R8DAA?qs=sGAEpiMZZMt3KoXD5rJ2N5lIJeR4ZUrtmTB7BoqORwY%3d 6.8 pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/KEMET/C410C109C5G5TA7200?qs=sGAEpiMZZMt3KoXD5rJ2NwtB0uHhSEq9vtyDsa3K98U%3d 1pF]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/AVX/SA102A220JARN?qs=sGAEpiMZZMt3KoXD5rJ2N1kQx%252bJ8sD3bbV6dYyIiT%252b0%3d 22pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA102A270KAA?qs=sGAEpiMZZMt3KoXD5rJ2N1kQx%252bJ8sD3b6VD4VJwASUQ%3d 27pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA101C102KAN?qs=sGAEpiMZZMsh%252b1woXyUXj%2f3B4I5okv6zSvA2Ym6ziCg%3d 1nF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA102A300JAA?qs=sGAEpiMZZMt3KoXD5rJ2NzvLbS0KFQ%2f%252b5kaPDDiWAgo%3d 30pF]&lt;br /&gt;
*15 [https://www.mouser.fr/ProductDetail/AVX/SA105E104MAA?qs=sGAEpiMZZMsh%252b1woXyUXj3Nak6oU7yKrYCK71BDgMlE%3d 100 nF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Vishay-BC-Components/A470J15C0GL5UAA?qs=sGAEpiMZZMsh%252b1woXyUXj8ONvsi0bWiaolBsRkHTcAM%3d 47 pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA102C221MAR?qs=sGAEpiMZZMsh%252b1woXyUXjyfE4iDuOGSr53rCY4KakHw%3d 220 pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA051A151KAA?qs=sGAEpiMZZMsh%252b1woXyUXj%2f3B4I5okv6zpkzVpPbcLiQ%3d 150 pF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA105E103MAA?qs=sGAEpiMZZMsh%252b1woXyUXj8uGuC5qkdnX1V0gW0DNeJo%3d 10 nF]&lt;br /&gt;
*3 [https://www.mouser.fr/ProductDetail/Illinois-Capacitor-CDE/106TTA035MSD?qs=sGAEpiMZZMsh%252b1woXyUXj2YUqcaON%252bY2ycv%252b%252bYI%252bzfg%3d 10µF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Yageo/CFR-25JT-52-220K?qs=sGAEpiMZZMtlubZbdhIBIFoOGUvNp40aCABL0zhC45g%3d 220 kohms]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/TDK/FG28C0G1H121JNT06?qs=sGAEpiMZZMsh%252b1woXyUXj6h8Z0XTvQqoywqalzoCCnY%3d 120 pF]&lt;br /&gt;
&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA105C153KAC?qs=sGAEpiMZZMsh%252b1woXyUXjwY3RqoIrAVYKs8FxuMq1eg%3d 15 nF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/AVX/SA101A181KAC?qs=sGAEpiMZZMsh%252b1woXyUXj8OXp%252bRMDh2M0Hbc8eTr6IY%3d 180 pF]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Ohmite/ON9135E-R58?qs=sGAEpiMZZMtlubZbdhIBIDvWcNDqMrFVaJIsPx%252bAPc8%3d 91kohm]&lt;br /&gt;
*2 [https://www.mouser.fr/ProductDetail/Illinois-Capacitor-CDE/107TTA010M?qs=sGAEpiMZZMsh%252b1woXyUXj6tSaZI%252bOgx%2fNzJnlNxDV9c%3d 100 µF]&lt;br /&gt;
*1 [https://www.mouser.fr/ProductDetail/Illinois-Capacitor-CDE/108TTA010M?qs=sGAEpiMZZMsh%252b1woXyUXj6tSaZI%252bOgx%2fKpcwmoQX9XA%3d 1000 µF]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-}&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Calendrier_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69039</id>
		<title>Fichier:Calendrier prévisionnel PFE P24.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Calendrier_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69039"/>
				<updated>2019-02-19T00:21:24Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69038</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69038"/>
				<updated>2019-02-19T00:20:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Calendrier prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:calendrier_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69037</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69037"/>
				<updated>2019-02-19T00:19:24Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Mise en place de mon filtre sur le Robot sur la partie simulée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robotino==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnelles. Il est donc possible de les observer en temps réel et de les comparer avec la consigne envoyée au préalable.&lt;br /&gt;
&lt;br /&gt;
==Explication de la méthode pour la détection de défauts==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69036</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69036"/>
				<updated>2019-02-19T00:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Explication sur la partie commande de mon robotino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69035</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69035"/>
				<updated>2019-02-19T00:16:16Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Comment valider ce modèle ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
       Sum(t)(yest - y)²&lt;br /&gt;
 err =-------------------&lt;br /&gt;
            Sum(t)y²&lt;br /&gt;
&lt;br /&gt;
err est l'erreur entre le modèle estimé et le modèle réel&lt;br /&gt;
yest est la valeur d'un modèle estimé sur une période t&lt;br /&gt;
y est la valeur d'un modèle réel sur une période t&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69034</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69034"/>
				<updated>2019-02-19T00:11:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Comment identifier le modèle du Robotino ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
 X(k+1) = AX(k) + BU(k)&lt;br /&gt;
 Y(k) = CX(k) + DU(k)&lt;br /&gt;
&lt;br /&gt;
A, B, C et D sont les paramètres du système.&lt;br /&gt;
X(k) appartient R^n représente l'état du système.&lt;br /&gt;
U(k) appartient R^m représente l'entrée du système.&lt;br /&gt;
Y(k) appartient R^m représente la sortie du système. &lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
 X(k+i) = A^i*X(k) + [A^(i-1)*B|A^(i-2)*B|...|AB|B]*[U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
 /H(i) = [A^(i-1)*B|A^(i-2)*B|...|AB|B] et &lt;br /&gt;
 /U(k) = [U(k), U(k+1), ..., U(k+i-2), U(k+i-1)]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences permettant finalement, l'obtention du système suivant :&lt;br /&gt;
&lt;br /&gt;
 [Valeur estimée de X(k+1), /Yk] = [A;B , C;D] * [Valeur estimée de X(k), U(k)]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69031</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69031"/>
				<updated>2019-02-18T23:29:52Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Calendrier prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69030</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69030"/>
				<updated>2019-02-18T23:29:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Calendrier prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.png|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Planning_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69024</id>
		<title>Fichier:Planning prévisionnel PFE P24.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Planning_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69024"/>
				<updated>2019-02-18T22:50:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : Sbelhoua a téléversé une nouvelle version de Fichier:Planning prévisionnel PFE P24.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69023</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69023"/>
				<updated>2019-02-18T22:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
Lors de cette fin de semaine, et à l'aide de la prise en compte des conseils de M. Pekpe. Un modèle bien plus précis a été établi, de nombreux tests ont été réalisé cette semaine ainsi que la précédente. Le travail sur une méthode permettant d'ajouter des défauts directement dans une équations à aussi été établi durant cette semaine.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
Lors de cette semaine, les tâches suivantes seront réalisées, ou continuées : &lt;br /&gt;
* Finition des derniers tests et ajout de scénarios défauts&lt;br /&gt;
* Rédaction du rapport&lt;br /&gt;
* Préparation de la soutenance&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69020</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69020"/>
				<updated>2019-02-18T22:30:15Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
Concrètement, les modules des roues omnidirectionnelles sont composés d'un moteur à courant continu, un réducteur de rapport, une roue, une courroie crantée et d'un capteur incrémental. Ces 3 roues sont positionnés à 120 degrés les unes des autres. &lt;br /&gt;
&lt;br /&gt;
La caméra peut être réglée au niveau de la hauteur et de l'inclinaison, il est alors possible de visualiser en direct ce que la caméra observe. A l'aide de la caméra, il est possible d'orienter des études sur le traitement d'images. Ce système est aussi capable de détecter les lignes par exemple, ce qui peut amener à travailler sur la localisation des objets ou le suivi de trajectoire.&lt;br /&gt;
&lt;br /&gt;
Le module d'unité de commande est composé d'un point d'accès WLAN, d'une carte compact Flash de 256 Mo et d'un processeur PC 104 300 MHz.&lt;br /&gt;
&lt;br /&gt;
Le Robotino est composé de différents capteurs, des capteurs infrarouges, de capteur anticollision, de capteur incrémental, et de capteur de proximité inductif analogique. Les capteurs infrarouges sont espacé de 40 degrés l'un de l'autre, il y en a donc 9, il est donc possible de les utiliser pour éviter les obstacles par exemple. Le capteur anticollission  s'active lui à la moindre pression et peut par exemple s'arrêter lorsque celui-ci s'active. De plus le capteur incrémental permet de comparer la vitesse de consigne et la vitesse réelle. Ainsi, nous pouvons utiliser un régulateur PID pour arriver à la vitesse souhaitée. Alors que le capteur de proximité inductif analogique permet de détecter les différents objets métalliques sur le sol.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Planning_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69019</id>
		<title>Fichier:Planning prévisionnel PFE P24.jpg</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Planning_pr%C3%A9visionnel_PFE_P24.jpg&amp;diff=69019"/>
				<updated>2019-02-18T22:23:49Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69018</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=69018"/>
				<updated>2019-02-18T22:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Calendrier prévisionnel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
Voici les grandes étapes de mon projet de fin d'études. Celle-ci vont de la préparation du projet c'est-à-dire l'établissement du cahier des charges, les choix du matériel etc.. jusqu'à l'implémentation du filtre et la détection des défauts. Chaque semaine, un planning et des objectifs ont été proposé en réunion de projet pour bien mener le projet de bout en bout. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:planning_prévisionnel_PFE_P24.jpg|1000px|thumb|center|Figure 2 : Planning Prévisionnel]]&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68666</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68666"/>
				<updated>2019-02-14T11:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple. Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68665</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68665"/>
				<updated>2019-02-14T11:15:49Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robotino est un robot mobile omnidirectionnel, ainsi il est possible de le déplacer sur lui-même et dans toutes les positions voulues. A l'aide de sa webcam, il est possible d'observer ce que le robot observe en direct. Grâce à cette outil par exemple, il est intéressant de travailler sur une détection d'objet par exemple.&lt;br /&gt;
&lt;br /&gt;
Les différents capteurs du Robotino permettent de réaliser la mesure de distances, ces capteurs sont de type analogiques. De plus il est aussi composé de capteurs permettant d'éviter les différentes collision possibles durant un parcours par exemple. Il est aussi possible de contrôler les différents moteurs en envoyant une consigne à ceux-ci.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68659</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68659"/>
				<updated>2019-02-13T23:18:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
Après avoir effectué une réunion avec M. Pekpe, il a été relevé qu'il fallait faire une nouvelles acquisitions plus longue car les données pouvaient être faussées lors de l'arrêt du Robotino pendant l'acquisition. Cela était donc problématique pour avoir un modèle encore plus précis. Un ajout de sorties dans mon modèle a aussi été envisagé pour que cela soit encore plus méthodique.&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68658</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68658"/>
				<updated>2019-02-13T23:13:17Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Mise en place de mon filtre sur le Robot sur la partie simulée */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, il faut savoir qu'il faut mettre la toolbox pour le Robotino si celle-ci n'est pas déjà mise. Il est donc préférable de toujours entrer les commandes suivantes si l'on change souvent de PC :&lt;br /&gt;
&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/blockset' ) );&lt;br /&gt;
 addpath( strcat( getenv('ROBOTINOMATLAB_DIR'), '/toolbox' ) ); &lt;br /&gt;
&lt;br /&gt;
Nous construisons ensuite les objets que nous allons utiliser dans notre programme. Nous avons besoin du ComId pour pouvoir ensuite se connecter au Robotino, puis du Bumper pour pouvoir s'arrêter en cas de collition, de l'OmniDrive, de l'Odometry et des différents moteurs où nous assimilant leur numéros de moteur.&lt;br /&gt;
&lt;br /&gt;
Nous devons ensuite configurer le Robotino puis nous nous connectons sur celui-ci. De plus, après notre connexion au Robotino, nous chargeons les documents de commande et le modèle du Robotino.&lt;br /&gt;
&lt;br /&gt;
Ensuite dans mon cas, j'envoie une consigne pour chaque roues du robot à trois roues omnidirectionnel. Je peux donc les observer en temps réel et comparer avec la consigne envoyée.&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68303</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68303"/>
				<updated>2019-02-11T19:03:15Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Utilisation d'un signal sur mon premier modèle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1500px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68302</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68302"/>
				<updated>2019-02-11T19:02:51Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Utilisation d'un signal sur mon premier modèle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1200px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Utilisation_param%C3%A8tres_premier_mod%C3%A8le_P24.png&amp;diff=68301</id>
		<title>Fichier:Utilisation paramètres premier modèle P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Utilisation_param%C3%A8tres_premier_mod%C3%A8le_P24.png&amp;diff=68301"/>
				<updated>2019-02-11T19:00:30Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68300</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=68300"/>
				<updated>2019-02-11T18:57:23Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
* Rédaction du rapport de projet &lt;br /&gt;
&lt;br /&gt;
Plusieurs acquisitions ont été réalisé pour pouvoir définir une zone plus précise. Ainsi, la focalisation sur cette zone plus précise permet d'évaluer le défaut sur l'un des capteurs par exemple.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
Lors de cette semaine de travail, la réalisation des tâches suivantes seront réalisées ou continuées : &lt;br /&gt;
* Acquisitions pour définir au mieux mes différents résidus&lt;br /&gt;
* Simulation d'un des défauts avec l'ajout d'un défaut sous la forme de biais&lt;br /&gt;
* Différencier les fonctionnement anormal par exemple si le Robotino s'éteint brusquement &lt;br /&gt;
* Rédaction du rapport de projet&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1000px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67530</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67530"/>
				<updated>2019-02-05T19:05:27Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans mes sorties ou plutôt en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis&lt;br /&gt;
* Étude pour l'établissement d'une éventuelle amplitude pour la détection des défauts&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1000px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67529</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67529"/>
				<updated>2019-02-05T19:01:39Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser des tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans ma sortie ou non en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis   &lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1000px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67528</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67528"/>
				<updated>2019-02-05T19:00:54Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir mieux mettre en place la suite du travail, des étapes pour augmenter les nombres de sorties a été établi. De plus la méthodologie a été mise en place pour réaliser quelques tests supplémentaires sur la détection des défauts.&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
Durant cette semaine, le travail s'orientera vers les tâches suivantes :&lt;br /&gt;
* Utilisation d'un seuillage et test de la méthode des résidus pour pouvoir analyser le système lorsqu'il n'y pas de défauts&lt;br /&gt;
* Travail sur une méthode pour pouvoir insérer des défauts que ce soit directement dans ma sortie ou non en ajoutant un paramètre supplémentaire par exemple&lt;br /&gt;
* Réflexion pour essayer d'avoir un algorithme de Kalman encore plus précis   &lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1000px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67107</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67107"/>
				<updated>2019-02-03T22:57:35Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Utilisation d'un signal sur mon premier modèle */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir obtenir les différents paramètres de mon premier modèle, j'ai utilisé la méthode des sous espaces. Ainsi, à l'aide de cette méthode j'ai pu identifier les paramètres de mes différentes matrices A, B, C, D. Avant d'obtenir ces différents paramètres, il était nécessaire d'effectuer des acquisitions de données à l'aide du Robotino. Une fois ces paramètres obtenus, je les utilise pour mon filtrage de Kalman. Il ne faut pas oublier que dans ce nouveau cas, le bruit est ajouté dans l'algorithme. Dans cette simulation, seulement les paramètres du Robotino ont été intégré. &lt;br /&gt;
&lt;br /&gt;
Ainsi, avec ce premier modèle, l'observation principale des résultats amène à conclure que l'établissement de ce premier modèle n'était pas correct car l'erreur était assez grande et donc nous avions un estimation assez éloignée de ce que nous voulions. Cela était aussi du à l'erreur de la matrice de variance - covariance. Les résultats étaient tout de même positifs, le fonctionnement de l'algorithme à l'aide des paramètres est donc fonctionnel.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:utilisation_paramètres_premier_modèle_P24.png|1000px|thumb|center|Figure  : Comparaison entre ma sortie et mon filtre de Kalman]] &lt;br /&gt;
&lt;br /&gt;
Cette courbe permet de visualiser et de mieux comprendre les différentes explications données précédemment. Dans cette partie, le signal utilisée n'était pas encore le signal de la commande du Robotino. Le signal était le même que dans l'explication du précédent cas, en effet dans une des prochaines partie l'explication avec le filtrage de Kalman en ligne sera réalisée.&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67106</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=67106"/>
				<updated>2019-02-03T21:59:02Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Filtrage de Kalman d'un système simple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système à étudier==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réalisé des simulations en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=66910</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=66910"/>
				<updated>2019-01-30T20:15:12Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Filtrage de Kalman d'un système simple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système simple==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réaliser des simulation en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.png|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.png|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Comparaison_erreur_P24.png&amp;diff=66909</id>
		<title>Fichier:Comparaison erreur P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Comparaison_erreur_P24.png&amp;diff=66909"/>
				<updated>2019-01-30T20:14:29Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Comparaison-reelle_filtree_P24.png&amp;diff=66908</id>
		<title>Fichier:Comparaison-reelle filtree P24.png</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Fichier:Comparaison-reelle_filtree_P24.png&amp;diff=66908"/>
				<updated>2019-01-30T20:13:32Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=66907</id>
		<title>IMA5 2018/2019 P24</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA5_2018/2019_P24&amp;diff=66907"/>
				<updated>2019-01-30T20:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;Sbelhoua : /* Filtrage de Kalman d'un système simple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
Les observateurs sont généralement utilisés pour estimer des grandeurs mais en présence de bruits, leur performance se trouve dégradée. On a alors recours au filtrage de Kalman. Son application en diagnostic a permis la surveillance de plusieurs systèmes industriels. En effet, quand un défaut apparaît dans un système, il est crucial de le détecter tôt et de le corriger pour éviter sa propagation qui pourra endommager le système. Ce projet a pour but de mettre en œuvre un filtre de Kalman sur le robotino en vue de détecter l’apparition des défauts sur ce dernier. On commencera par apprendre et maîtriser le fonctionnement du filtrage de Kalman et la commande du Robotino avec Matlab. Suivra l’implémentation du filtre de Kalman pour la détection de défauts.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:description_P24.jpg|500px|thumb|center|Figure 1 : Robotino]]&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
L'objectif principal de ce projet est la mise en œuvre un filtre de Kalman pour la surveillance d’un robot mobile. En effet, grâce à la mise en oeuvre de ce filtre de Kalman sur le Robotino qui est un robot mobile, il sera donc possible de détecter des défauts.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
Lors de ce projet, les choix techniques sont les suivants :&lt;br /&gt;
&lt;br /&gt;
* Un robot mobile : Le Robotino&lt;br /&gt;
* Le logiciel RobotinoView3&lt;br /&gt;
* Matlab Simulink&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
Les tâches à effectuer sont les suivantes :&lt;br /&gt;
* Recherches bibliographiques et état de l'art&lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Modélisation du système&lt;br /&gt;
* Recherches Filtre de Kalman&lt;br /&gt;
* Expérimentations sur les défauts&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
Lors de cette première semaine, j'ai rencontré plusieurs fois mon tuteur de Projet, les points suivants ont été fixé : &lt;br /&gt;
* Organisation du PFE ==&amp;gt; Plusieurs réunions par semaine&lt;br /&gt;
* Travail préliminaire à réaliser&lt;br /&gt;
* Les notions à bien revoir&lt;br /&gt;
* Définition de l'objectif principal de ce projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
Lors de cette semaine de travail, je me suis attardé sur les points suivants : &lt;br /&gt;
* Prise en main du Robotino&lt;br /&gt;
* Découverte et commande du Robotino à l'aide de Matlab &lt;br /&gt;
* Réalisation de parcours&lt;br /&gt;
* Recherche sur l'établissement du modèle du Robotino&lt;br /&gt;
* Recherche sur le filtre de Kalman&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
Lors de ce début de semaine, la réalisation des tâches suivantes a été débuté :&lt;br /&gt;
* Recherches approfondies pour valider ce modèle&lt;br /&gt;
* Utilisation de techniques mathématiques pour valider ce modèle&lt;br /&gt;
&lt;br /&gt;
Rencontre avec M. Pekpe en ce début de semaine les points qui se sont dégagés sont les suivants : &lt;br /&gt;
* Expositions de mes idées d'expérimentation&lt;br /&gt;
* Clarification sur certains points du projet&lt;br /&gt;
* Continuer de documenter mon travail&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
En ce début de semaine 4, j'ai commencé les tâches suivantes :&lt;br /&gt;
* Travail su la méthode des résidus&lt;br /&gt;
* Rédaction de documents pour le fonctionnement de mes premières expérimentations&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
Lors de cette semaine voici les tâches que j'ai continué et commencé :&lt;br /&gt;
* Travail sur la méthode des résidus &lt;br /&gt;
* Adaptation du modèle&lt;br /&gt;
* Travail sur le filtrage de Kalman, plus particulièrement sur un système plus simple&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
Lors de cette semaine, le travail entamé est le suivant :&lt;br /&gt;
* Travail sur l'algorithme de Kalman&lt;br /&gt;
* Création d'un fichier pour initialiser la position du Robot avant l'utilisation de celui-ci&lt;br /&gt;
* Réalisation d'un filtrage de Kalman sur un signal sinusoïdal&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
Lors de cette semaine, le travail principal sera le suivant : &lt;br /&gt;
* Calcul des paramètres pour le filtrage de Kalman sur le Robotino&lt;br /&gt;
* Test d'implémentation du filtrage&lt;br /&gt;
&lt;br /&gt;
Une implémentation du filtre a été réalisé sur le Robotino, mais les sorties n'étant que simulées une erreur conséquente s'est installé dans ma prédiction.&lt;br /&gt;
L'objectif de mes prochaines étapes est donc de ne plus avoir ce problème de bruit.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
Les différentes tâches à réaliser pour cette semaine sont les suivantes : &lt;br /&gt;
* Exploitation du bruit pour avoir un meilleur filtrage &lt;br /&gt;
* Travail avec la méthode des sous espaces pour pouvoir identifier la matrice de perturbation &lt;br /&gt;
* Une modification du modèle est donc à prévoir&lt;br /&gt;
&lt;br /&gt;
La méthodologie et le travail actuel a été validé cette semaine avec M. Pekpe.&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
Lors de cette semaine, je vais effectuer les tâches suivantes : &lt;br /&gt;
* Recherche d'une méthode pour pouvoir exploiter plus de paramètres&lt;br /&gt;
* Travail sur différents paramètres du robotino&lt;br /&gt;
* Cela implique un nouveau changement de mon modèle&lt;br /&gt;
* Mais aussi un changement de l'algorithme principal&lt;br /&gt;
&lt;br /&gt;
==Description des concepts clés du filtrage de Kalman==&lt;br /&gt;
&lt;br /&gt;
Le filtre de Kalman est un filtre à réponse impulsionnelle infinie c'est-à-dire que c'est un filtre qui se base sur les valeurs du signal d'entrée mais aussi des valeurs antérieurs de celui-ci. Le filtre de Kalman est donc une méthode permettant d'estimer les différents paramètres d'un système qui évolue dans le temps, tout cela à partir de mesures bruités. Le filtre de Kalman est donc utilisé dans de nombreux domaines tels que le traitement d'images, les radars...&lt;br /&gt;
&lt;br /&gt;
Ce filtre est capable de prédire des paramètres du système, et de rectifier des erreurs. Grâce au filtre de Kalman, il est possible d'avoir des erreurs raisonnables et ainsi d'avoir des estimations correctes.&lt;br /&gt;
&lt;br /&gt;
Il y a deux grandes étapes concernant le fonctionnement du filtre de Kalman :&lt;br /&gt;
&lt;br /&gt;
* La première étape est la prédiction de l'estimation en fonction du modèle du système. De plus, dans cette étape, nous avons l'état prédit et l'estimation prédite de la covariance.&lt;br /&gt;
&lt;br /&gt;
* La seconde étape vise à faire la mise à jour de cette prédiction à l'aide des nouvelles mesures. Alors que dans cette seconde étape, nous avons une équation d'innovation, la covariance de l'innovation, le gain de Kalman mis à jour, ainsi que l'état de mis à jour et la covariance de mis à jour. Finalement, l'objectif de cette seconde étape est d'avoir une estimation bien plus précise.&lt;br /&gt;
&lt;br /&gt;
==Comment identifier le modèle du Robotino ?==&lt;br /&gt;
&lt;br /&gt;
L’identification est la détermination du modèle d’un système sous forme de représentation d’état de manière numérique à partir des mesures d’entrée et de sorties. Concernant l'identification du modèle, nous utilisons la méthode des sous espaces. On considère le système linéaire à temps invariant suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq1_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
A l'aide de ce modèle, il faut rechercher une équivalence permettant d'avoir les matrices A, B, C, D. Nous déduisons que la réalisation équivalente peut être la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq2_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Nous obtenons alors des estimations des matrices d'observabilité étendue et de séquences suivantes :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
Finalement, nous obtenons le système suivant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:eq3_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Comment valider ce modèle ?==&lt;br /&gt;
&lt;br /&gt;
Concernant la validation du modèle, il faut utiliser la méthode des moindres carrées. La méthode des moindres carrés permet de sélectionner parmi ces fonctions celle qui reproduit le mieux les données expérimentales. On parle dans ce cas d’ajustement par la méthode des moindres carrés. La formule de cette méthode est la suivante :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:equations_P24.jpg|500px|thumb|center|Figure  : ]]&lt;br /&gt;
&lt;br /&gt;
==Filtrage de Kalman d'un système simple==&lt;br /&gt;
&lt;br /&gt;
Pour commencer, j'ai choisi un système discret pour pouvoir le simuler, j'ai réaliser des simulation en régime permanent et à temps invariant. Dans ce cas, un bruit sera ajouté car dans la simulation, si nous n'avons pas de bruit le résultat s'éloignera fortement de la réalité. Le système choisi est régi par les matrices suivantes qui représentent la dynamique du système simulé. Les matrices A, B, C et D sont donc les suivantes : &lt;br /&gt;
&lt;br /&gt;
 A = [3.1587    2.7410    -0.8520;&lt;br /&gt;
      1.4412    6.6666          0;&lt;br /&gt;
         0      8.8888     2.2541];&lt;br /&gt;
&lt;br /&gt;
 B = [0.5487;&lt;br /&gt;
      7.4587;&lt;br /&gt;
      -2.2587];&lt;br /&gt;
&lt;br /&gt;
 C = [1 0 0];&lt;br /&gt;
&lt;br /&gt;
 D = 0;&lt;br /&gt;
&lt;br /&gt;
Dans ce cas l'utilisation des équations du filtre de Kalman sont nécessaires, j'ai utilisé les équations de mise à jour du temps ainsi que celle de la mise à jour des mesures. Dans mes différentes équations, je tiens compte des mesures passées pour prédire l'état futur lors de la mise à jour. En effet, la correction sera réalisé en fonction de l'équation d'innovation c'est-à-dire que l'écart que nous trouvons entre les différentes valeurs mesurées et les différentes valeurs prédites. Ainsi, cet écart est le gain d'innovation, celui-ci permet de minimiser la covariance en tenant compte du bruit. De cette manière nous pourrons estimer à l'aide de ce filtre une estimation optimale de notre sortie.&lt;br /&gt;
&lt;br /&gt;
Dans mon cas, j'ai ajouté un bruit qui correspondrait au bruit du Robotino. L'ajout de ce bruit dans mes équations d'état était donc nécessaire pour avoir une simulation utile. J'ai donc un modèle discret, et choisi au préalable des valeurs pour les coefficients des bruits des capteurs et le bruit du système. Après avoir crée mon système, tous les paramètres de mon modèle sont déterminés. L'objectif de cette simulation est donc de pouvoir comparer la sortie du filtre de Kalman et la sortie réelle. Mais afin d'avoir une simulation exploitable, il fut intéressant de faire des comparaisons avec plus ou moins de bruit. Dans mon système, j'ai mis mon filtre de Kalman dans un retour. L'étape suivante était l'implémentation d'un signal quelconque, (utilisation de fonction affines, fonction cosinus etc...) dans ce cas, j'ai utilisé la fonction cos. &lt;br /&gt;
&lt;br /&gt;
La comparaison avec la sortie filtrée et la sortie réelle a donc été logique. Grâce au différentes mesures de l'erreur de covariance, nous pouvons constater que celle-ci à été réduite de deux après le filtrage à l'aide du filtre de Kalman.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Concernant le filtrage de kalman variant dans le temps, j'ai réutilisé une partie du filtrage de Kalman en régime permanent. Cette fois, le covariance du bruit était aussi variante. L'ajout de récursivité pour pouvoir travailler dans le temps a donc été fortement utile. Dans ce cas, les matrices d'estimation d'état et de covariance d'erreur sont mise à jour à chaque itération. L'utilisation des bruits est nécessaires pour les mêmes raisons que précédemment. Après avoir implémenté le nouvel algorithme, la comparaison entre la sortie réelle et la sortie estimée a été réalisé.   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison-reelle_filtree_P24.jpg|1000px|thumb|center|Figure  : Comparaison sortie réelle et sortie filtrée]]&lt;br /&gt;
&lt;br /&gt;
Ce premier graphique montre la réponse de la sortie réelle en bleu et la réponse du filtrage de Kalman en rouge.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:comparaison_erreur_P24.jpg|1000px|thumb|center|Figure  : Comparaison erreur de la mesure et l'erreur de l'estimation]]&lt;br /&gt;
&lt;br /&gt;
Ce second graphique nous montre l'erreur de la mesure et l'erreur du filtrage. De plus en régime à temps variant nous avons une erreur de covariance inférieure à la valeur théorique. En effet la covariance de sortie atteint un état stable à partir de la huitième itération. Par contre, la matrice de gain ne change pas par rapport au régime permanent.&lt;br /&gt;
&lt;br /&gt;
==Utilisation d'un signal sur mon premier modèle==&lt;br /&gt;
&lt;br /&gt;
==Explication sur la partie commande de mon robotino==&lt;br /&gt;
&lt;br /&gt;
==Mise en place de mon filtre sur le Robot sur la partie simulée==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Sbelhoua</name></author>	</entry>

	</feed>