Robot Pepper – Hackathon ENSIBS 2020

Envoyé par le 7 Fév 2020

 Contexte

Dans le cadre de notre intersemestre nous avons participé au hackathon 2020 de l’ENSIBS (Ecole Nationale Supérieure d’Ingénieurs de Bretagne-Sud). Ce hackathon a été organisé en collaboration avec la chaire Maintien@Domicile, commune à l’ENSIBS et IMT Atlantique en partenariat avec le centre de rééducation Kerpape. Durant cet évènement (se déroulant sur 2 jours et demis) nous devions travailler sur un projet concret et utile autour d’un challenge handicap et numérique, en formant des équipes mixtes avec des étudiants de l’ENSIBS en mécatronique..

Présentation du projet

Nous avons choisi de travailler sur un projet d’amélioration des fonctionnalités du robot Pepper. 

Pour contextualiser, Pepper est un robot français qui sert principalement à l’assistance et la présentation. Il a été utilisé dans des travaux de développement de comportement sociaux avec des enfants autistes mais aussi dans des scénarios de levée de suspicion d’état anormal (chute, malaise, oubli de soi, etc.).

Ce robot est très facilement programmable grâce à un logiciel de développement appelé “Choregraphe”.  Le logiciel est prévu avec une interface graphique permettant de faire des blocs de programmation et des liaisons entre blocs. Il suffit de glisser-déposer des blocs de fonctionnalités fournis et de les relier entre eux afin de définir un scénario d’utilisation. Si jamais nous cherchons à utiliser une fonctionnalité qui n’est pas déjà disponible, on peut facilement coder son propre bloc en python.

Capture d’écran du logiciel Choregraphe

Présentation de l’équipe

  • Étudiants mécatronique de l’ENSIBS : Maxime Dubois, Alexis Eveno, Chloé Humbert, Salomé Leguede, Erwan Le Texier
  • Étudiants IMT Atlantique : Théo Fontenit, Arnaud Allemang–Trivalle

Objectifs du projet

Une liste d’objectifs à réaliser nous a été fournis lorsque nous avons commencé le projet. A cause du manque de temps et de soucis techniques, nous n’avons pas pu réaliser tous ces objectifs bien qu’une majorité de ceux-ci ont été atteints.

  • Programmer et reprendre en main les programmes de visites Chaire et portes ouvertes ENSIBS
  • Programmer le robot afin de redémarrer de façon autonome avec un programme prédéfini
  • Ajouter la fonctionnalité de déplacement du robot
  • Ajouter la fonctionnalité de mise en relation en visio avec l’extérieur
  • Piloter des fonctionnalités par la voix

Scénarios

A partir des différents objectifs nous avons imaginé 2 scénarios d’utilisation à ajouter aux fonctionnalités déjà présentes sur le robot. En effet, ces scénarios servent à permettre une utilisation concrète et réfléchie des différentes fonctionnalités que nous souhaitions développer. 

  • Lors des dernières portes ouvertes de l’ENSIBS, Pepper était capable de présenter l’école, la chaire Maintien@Domicile et d’échanger avec les visiteurs sur certains sujets. Le premier scénario consiste à compléter cette visite en permettant au robot de suivre automatiquement son interlocuteur.
  • Le second scénario est un scénario d’aide à la personne. L’idée est que Pepper vienne au secours d’une personne lorsqu’elle appelle à l’aide, et qu’il puisse appeler automatiquement les secours. L’appel en question peut être soit un appel téléphonique, un SMS ou une visioconférence. Dans le dernier cas, les secours peuvent déterminer la gravité de la situation et agir en conséquence.

Déroulement du Hackathon

Pour travailler sur ce projet nous avons décidé de diviser notre groupe en 2 sous-groupes, un par scénario. 3 étudiants ont principalement travaillé sur le premier scénario et sur les livrables tandis que le second groupe composé des 4 personnes restantes s’est concentré sur le second scénario.

  • Premier Scénario

Comme décrit précédemment, le premier scénario consiste à suivre une personne tout en présentant l’école. Pour commencer, nous sommes partis sur un assemblage bloc tracker, temporisation et fonction move to pour que le robot suive une personne. En réalité, après avoir fait beaucoup d’essais, nous avons découvert qu’il y avait une solution beaucoup plus simple.

En effet, il est possible de programmer le robot avec le bloc de programmation people tracker, qui réalise le repérage des personnes en plus du guidage. Ce bloc est composé de trois modes : face, whole body et move. Pour le premier cas, la tête du robot suit le visage de la personne. Dans le 2ème cas, elle suit le corps d’une personne. Enfin, dans le dernier mode, Pepper va suivre la personne.

Afin d’éviter que Pepper ne percute un obstacle ou une personne lors de son déplacement, nous avons utilisé le bloc Set External Anti-Collision qui permet d’arrêter le robot dès qu’il détecte un obstacle.

Un problème est survenu lors de la détection de la personne à suivre. Dans le cas où, une autre personne passe devant la personne suivie par Pepper, celle-ci se met à suivre la deuxième personne. Pour résoudre ce problème, nous avons ajouté la mémorisation des visages. Cela permet au robot de ne suivre que la personne enregistré au départ de la visite. 

Enfin, nous avons amélioré le suivi de personne en implémentant des mots clés qui permettent de lancer le déplacement du robot: Suis-moi, suivre etc.

  • Deuxième Scénario 

Le deuxième scénario est un peu plus complexe. Il consiste à porter secours à une personne en danger. 

Des solutions non abouties

Le sous objectif principal du scénario d’aide à la personne en danger, est notamment de passer un appel en visioconférence. 

Une des solutions trouvées a été de pouvoir créer un serveur web de conférence. Cette solution induit de créer un serveur sur « ngrok ». Cette solution n’a pas abouti car nous avions trouvé le moyen de générer une page web sur Pepper via Choregraphe (cf programme Python ci-dessous). Cela permet de télécharger des applications du site d’Aldebaran Robotics mais il n’est pas possible de télécharger des applications type « google duo » pour réaliser des visioconférences à cause d’un problème de droits. 

Développer une application pour l’appel visio en suivant des instructions sur Microsoft Azure est une autre solution. Il est alors possible de créer une machine virtuelle et de la configurer pour la visio, mais au vu de la complexité, cette solution n’a pas été développée. 

Nous avons décidé de dissocier l’appel téléphonique et la visio. Pour le second cas, il est possible d’utiliser le réseau « WebRTC » avec Pepper en tant que module technique. Cependant, nous n’avons pas poursuivi cette solution et nous nous sommes concentré sur l’appel.

Code python pour ouvrir une page web sur la tablette du robot Pepper

Schémas de contexte du réseau

 

 

 La solution aboutie : démarche et explications

Le robot autorise l’enregistrement de mots prédéfini. Lorsque le robot détecte un de ces mots enregistrés, il déclenche la réponse associée. Suite à un appel de la personne en difficulté (via “à l’aide”, “au secours” ou encore “sos”) le robot va repérer l’origine du son et se diriger vers la source du bruit. Une fois arrivé à destination, le robot va demander si tout va bien, et en fonction de la réponse, peut appeler les secours . Le repérage de l’origine du son est difficile surtout dans des milieux bruyants et restreints. 

Une des solutions trouvées a été de créer un numéro de téléphone virtuel via un ordinateur. Sur ce compte virtuel twilio, un compte « SID » est créé. Via cette plateforme web, on peut envoyer un sms à un téléphone. On a ensuite pris une base de code python, que l’on a adapté pour l’IDE de l’éditeur de code. Sur ce code, notre identifiant SID est modifié ainsi que le numéro de téléphone virtuel. Ces informations permettent de communiquer entre un téléphone et le robot.

Ensuite, le code Python est intégré au logiciel Choregraphe pour ne plus avoir à passer par un ordinateur pour la communication entre le robot et le téléphone. Un début de solution à été de générer un script python et un bloc « get attached ». Le bloc « get attached » permet d’intégrer des libraires python au logiciel choregraphe. Le script python fait le lien entre le robot et le téléphone. Cette solution n’a pas fonctionné, car le logiciel choregraphe ne parvient pas à trouver la librairie importée.

Une autre solution est de charger la librairie au travers du script. Cependant, il y a un problème de format. Le logiciel choregraphe ne supporte que les fichiers « .dll », et pas les « .py ». A moins de trouver un moyen de convertir le format, cette solution reste inutilisable.

Une autre solution serait d’installer la librairie directement sur Pepper. Installer cette librairie revient à créer un comportement supplémentaire. Cependant, lors de l’exécution, il manquait une librairie PYTZ. Cette librairie est récupérable grâce au logiciel « Putty », qui l’installe sur le robot. Après avoir ré-exécuter le comportement, il manquait une autre librairie qui est maintenant installée. La découverte d’un tutoriel en japonais sur l’utilisation de Twilio nous a permis de finaliser la réalisation de l’appel via le robot Pepper.

Un problème que nous avons rencontré au niveau du suivi d’une personne est que le robot peut répondre de manière étrange. Cela est dû à une saturation de mémoire du robot lors d’un chargement de programme. Cette situation peut arriver notamment lors de chargement de programme avec reconnaissance vocale. Pour résoudre ce problème, il faut éteindre complètement le robot et le faire redémarrer.

  • Pistes d’amélioration

Un objectif supplémentaire serait de faire en sorte de pouvoir changer de mode de fonctionnement sans avoir à utiliser un ordinateur. Pour faire ça, le plus simple est de réunir l’intégralité des programmes utilisés en un seul, avec pour condition d’activation la reconnaissance d’un mot clé. A l’heure actuelle, cette fonction n’a pas encore été réalisée.

Une piste de modification du programme s’est présentée lors d’une présentation à une promotion d’élèves de l’ENSIBS. En effet, le robot avait pour objectif de suivre un des élèves. La modification est sur la distance d’arrêt entre le robot et la personne ciblée. La proximité entre le robot et la personne peut être gênante, au point de faire peur. Nous avons ici découvert l’importance de réfléchir à la perception du robot par les utilisateurs.

Une autre piste de modification est sur la vitesse de déplacement. Lorsque le robot suit une personne, il faut que la personne marche lentement pour ne pas sortir de la zone de détection. Il est possible que le problème soit d’ordre logiciel, le robot doit recalculer à chaque instant si la personne est situé devant lui, ce qui peut demander des ressources assez importantes.

Démonstrations

Scénario global

Scénario 1 : Fonction de suivi automatique

Bonus 1 : Spectacle d’animations prédéfinies du robot Pepper

Bonus 2 : Reconnaissance automatique de sexe et d’âge

Retours d’expérience

  • Théo Fontenit

J’abordais cet intersemestre sans vraiment savoir ce que j’allais réaliser puisque je n’avais jamais réalisé de hackathon et que nous étions les premiers de l’IMT à réaliser celui ci avec l’ENSIBS. Nous sommes arrivé jeudi matin sur les lieux du Hackathon. Après une rapide visite des lieux, nous nous sommes tout de suite mis dans le bain puisque nous avons eu la présentation des sujets et le choix des sujets dès 10h30. Le début de journée était un peu hésitant: je ne connaissais ni les personnes de mon groupe ni l’objet d’étude de notre week end: le robot Pepper. Cependant au fil de la journée, nous avons appris à nous connaître et à apprivoiser le robot. Nous avons découvert l’immense palette de comportements que le robot Pepper pouvait réaliser, avec un peu d’imagination nous pouvions créé un tas de scénarios différents !

Au cours du week end, diverses difficultés nous ont fait face. Par exemple, lorsque j’ai voulu mettre en place le suivi du robot par le son, je me suis rendu compte que la fonction SoundTracker préconfiguré dans le logiciel Chronographe était approximative du fait que les 4 microphones du robot possédaient une zone morte derrière ce dernier et que les échos des sons ne permettaient pas une localisation précise. J’ai donc reprogrammé les blocs en langage Python. Il fallait donc être capable de comprendre les programmes déjà créés en programmation orientée objet et de les modifier afin d’obtenir la fonction désirée. Cela s’est traduit par la création de nouvelles fonctions python et de nouvelles entrées dans les blocks Python du logiciel Chorégraphe.

Le hackathon s’est révélé être un expérience très positive. J’ai eu l’occasion de rencontrer de nombreuses personnes passionnés par des thématiques qui me tiennent à coeur. En effet, les étudiants en mécatronique m’ont permit de découvrir le domaine de la robotique. J’ai toujours été attiré par ce domaine cependant je n’avais jamais eu l’occasion de réaliser des applications concrètes de ce type. La possibilité de programmer le robot Pepper m’a permis d’apprendre de nombreuses compétences tel que la capacité à réaliser la stratégie de commande adaptée à un robot humanoïde, la réflexion sur la perception du robot par l’humain et leurs interactions, ou encore la prise en compte de l’environnement par un robot et ses capteurs. De plus, l’application que nous avons développé sur Pepper possède une vraie utilité et pourrait être améliorée afin d’être réellement mis en place dans la maison de personnes âgées afin de détecter leur chute et afin de leur apporter une aide. Enfin, les profs de l’ENSIBS et les ingénieurs de la chaire Maintien à domicile ont été très disponible et m’ont permit de découvrir la robotique tout en prenant plaisir dans un format qui tranche avec les cours habituels.

  • Arnaud Allemang–Trivalle

J’ai déjà eu l’occasion de participer à différents Hackathon et j’étais donc familier au concept et au déroulement général de l’intersemestre. Cependant à la différences de mes autres expériences, cette fois je n’avais aucune compétence directement liée au thème du hackathon et à la robotique. Ainsi au final j’appréhendais un peu cet intersemestre car j’avais peur de ne rien comprendre aux différents projets, de brider mon imagination par manque de connaissance et d’être un poids pour mon équipe.

Finalement, lors de la présentation des différents projets j’ai pu identifier celui autour du robot pepper. Il a su attirer mon attention et ne demandait que des connaissances basiques en programmation. Une fois mon projet choisi j’ai pu rencontrer les autres étudiants intéressés par celui-ci, échanger avec eux et former une équipe. Le contact c’est fait assez facilement et rapidement et nous nous sommes directement mis dans le bain. La première journée nous avons pris en main le robot, exploré l’étendu de ses fonctionnalités et commencé à programmer. Nous avons rapidement réalisé que nous pouvions programmer facilement ce robot afin de mettre en place de nombreux scénarios.

Cependant, la programmation par bloc, qui semblait très simple au premier abord, s’est montré par moment très capricieuse. En effet, il est parfois compliqué de comprendre toutes les subtilités d’un bloc déjà programmé car nous n’avons pas accès au code python qui est concrètement utilisé. Ainsi la démarche est devenue assez expérimentale, et nous avons dû tester chaque paramètre des blocs afin d’identifier quelles étaient leur réelle utilité.

Par exemple pour la fonctionnalité de suivi automatique de l’utilisateur, nous avons passez beaucoup de temps à tester différents blocs pythons et différentes configurations avant de réaliser que ça pouvait être faire en utilisant qu’un seul bloc avec les bons paramètres.

Au final le hackathon s’est révélé être une expérience très enrichissante. Cela m’a permis de prendre en main des technologies que l’on ne rencontre pas tous les jours, et d’échanger avec des étudiants spécialisés dans le domaine de la robotique. Découvrir le robot Pepper m’a fait prendre conscience de toute les possibilités offertes par les robots sociaux. En effet possédant de nombreux capteurs il devient possible de réaliser toutes sortes de scénarios. L’imagination et les capacités des développeurs semblent n’être presque que les seuls limites au développement de nouvelles solutions.

Je tiens à remercier tout particulièrement les professeurs de l’ENSIBS et les ingénieurs de la chaire Maintien@Domicile qui ont été très disponibles et d’un grand soutien pour la réalisation de notre projet. Merci également à toutes les personnes qui ont rendu ce hackathon et cet intersemestre possible. J’espère que l’an prochain d’avantages d’élèves d’IMT Atlantique auront l’opportunité d’y participer.

Ressources

Pour accéder à toutes les ressources (codes, vidéos, photos, manuel d’utilisation) issues de ce Hackathon il suffit de cliquer ici.

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *