Maison intelligente : Différence entre versions

De Wiki d'activités IMA
(Jeudi 28/02/2013, de 8h à 12h)
(Rapport du projet)
 
(38 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
== Le 14/02/2013 ==
+
<include nopre noesc src="/home/pedago/pimasc/include/video-RobotMaisonIntelligente-iframe.html" />
 +
__TOC__
 +
<br style="clear: both;">
 +
= Première rencontre avec l'industrielLe : Expression de besoin =
  
'''Première rencontre avec l'industriel'''<br/>
+
'''14/02/2013'''<br/>
 
Compte Rendu.<br/>
 
Compte Rendu.<br/>
 
Réunion du 14/02/2013<br/>
 
Réunion du 14/02/2013<br/>
Ligne 32 : Ligne 35 :
 
----
 
----
  
== Lundi 25/02/2013, de 14h à 16h ==
+
=Analyse et Recadrage du projet=
 
+
'''Lundi 25/02/2013, de 14h à 16h '''
 
Étant donné que le projet n'était pas encore très bien spécifié, il m'a fallu discuter avec les professeurs pour avoir plus de lumières afin de lancer le projet.<br/>
 
Étant donné que le projet n'était pas encore très bien spécifié, il m'a fallu discuter avec les professeurs pour avoir plus de lumières afin de lancer le projet.<br/>
 
M Xavier Redon va alors m'aider à restreindre le projet pour y voir plus clair. Il me propose de me focaliser sur un premier objectif: '''Utiliser OPENCV pour suivre une personne avec ROBOTINO'''.<br/><br/>
 
M Xavier Redon va alors m'aider à restreindre le projet pour y voir plus clair. Il me propose de me focaliser sur un premier objectif: '''Utiliser OPENCV pour suivre une personne avec ROBOTINO'''.<br/><br/>
 
Pour se rassurer qu'il est possible d'utiliser la librairie OPENCV sur Robotino '''en C''', il m'a fallu avoir des renseignements au près de M Merzouki. Il m'a affirmé que cela est possible et m'a proposé le lien [[http://wiki.openrobotino.org/index.php?title=Main_Page]] pour plus d'information sur robotino.<br/><br/>
 
Pour se rassurer qu'il est possible d'utiliser la librairie OPENCV sur Robotino '''en C''', il m'a fallu avoir des renseignements au près de M Merzouki. Il m'a affirmé que cela est possible et m'a proposé le lien [[http://wiki.openrobotino.org/index.php?title=Main_Page]] pour plus d'information sur robotino.<br/><br/>
Ainsi, à la prochaine science, je ferai les premiers testes pour reconnaître des personnes à partir de OPENCV via un PC muni d'une camera. <br/>
+
Ainsi, à la prochaine séance, je ferai les premiers testes pour reconnaître des personnes à partir de OPENCV via un PC muni d'une camera. <br/>
 
Ces tests doivent me garantir s'il est possible de gérer le déplacement ou l'éloignement d'une personne avec OPENCV, si oui, essayer d'estimer la sensibilité du système à détecter ce changement. <br/>
 
Ces tests doivent me garantir s'il est possible de gérer le déplacement ou l'éloignement d'une personne avec OPENCV, si oui, essayer d'estimer la sensibilité du système à détecter ce changement. <br/>
  
 
----
 
----
  
 +
=Séances=
 
== Mercredi 27/02/2013, de 14h à 18h ==
 
== Mercredi 27/02/2013, de 14h à 18h ==
 
- Installation de la librairie OpenCV <br/>
 
- Installation de la librairie OpenCV <br/>
Ligne 49 : Ligne 53 :
 
- Lecture de la documentation openCV pour essayer de comprendre ce qu'on peut faire avec cette librairie. <br/>
 
- Lecture de la documentation openCV pour essayer de comprendre ce qu'on peut faire avec cette librairie. <br/>
 
- quelques testes sur des petits programmes proposés dans certains tutoriels. <br/>
 
- quelques testes sur des petits programmes proposés dans certains tutoriels. <br/>
Cependant, je me rends compte que j'ai des outils dont je connais la nécessité (filtre une image, faire la convolution entre deux images, <br/>
+
Cependant, je me rends compte que j'ai des outils dont je connais la nécessité (filtrer une image, faire la convolution entre deux images, <br/>
 
faire les contours et les coins d'une image...),  mais je ne sais pas comment m'en servir pour extraire un objet spécifique <br/>
 
faire les contours et les coins d'une image...),  mais je ne sais pas comment m'en servir pour extraire un objet spécifique <br/>
 
dans une image. <br/>
 
dans une image. <br/>
Je me propose alors d'étudier les différentes phases de détection d'objet. <br/>
+
J'''e me propose alors d'étudier les différentes phases de détection d'objet''' dans les séances qui suivront. <br/>
 
Je rappelle que je dois être capable de détecter un même objet dans deux images différentes et être capable de faire la différence entre <br/>
 
Je rappelle que je dois être capable de détecter un même objet dans deux images différentes et être capable de faire la différence entre <br/>
 
les deux objets (taille et position sur le cadre de l'image). Ce sont ces différences qui me permettront de commander le robot. <br/>
 
les deux objets (taille et position sur le cadre de l'image). Ce sont ces différences qui me permettront de commander le robot. <br/>
 +
 +
== Semaine du 4 mars ==
 +
- Lecture avancé sur le traitement d'image<br/>
 +
- teste de détection d'objet dans une image.<br/>
 +
 +
== Semaine du 11 mars ==
 +
Quelques résultats satisfaisants:  <br/>
 +
- A partir d'opencv,j'arrive à extraire un objet (à une couleur) dans une image<br/>
 +
- utilisation des filtres proposés sur opencv pour réduire des couleurs parasite autour de l'objet objectif<br/>
 +
- calcule du centre de gravité de l'objet et possibilité de l'encadrer par un rectangle <br/><br/>
 +
 +
A ce niveau, je peux me tourner vers Robotino. <br/>
 +
L'idée c'est d'être capable de conduire le robot en ayant la donné du centre de gravité de l'objet (pour donner la position gauche et droite)
 +
et la surface du rectangle contenant l'objet (pour donner les informations de la profondeur de l'objet).<br/>
 +
 +
== Semaine du 18 mars ==
 +
- Lundi et mercredi: Essai d'installer opencv sur Robotino mais sans réussite. Le robotino ne pouvait pas se connecter sur internet, j'essaie de trouver des solutions sur internet en essayant d'exporter tout le projet opencv sur robotino et en suite compiler les codes sources du projet opencv, mais cela ne marche pas.<br/>
 +
- Jeudi 21 mars, à 11h: Le professeur Xavier Redon m'aide à installer les librairies et me débloque du problème. <br/>
 +
 +
== Semaine du 25 mars ==
 +
- Lecture de la documentation RobotinoAPI2 pour programmer le Robotino en C<br/>
 +
- premier essai pour conduire le Robotino en C<br/>
 +
- première tentative pour combiner la première partie du projet (détection d'objet) et Robotino, mais sans réussite au début car le robotino est conduit par une fonction en boucle infinie et la fonction de détection d'objet est en boucle infinie => '''Nécessité d'utiliser la programmation mutli-thread''': à faire la semaine suivante.
 +
 +
== Semaine du 1 avril ==
 +
- programmation multi-thread : lancement du gestionnaire de "'''détection d'objet'''" et le gestionnaire de "'''mouvement du robotino'''"<br/>
 +
- premiers tests sur le déplacement du robots en fonction d'une couleur d'objet ciblé<br/>
 +
- Parfois le robot suit la couleur, parfois il se perd<br/>
 +
- Essai de corriger le problème pour que le robot ne se perde pas. <br/>
 +
 +
== Semaine du 8 avril ==
 +
2h le lundi après-midi pour essayer d'analyser les problèmes (diminuer la vitesse du robot, réduire la qualité du filtre utilisé sur opencv pour essayer de gagner en temps de calcule,... le robot se perd toujours).
 +
 +
== Semaine du 29 avril ==
 +
Les semaines passées, il m'était difficile de stabiliser le mouvement du robot pour lui faire suivre correctement son objectif.
 +
Après la visite de M. Tribout et M. Ventroy, quelque remarque utiles étaient proposé pour améliorer le mouvement du robot. Entre autre: <br/>
 +
- Suppression de deux threads présent dans mon code: j'utilisais 1 thread pour le déplacement du robot et 1 thread pour le traitement d'image. Je m'était rendu compte que cette façon de faire n'était pas utile, par contre elle diminuait la performance de l'application.
 +
- Pendant les testes que j'effectuais pour tenter de corriger mon problème, je mettais de tempo. Ceci s'avéré une erreur énorme car il n'est pas nécessaire d'introduire des tempos dans un système temps réel.
 +
 +
Ainsi, pendant cette semaine, j'ai essayé de corriger mes erreurs pour avoir si le problème serait résolu. Hélas, robot affiche toujours le même comportement.
 +
 +
== Semaine du 6 mai==
 +
Rédaction du rapport et réalisation de la vidéo de présentation
 +
== Semaine du 13 mai==
 +
j'ai essayé de réaliser le projet sur le logiciel RobotinoView avec Mélanie LELAURE. Le projet est réalisé sur RobotinoView avec le même objectif (détection de couleur pour suivre une personne) et en utilisant les mêmes algorithmes que précédent.<br/>
 +
Avec robotinoView, le robot réagit correctement et ne pose pas les problèmes de déplacement (en petite vitesse bien sûr). Après quelques lectures sur le logiciel RobotinoView, j'ai alors compris qu'il présente l'avantage d’exécuter le programme sur le PC où il est installé; et n'échange que les données et les commandes avec robotino. <br/>
 +
Dans le cadre de notre projet, cette avantage que présente robotino view améliore sensiblement les performances du déplacement du robot car tout le traitement d'image est effectué sur le PC externe. Et donc, la sensibilité du robot à suivre l'objectif s'est amélioré considérablement.
 +
 +
<br/><br/>
 +
'''Vidéo de démonstration avec le programme réalisé avec RobotinoView '''<br/>
 +
https://www.dropbox.com/lightbox/home/Public <br/>
 +
https://dl.dropboxusercontent.com/u/83681946/PROJET_IMA4.AVI
 +
 +
= Conclusion =
 +
Sur le plan scolaire, le projet était très intéressant et très formateur. Pour traiter le problème, je suis passé par le traitement d'image avec OpenCv qui m'a permis de découvrir les différents algorithmes utilisés dans la détection d'objet en partant d'une simple image plate. <br/>
 +
Ce projet m'a aussi permis d'être confronté aux problèmes liés aux limités matériel. Je suis toujours persuadé que mon robot ne marchait pas correctement car le temps de traitement d'image était trop lent à cause de la capacité du processeur du Robotino. Et à cause de ce problème, mon projet n'a pas pu donné satisfaction à l’industriel qui attendait son résultat. <br/>
 +
Pour sauver le projet, j'ai refait le même projet sur RobotionView avec Mélanie LELAURE. RobotinoView présentait l'avantage de faire le traitement d'image sur le PC où il était installé et n'envoyait que les commandes de déplacement au Robotino.
 +
Cette solution a beaucoup amélioré la capacité du robot à suivre sa cible. <br/>
 +
Mélanie LELAUR, passant son stage au CITC, devait s'occuper de présenter le robot au salon du 30 Mai.Hélas, la salle était sombre et modifiait les couleurs tel qu'on les avait définies. Finalement, le projet n'avait pas été présenté.
 +
 +
= Rapport du projet =
 +
[[Média:Rapport_projetIMA4.pdf‎]]

Version actuelle datée du 13 juin 2013 à 23:49


Vidéo HD


Première rencontre avec l'industrielLe : Expression de besoin

14/02/2013
Compte Rendu.
Réunion du 14/02/2013

Première réunion sur le projet Robot assistant dans une maison intelligente

Personnes présentes: Romain Tribout et Josué RUKATA.

Le but de la rencontre était d'établir le premier contact avec l'industriel et établir les objectifs du projet "robot assistant dans une maison intelligente".
Le projet consiste à ajouter des nouvelles fonctionnalités à la maison intelligente que développe CITC-euraRFID, en occurrence:
- un robot capable de se localiser et de circuler dans la maison,
- un robot capable de suivre une personne dans la maison
- un robot capable de répondre à l'appel d'une personne en dehors de la maison pour aider à décharger les cours ....
- un robot capable d'atteindre un objectif donné (par exemple, déposer telle chose sur la table de la cuisine)

Nous avons visité la maison intelligente, et M Tribout m'a présenté le principe de fonctionnement de la maison, ainsi que les différents signaux présents dans la maison
et dont on peut avoir accès via les web services.

Monsieur Tribout a souligné que le but principale, dans le cadre de ce projet, est de réaliser un robot capable d'interagir avec la maison via les webs services
(ouvrir les portes, ....), capable de se localiser et circuler dans la maison.
Des propositions pour y arriver:
- Positionner des tag RFID sur les endroits bien déterminer dans la maison afin d'interagir avec le robot
- Traitement d'image côté robot,
- .... (liste non exhaustive)

M Tribout souligne aussi que toutes les propositions de notre part sont les bienvenues

2 heure à l'école
Recherche des solutions existantes sur la localisation d'un robot dans l'espace. La recherche n'a pas été fructueux.


Analyse et Recadrage du projet

Lundi 25/02/2013, de 14h à 16h Étant donné que le projet n'était pas encore très bien spécifié, il m'a fallu discuter avec les professeurs pour avoir plus de lumières afin de lancer le projet.
M Xavier Redon va alors m'aider à restreindre le projet pour y voir plus clair. Il me propose de me focaliser sur un premier objectif: Utiliser OPENCV pour suivre une personne avec ROBOTINO.

Pour se rassurer qu'il est possible d'utiliser la librairie OPENCV sur Robotino en C, il m'a fallu avoir des renseignements au près de M Merzouki. Il m'a affirmé que cela est possible et m'a proposé le lien [[1]] pour plus d'information sur robotino.

Ainsi, à la prochaine séance, je ferai les premiers testes pour reconnaître des personnes à partir de OPENCV via un PC muni d'une camera.
Ces tests doivent me garantir s'il est possible de gérer le déplacement ou l'éloignement d'une personne avec OPENCV, si oui, essayer d'estimer la sensibilité du système à détecter ce changement.


Séances

Mercredi 27/02/2013, de 14h à 18h

- Installation de la librairie OpenCV
- et premières test sur l'utilisation de la librairie

Jeudi 28/02/2013, de 8h à 12h

- Lecture de la documentation openCV pour essayer de comprendre ce qu'on peut faire avec cette librairie.
- quelques testes sur des petits programmes proposés dans certains tutoriels.
Cependant, je me rends compte que j'ai des outils dont je connais la nécessité (filtrer une image, faire la convolution entre deux images,
faire les contours et les coins d'une image...), mais je ne sais pas comment m'en servir pour extraire un objet spécifique
dans une image.
Je me propose alors d'étudier les différentes phases de détection d'objet dans les séances qui suivront.
Je rappelle que je dois être capable de détecter un même objet dans deux images différentes et être capable de faire la différence entre
les deux objets (taille et position sur le cadre de l'image). Ce sont ces différences qui me permettront de commander le robot.

Semaine du 4 mars

- Lecture avancé sur le traitement d'image
- teste de détection d'objet dans une image.

Semaine du 11 mars

Quelques résultats satisfaisants:
- A partir d'opencv,j'arrive à extraire un objet (à une couleur) dans une image
- utilisation des filtres proposés sur opencv pour réduire des couleurs parasite autour de l'objet objectif
- calcule du centre de gravité de l'objet et possibilité de l'encadrer par un rectangle

A ce niveau, je peux me tourner vers Robotino.
L'idée c'est d'être capable de conduire le robot en ayant la donné du centre de gravité de l'objet (pour donner la position gauche et droite) et la surface du rectangle contenant l'objet (pour donner les informations de la profondeur de l'objet).

Semaine du 18 mars

- Lundi et mercredi: Essai d'installer opencv sur Robotino mais sans réussite. Le robotino ne pouvait pas se connecter sur internet, j'essaie de trouver des solutions sur internet en essayant d'exporter tout le projet opencv sur robotino et en suite compiler les codes sources du projet opencv, mais cela ne marche pas.
- Jeudi 21 mars, à 11h: Le professeur Xavier Redon m'aide à installer les librairies et me débloque du problème.

Semaine du 25 mars

- Lecture de la documentation RobotinoAPI2 pour programmer le Robotino en C
- premier essai pour conduire le Robotino en C
- première tentative pour combiner la première partie du projet (détection d'objet) et Robotino, mais sans réussite au début car le robotino est conduit par une fonction en boucle infinie et la fonction de détection d'objet est en boucle infinie => Nécessité d'utiliser la programmation mutli-thread: à faire la semaine suivante.

Semaine du 1 avril

- programmation multi-thread : lancement du gestionnaire de "détection d'objet" et le gestionnaire de "mouvement du robotino"
- premiers tests sur le déplacement du robots en fonction d'une couleur d'objet ciblé
- Parfois le robot suit la couleur, parfois il se perd
- Essai de corriger le problème pour que le robot ne se perde pas.

Semaine du 8 avril

2h le lundi après-midi pour essayer d'analyser les problèmes (diminuer la vitesse du robot, réduire la qualité du filtre utilisé sur opencv pour essayer de gagner en temps de calcule,... le robot se perd toujours).

Semaine du 29 avril

Les semaines passées, il m'était difficile de stabiliser le mouvement du robot pour lui faire suivre correctement son objectif. Après la visite de M. Tribout et M. Ventroy, quelque remarque utiles étaient proposé pour améliorer le mouvement du robot. Entre autre:
- Suppression de deux threads présent dans mon code: j'utilisais 1 thread pour le déplacement du robot et 1 thread pour le traitement d'image. Je m'était rendu compte que cette façon de faire n'était pas utile, par contre elle diminuait la performance de l'application. - Pendant les testes que j'effectuais pour tenter de corriger mon problème, je mettais de tempo. Ceci s'avéré une erreur énorme car il n'est pas nécessaire d'introduire des tempos dans un système temps réel.

Ainsi, pendant cette semaine, j'ai essayé de corriger mes erreurs pour avoir si le problème serait résolu. Hélas, robot affiche toujours le même comportement.

Semaine du 6 mai

Rédaction du rapport et réalisation de la vidéo de présentation

Semaine du 13 mai

j'ai essayé de réaliser le projet sur le logiciel RobotinoView avec Mélanie LELAURE. Le projet est réalisé sur RobotinoView avec le même objectif (détection de couleur pour suivre une personne) et en utilisant les mêmes algorithmes que précédent.
Avec robotinoView, le robot réagit correctement et ne pose pas les problèmes de déplacement (en petite vitesse bien sûr). Après quelques lectures sur le logiciel RobotinoView, j'ai alors compris qu'il présente l'avantage d’exécuter le programme sur le PC où il est installé; et n'échange que les données et les commandes avec robotino.
Dans le cadre de notre projet, cette avantage que présente robotino view améliore sensiblement les performances du déplacement du robot car tout le traitement d'image est effectué sur le PC externe. Et donc, la sensibilité du robot à suivre l'objectif s'est amélioré considérablement.



Vidéo de démonstration avec le programme réalisé avec RobotinoView
https://www.dropbox.com/lightbox/home/Public
https://dl.dropboxusercontent.com/u/83681946/PROJET_IMA4.AVI

Conclusion

Sur le plan scolaire, le projet était très intéressant et très formateur. Pour traiter le problème, je suis passé par le traitement d'image avec OpenCv qui m'a permis de découvrir les différents algorithmes utilisés dans la détection d'objet en partant d'une simple image plate.
Ce projet m'a aussi permis d'être confronté aux problèmes liés aux limités matériel. Je suis toujours persuadé que mon robot ne marchait pas correctement car le temps de traitement d'image était trop lent à cause de la capacité du processeur du Robotino. Et à cause de ce problème, mon projet n'a pas pu donné satisfaction à l’industriel qui attendait son résultat.
Pour sauver le projet, j'ai refait le même projet sur RobotionView avec Mélanie LELAURE. RobotinoView présentait l'avantage de faire le traitement d'image sur le PC où il était installé et n'envoyait que les commandes de déplacement au Robotino. Cette solution a beaucoup amélioré la capacité du robot à suivre sa cible.
Mélanie LELAUR, passant son stage au CITC, devait s'occuper de présenter le robot au salon du 30 Mai.Hélas, la salle était sombre et modifiait les couleurs tel qu'on les avait définies. Finalement, le projet n'avait pas été présenté.

Rapport du projet

Média:Rapport_projetIMA4.pdf‎