IMA3/IMA4 2018/2020 P3 : Différence entre versions
(→Semaine 15) |
(→Semaine 14) |
||
Ligne 310 : | Ligne 310 : | ||
Nous travaillons sur la nouvelle carte PCB.Pour plus de stabilité, nous allons utiliser des borniers à la place de simples headers. Cependant, nous avons uniquement pu récupérer le fichier .PCBdoc des IMA5 sans leur schematic. Cela ralentit notre progression car cela nous impose l'utilisation du logiciel Altium que nous ne maitrisons pas. De plus, nous avons du importer le bornier que nous allons utiliser car il n'était pas présent dans la bibliothèque de base. Maintenant que nous avons le composant, nous n'arrivons pas à le relier aux autres composants avec des pistes. Nous demandons l'aide d'Alexandre Boé pour nous expliquer. Le problème venait des noms des pistes qui n'étaient pas les mêmes, donc le logiciel refusait de les relier. Une fois les pistes renommées, nous avons pu relier les anciennes pistes aux nouveaux borniers. | Nous travaillons sur la nouvelle carte PCB.Pour plus de stabilité, nous allons utiliser des borniers à la place de simples headers. Cependant, nous avons uniquement pu récupérer le fichier .PCBdoc des IMA5 sans leur schematic. Cela ralentit notre progression car cela nous impose l'utilisation du logiciel Altium que nous ne maitrisons pas. De plus, nous avons du importer le bornier que nous allons utiliser car il n'était pas présent dans la bibliothèque de base. Maintenant que nous avons le composant, nous n'arrivons pas à le relier aux autres composants avec des pistes. Nous demandons l'aide d'Alexandre Boé pour nous expliquer. Le problème venait des noms des pistes qui n'étaient pas les mêmes, donc le logiciel refusait de les relier. Une fois les pistes renommées, nous avons pu relier les anciennes pistes aux nouveaux borniers. | ||
Dans un même temps, nous avons réussi à faire fonctionner la caméra de la kinect à l'aide du logiciel freenect. Cependant, nous n'arrivons pas à récupérer le flux vidéo. Nous décidons d'essayer avec une simple webcam et d'OpenCV. Nous n'avons pas réussi à installer complèetement sur Linux. En réessayant sur le PC de Théo qui fonctionne sous Windows, on a pu vérifier qu'OpenCV fonctionnait et qu'on arrivait à avoir une reconnaissance faciale qui fonctionne approximativement. | Dans un même temps, nous avons réussi à faire fonctionner la caméra de la kinect à l'aide du logiciel freenect. Cependant, nous n'arrivons pas à récupérer le flux vidéo. Nous décidons d'essayer avec une simple webcam et d'OpenCV. Nous n'avons pas réussi à installer complèetement sur Linux. En réessayant sur le PC de Théo qui fonctionne sous Windows, on a pu vérifier qu'OpenCV fonctionnait et qu'on arrivait à avoir une reconnaissance faciale qui fonctionne approximativement. | ||
+ | |||
+ | En parallèle, nous nous occupons de la structure du robot. Après avoir démonté l'étage supérieur du robot, nous avons analysé ce qui aurait pu entraîner la création de fumée dans le robot. Comme la fumée semblait venir de l'espace entre les variateurs de vitesse, nous nous sommes dit que cela venait d'un des variateurs. Cependant, en aucun cas le nouveau convertisseur est relié aux variateurs et les variateurs n'avaient pas d'anomalie lorsque nous étions avec l'ancien convertisseur DC/DC. La fumée ne venait donc pas des variateurs. Ensuite, nous avons cherché des endroits où il y aurait pu avoir des court-circuits ou des câbles en mauvais état pouvant entraîner une surchauffe de la gaine protectrice des fils électriques. Mais là encore, les câbles n'avaient pas de défauts en particulier. Les seuls câbles étant en mauvais état ont été retiré et changés lorsque nous avons commencer à refaire le câblage de la partie supérieure de l'intérieur du robot. | ||
===Semaine 15=== | ===Semaine 15=== |
Version du 28 mai 2019 à 10:21
Sommaire
- 1 Présentation générale
- 2 Analyse du projet
- 3 Préparation du projet
- 4 Réalisation du Projet
Présentation générale
Description
Ce projet à pour but de réaliser un robot autonome capable de se déplacer en toute sécurité et d'interagir avec les personnes aux alentours. Son utilisation première sera d'accueillir les visiteurs à Polytech et de les conduire à une salle particulière en empruntant le chemin le plus optimisé (pour lui et pour la personne).
Objectifs
Pour réaliser ce robot, il faut pouvoir le programmer pour qu'il puisse se repérer dans son environnement, à l'aide de capteurs et d'une kinect. Il faut ensuite intégrer une synthèse vocale et gérer l'écran pour qu'il puisse communiquer. Pour accompagner au mieux la personne, il devra savoir prendre les ascenseurs (en appuyant sur les bons boutons ou en demandant aux personnes d'appuyer sur tel ou tel bouton). Enfin, il faudra gérer la batterie et la recharge de ce robot.
Analyse du projet
Positionnement par rapport à l'existant
Analyse du premier concurrent : Pepper
SoftBank Robotics est une société de robotique japonaise parmi les leaders mondiaux dans le domaine de la robotique humanoïde. Ils ont de nombreux clients comme par exemple Renault, BMW, Carrefour... Son affiliation avec une banque lui permet de bénéficier de gros apports financiers pour la conception de leurs robots. En 2014, le robot Pepper est lancé. Il doté d'un écran et de caméras pour intéragir avec son entourgae. Par exemple, il reconnait les visages et les émotions. Il peut communiquer grâce à son écran tactile et la parole grâce à la synthèse vocale.
Points forts | Points faibles |
---|---|
|
|
Caractéristiques techniques:
- Dimensions (en cm): 120 x 42.5 x 48.5
- Poids: 28 kg
- Charge utile: 500g à bout de bras
- Automonie: environ 12h
- Vitesse max: 5km/h
https://www.softbankrobotics.com/emea/fr/pepper
Analyse du second concurrent : Heasy
Notre deuxième concurrent est la compagnie HEASE Robotics créée en 2016, qui se situe à Villeurbanne, près de Lyon. Cette compagnie s’attache particulièrement au marché des robots de service professionnel dans les domaines du retail et de la relation client avec son robot HEASY. Ce robot est présent dans des environnements tels que des centres commerciaux, des aéroports, des gares ou encore des entreprises. Il est capable de divertir, de guider, d'accueillir et de donner des informations simples aux clients, pour des informations plus complexes il met directement le client en relation avec un agent d'accueil. Avec la possibilité d’une mise en place d’un ensemble de robot HEASY dans un de ces lieux, l’agent d'accueil pourrait alors voir ses capacités démultipliées.
Points forts | Points faibles |
---|---|
|
|
https://heaserobotics.com/heasy-for-retail/
Analyse du troisième concurrent : Keylo
Wycas Robotics est une start up toulousaine lancée en octobre 2015,qui développe des solutions d'accueil et d'assistance physique du client à distance. La start up commercialise Keylo, un robot d'accueil à navigation autonome qui accompagne le visiteur dans les centres de stockage et le met en relation avec des téléopérateurs par visioconférence. Après avoir fait une levée de fonds de 350 000 euros auprès de ses actionnaires, la société à décidée d'exporter son robot Keylo dans le milieu médical. Dans cette situation le robot sera destinée à l'accueil et au service du patient en milieu hospitalier. Dressé sur roues, Keylo se déplace grâce à un laser complété par une caméra 3D et un odomètre.
Points forts | Points faibles |
---|---|
|
|
Scénario d'usage du produit ou du concept envisagé
Le robot envisagé se présenterait à l'accueil de l'école. Comme souvent, des intervenants extérieurs viennent faire des présentations. Il peut être difficile de trouver certaines salles quand on ne connaît pas l'école. C'est à ce moment là que le robot Centaure intervient. Le visiteur se dirige vers le robot. Ce-dernier va le repérer et lui proposer ses services (indiquer le chemin ou guider la personne jusqu'à la salle). Le visiteur sélectionne le service souhaité (directement sur l'écran ou vocalement).
- Dans le premier cas, il affiche le plan de l'école et décrit l'itinéraire.
- Dans le second cas, il accompagne la personne jusqu'à la destination souhaitée en empruntant le chemin le plus adapté (prendre l'ascenseur, éviter les couloirs bondés).
Une fois la mission accomplie, il retourne à l'accueil, prêt à accueillir une nouvelle personne. Il peut aussi recevoir une requête d'une personne perdue dans Polytech via le site internet du robot.
Réponse à la question difficile
Questions difficiles :
1) Au niveau de l'ascenseur, l'étage est-il choisi par la personne ou le robot ?
L'étage sera choisi par le personne qui suit le robot, en effet le robot est incapable d'appuyer sur un bouton, il n'a pas de bras qui permette une telle pression. Mais il proposera à la personne l’étage.
2) Comment gérer l'ouverture de la porte de l'ascenseur ? Il est possible que l'ascenseur ouvre ses portes au mauvais étage.
Nous avons une solution, les QRs codes. Grâce à la Kinect le robot lira le QR code et captera l'étage actuel. Il pourra ensuite agir en fonction de la consigne de départ.
Bibliographie et webographie
Site robot Pepper : https://www.softbankrobotics.com/emea/fr/pepper
Site robot Heasy : https://heaserobotics.com/heasy-for-retail/
Site robot Keylo : http://www.wyca-robotics.com/
Préparation du projet
Cahier des charges du groupe
La mission du robot Centaure est de guider une personne dans Polytech jusqu'à la salle requise. Pour cela, le robot doit prendre contact avec la personne. Il repère la personne ou cette dernière interagit avec lui à l'aide de l'application/site Web et lui donne sa requête (le conduire à telle salle ou lui indiquer le chemin à prendre pour rejoindre telle salle). Soit le robot affiche la carte de l'école sur l'écran, soit il conduit la personne à la salle. Pour cette dernière mission, le robot va se déplacer de manière autonome dans Polytech jusqu’à la salle. Il va se repérer dans l'espace grâce à des capteurs et des qr code disposés dans l'école. Il pourra ainsi prendre l'ascenseur et s'assurer qu'il est au bon endroit.
Objectif du semestre 6:
Nous devons faire le bilan technique du robot et analyser les améliorations que nous pouvons apporter comme par exemple réorganiser la partie mécanique. Nous devons aussi pouvoir utiliser la kinect pour lire des QR codes et faire en sorte que le robot se déplace de manière autonome à l'aide de ses capteurs.
- Repérage dans l'espace
- Utiliser différents capteurs: Ne pas heurter les utilisateurs
- Cartographier l'école avec les différentes positions des salles (QR code ascenseur, triangularisation pour la position)
- Effectuer le déplacement vers les salles
- Communication extérieure
- Gestion de la synthèse vocale
- Créer une interface Homme/Machine
Cahier des charges des équipes
Equipe 1 : Théo et Valériane: Communication extérieure
Notre équipe s'occupe de la communication du robot avec les personnes qui l'entourent. Nous allons gérer la partie interaction du robot en réalisant une reconnaissance vocale et une synthèse vocale. On s'occupera aussi de l'affichage sur l'écran intégré au robot. On affichera des informations diverses sur les services qu'il propose (affichage d'une carte interactive, choix de la salle à atteindre).
Equipe 2 : Corentain et Loïc
Notre équipe s'occupant du traitement des images renvoyées par la Kinect nous devront apprendre à utiliser la librairie C libfreenect ce qui nous permettra d'analyser les informations reçues par la Kinect.
Nous devrons donc réussir à repérer un visage qui se trouvera devant la Kinect mais aussi repérer les différents QR code disposés dans l'école par l'équipe 3 et utiliser les informations qu'ils donneront.
Equipe 3 : Thibault et Pierre
- Savoir se repérer dans l'espace à l'aide d'une triangulation par le Wi-Fi de Polytech et un système odométrique.
- Savoir recalibrer sa position en lisant des balises placées dans Polytech.
- Eviter les obstacles ou s'arrêter en cas d'urgence.
- Calculer un itinéraire afin de trouver le chemin le plus court.
Choix techniques : matériel et logiciel
Equipe 1
- Ecran:
- Ecran actuel non tactile (à changer ?)
- Synthèse vocale:
- Haut parleur
- Logiciel :
- Reconnaissance vocale:
- Utilisation de la reconnaissance vocale de la Kinect
Equipe 2 : Loïc et Corentain
Matériel :
- D'une Kinect
Logiciel :
- Nous utiliseront seulement de la programmation en C ainsi que la librairie libfreenect pour l’analyse et le traitement d’image.
Equipe 3
Logiciel : https://www.indooratlas.com/
QR code
Kinect
Liste des tâches à effectuer
Equipe 1: Communication extérieure
Notre équipe s'occupe de la communication entre le robot et l'utilisateur. Cela se fera par l'intermédiaire de l'écran, d'un site internet ou application et d'une synthèse vocale.
- Ecran:
- Affichage d'un visage, animation de celui-ci
- Affichage du texte
- Affichage de la carte de l'école
- Synthèse vocale:
- Prise de contacte avec l'humain
- Donner des indications de parcours
- Plusieurs langues disponibles
- Reconnaissance vocale:
- Micro pour entendre la requête de l'humain
- Plusieurs langues reconnues
- Site internet / application
- Soumettre des requêtes au robot
Equipe 2 : Loïc et Corentain
Notre équipe s'occupant du traitement des images renvoyées par la Kinect nous devront mettre en place :
- Le repérage d'une ou de plusieurs personnes se situant devant l'écran.
- Le scan des QR codes présent dans Polytech
Equipe 3
Notre équipe s'occupera de la partie déplacement du robot :
- Cartographier l'école Polytech
- Définir des zones de tags
- Effectuer un déplacement vers un endroit précis
Calendrier prévisionnel
Le calendrier prévisionnel peut se concrétiser sous la forme d'un diagramme de GANTT.
Equipe 1
Equipe 2
Equipe 3
Réalisation du Projet
Projet S6
Eventuellement créer des sous-pages par équipe avec le compte-rendu des réunions de groupe sur cette page principale.
Semaine 4
Lors de cette séance, nous avons établi le cahier des charges par équipe pour nous répartir le travail. Nous avons ensuite rédigé le calendrier prévisionnel complet pour le projet.
Semaine 5
Nous avons profité de cette séance pour prendre connaissance de l'avancement des IMA 5 sur le projet. Nous avons discuté avec eux des différentes spécificité du robot (allumage du robot, présence du bouton d'urgence, problème avec l'écran..). Nous avons aussi récupéré les differents documents présentant le robot (rapport de PFE, codes du robot et du site) pour etre complètement autonome lors du départ des IMA5.
Semaine 6
Le projet IMA5 étant terminé, nous allons pouvoir commencer à prendre en main le robot. Nous avons tout d'abord essayé de l'allumer. Cependant, lors de la démonstration des IMA5, ils avaient modifié le code pour commander le robot avec le site web. N'ayant pas encore les bonnes configurations pour utiliser le site web, nous avons modifié le code pour remettre par défaut la liaison série. Lors du démarrage, nous avons remarqué un dysfonctionnement au niveau de la roue droite. Après vérification des branchements, nous avons remarqué un faux contact au niveau du variateur de vitesse. Après avoir resséré le c^able, la roue tournait. Il ne restera plus qu'à gonfler les pneus et améliorer la direction. En effet, il ne suit pas exactement les directions qu'on lui donne.
Semaine 7
Prise en main du projet. Nous avons remplacé l'écran de base qui s'éteignait au bout de 10 secondes par un autre. Mais le problème persiste. On pense à un problème d'alimentation car lorsque l'on branche un écran alimenté sur secteur, tout fonctionne. Ensuite, nous avons décidé d'installer l'IDE Arduino directement sur le robot pour simplifier la programmation de ce dernier.
https://fr.rs-online.com/web/p/convertisseurs-dc-dc-isoles/0183764/
Semaine 8
Comme le problème de l'écran n'était pas encore résolu, nous nous somme concentré sur celui-ci. Durant la séance, nous avons remarqué que l'écran ne s'éteignait pas, mais c'était le rétroéclairage de l'écran qui diminuait considérablement après quelques secondes. Nous avons donc mesuré la tension d'entrée de l'écran et nous nous sommes rendu compte que cette tension était égale à 11,7V. Nous avons donc testé l'écran sur secteur et nous avions bien une tension de 12,4V. L'écran était donc sous alimenté, ce qui explique la diminution du rétroéclairage de l'écran. Après avoir lu la datasheet du convertisseur DC/DC RSD-150-B-12 utilisé pour le robot. Comme le convertisseur n'est pas modulable et ne délivre pas 12V pile, nous en avons conclu qu'il n'était pas adapté au système et devait être remplacé. En parallèle, nous avons remarqué que le câblage interne n'était pas assez organisé pour pouvoir manipuler l'intérieur du robot avec aisance. En effet, les câbles prenaient beaucoup de place dans le robot, ce qui fait que nous ne pouvions pas accéder correctement aux différents ports du PC. Nous avons donc décidé de réorganiser le câblage interne.
Semaine 9
Nous avons donc commencé par réaliser des schémas de câblage et étiqueter les câbles que nous allons réutiliser lors du nouveau câblage.
Semaine 10
Nous avons lancé la commande du convertisseur DC DC pour l'alimentation de l'écran. Nous avons divisé le groupe pour s'occuper des deux enjeux majeurs: refaire une carte PCB sur Altium et réaliser la synthèse et la reconnaissance vocale. Pour la carte PCB, nous voulons utiliser des borniers pour les pins pour que le câblage soit plus propre.
Semaine 11
HARDWARE:
Nous avons reçu le nouveau convertisseur DC DC. Nous avons procédé à des test de celui-ci. Il semble chauffer un peu trop (Pierre dit: "On a dead ça")
Le nouveau convertisseur alimente l'écran correctement, en un peu plus de 13V, cela corrige le problème de stabilité de l'écran, cependant après quelques minutes de la fumée semble se dégager du robot? A la vue de l'inquiètante fumée se dégageant du robot, nous décidons de procèder au décablage complet dans le but d'identifier les éventuels éléments ayant brûlés. De plus le décablage complets du robot nous permettra de mieux comprendre le fonctionnement de celui-ci et de procéder à un recâblage plus propre.
SOFTWARE:
Des recherches sont effectuées dans le but de trouver et comprendre le fonctionnement d'une synthèse vocale. Le système MaryTTS semble être un bon candidat, cependant nous ne parvenons pas à l'installer. Nos recherche continue donc dans le but de trouver une synthèse vocale si possible codée en C
Semaine 12
HARDWARE Finition de la dissection du robot, cette manipulation nous prend du temps, en effet chaque câble retiré est retrenscrit sur un schéma de câblage, dans l'espoir d'être capable de remonter le robot.
En parrallèle on commence la conception d'un nouveau shield sur le logiciel Altium. L'objectif de ce nouveau shield est de permettre l'utilisation de borniers pour maintenir les différents câbles et ainsi obtenir un câblage plus propre et plus sécurisé. Cependant notre méconnaissance du logiciel Altium complique cette tâche. Découverte du site https://www.snapeda.com/parts/282836-2/TE%20Connectivity%20AMP%20Connectors/view-part/?ref=search&t=282836-2
SOFTWARE Les recherches d'une synthèse vocale continuent
https://community.gladysassistant.com/t/tutoriel-gladys-et-la-reconnaissance-vocale/1419
https://community.gladysassistant.com/t/tutoriel-installation-kinect-pour-la-reconnaissance-vocale/1495
Semaine 13
Nous avons entièrement démonté la partie supérieure du robot pour s'assurer qu'il n'y avait pas de câbles défecteux qui auraient pu causer la fumée. Dans un même temps, nous faisons des tests avec la Kinect pour comprendre le fonctionnement et réussir à utiliser la caméra pour la future reconnaissance faciale et le micro pour la future reconnaissance vocale.Cependant, après quelques échecs, on se demande s'il ne faudrait pas plutôt utiliser une simple webcam à la place de la kinect.
Semaine 14
Nous travaillons sur la nouvelle carte PCB.Pour plus de stabilité, nous allons utiliser des borniers à la place de simples headers. Cependant, nous avons uniquement pu récupérer le fichier .PCBdoc des IMA5 sans leur schematic. Cela ralentit notre progression car cela nous impose l'utilisation du logiciel Altium que nous ne maitrisons pas. De plus, nous avons du importer le bornier que nous allons utiliser car il n'était pas présent dans la bibliothèque de base. Maintenant que nous avons le composant, nous n'arrivons pas à le relier aux autres composants avec des pistes. Nous demandons l'aide d'Alexandre Boé pour nous expliquer. Le problème venait des noms des pistes qui n'étaient pas les mêmes, donc le logiciel refusait de les relier. Une fois les pistes renommées, nous avons pu relier les anciennes pistes aux nouveaux borniers. Dans un même temps, nous avons réussi à faire fonctionner la caméra de la kinect à l'aide du logiciel freenect. Cependant, nous n'arrivons pas à récupérer le flux vidéo. Nous décidons d'essayer avec une simple webcam et d'OpenCV. Nous n'avons pas réussi à installer complèetement sur Linux. En réessayant sur le PC de Théo qui fonctionne sous Windows, on a pu vérifier qu'OpenCV fonctionnait et qu'on arrivait à avoir une reconnaissance faciale qui fonctionne approximativement.
En parallèle, nous nous occupons de la structure du robot. Après avoir démonté l'étage supérieur du robot, nous avons analysé ce qui aurait pu entraîner la création de fumée dans le robot. Comme la fumée semblait venir de l'espace entre les variateurs de vitesse, nous nous sommes dit que cela venait d'un des variateurs. Cependant, en aucun cas le nouveau convertisseur est relié aux variateurs et les variateurs n'avaient pas d'anomalie lorsque nous étions avec l'ancien convertisseur DC/DC. La fumée ne venait donc pas des variateurs. Ensuite, nous avons cherché des endroits où il y aurait pu avoir des court-circuits ou des câbles en mauvais état pouvant entraîner une surchauffe de la gaine protectrice des fils électriques. Mais là encore, les câbles n'avaient pas de défauts en particulier. Les seuls câbles étant en mauvais état ont été retiré et changés lorsque nous avons commencer à refaire le câblage de la partie supérieure de l'intérieur du robot.
Semaine 15
En parallèle, nous avons programmé la reconnaissance vocale et la reconnaissance faciale que nous voulons utiliser pour le robot. Pour le moment, la reconnaissance vocale fonctionne mais n'est pas assez précise et pour la reconnaissance faciale, la caméra détecte bien les visages. Cependant, elle ne peut pas différencier un visage d'un autre, c'est-à-dire que le logiciel sait qu'il y a un visage en face de lui, mais il ne connait pas l'identité de celui-ci. De plus, il nous reste maintenant à utiliser cette reconnaissance faciale dans un programme qui permette ensuite de faire une interaction avec l'utilisateur.
Documents Rendus
Liste finale du matériel pour la réalisation finale:
Raspberry pour remplacer le PC ? Caméra à la place de la kinect (avec micro) Haut parleur pour la synthèse vocale Câbles plus long
Vidéo à tourner:
Démonstration de la reconnaissance faciale sous Windows et synthèse vocale. ?? Utile juste dans le wiki pour montrer q'on a compris le fonctionnement du serveur : Démonstration de la communication serveur entre le site Web et l'arduino (allumage d'une LED).