Rapport d'avant-projet

Résumé

La section Génie Electrique de Polytech Clermont-Ferrand a besoin de projets ludiques à
présenter lors des portes ouvertes de Polytech Clermont-Ferrand.
Cela va permettre d’attirer les étudiants car la section manquent d’élèves.
C’est dans cet objectif que le projet « Pepper range ses affaires » a été envisagé. Le projet va
aussi permettre d’intégrer des travaux pratiques sur le robot Pepper. Le but de ce projet est
de faire bouger le robot Pepper afin qu’il trouve et range des objets placés dans une zone.
Le projet étant de travailler sur un robot, celui-ci regroupe des matières liées à la robotique,
par exemple la programmation en langage C, en Python ou encore du traitement vidéo.
Cette première partie de projet a permis de savoir comment fonctionnait le robot Pepper
ainsi que de se familiariser avec différents outils de programmation afin que l’on trouve le
plus adapté pour mener à bien notre projet. Nous avons aussi cherché des moyens pour que
le robot reconnaisse les objets et puisse les situer dans l’espace afin qu’il puisse les
manipuler.

Mots clés : robot, programmation, détection d'objet, manipulation.

Abstract

The Electrical Engineering section of Polytech Clermont-Ferrand needs a playful project to be
presented at the open doors of Polytech Clermont-Ferrand. This will attract students because the section lacks students.
It is for this purpose that the Pepper ranks its stuffss has been considered. The project will
also integrate practical work on the Pepper robot. The goal of this project is to move a
Pepper robot so that it finds and stores objects placed in an area.
The project is to work on a robot, it is a group of subjects related to robotics. There are, for
example, programming in C, python or video processing.
This first part of the project allowed us to know how the Pepper robot works and to
familiarize ourselves with different programming tools so that we find the most suitable to
carry out our project. We also looked for ways for the robot to recognize the objects and
place them in space so that they can handle them.

Keywords : robot, programming, object detection, handling.

Remerciments

Nous tenons tout d’abord à remercier M. Sébastien Lengagne, ainsi que l’école Polytech Clermont Ferrand,
pour la proposition de ce sujet permettant l’amélioration de l’image de la section Génie
Electrique de Polytech Clermont-Ferrand ainsi que de pouvoir manipuler un tel robot.
M.Lengagne étant notre tuteur Polytech ainsi que notre client, ceci a été un travail difficile mais
il a toujours été présent pour nous aider, que ce soit dans l’apprentissage des différents
outils mais aussi pour ses précieux conseils pendant ces 3 mois d’avant-projet.
Mme. Isabelle Goi, notre tutrice industrielle, nous a également été d’une grande aide afin de
réaliser des revues de projet les meilleures possible.

Tables des matières

1. Introduction..................................................................................................................................... 1
2. Contexte du projet .......................................................................................................................... 2
2.1 Objectif du client : ....................................................................................................................... 2
2.2 Le robot Pepper :......................................................................................................................... 2
2.3 Cahier des charges :..................................................................................................................... 3
3. Déroulement du projet................................................................................................................ 4
3.1 Choix de l’outil de développement ............................................................................................. 5
3.2 Elaboration des fonctions............................................................................................................ 5
3.3 Choix des objets .......................................................................................................................... 6
4. Les résultats................................................................................................................................. 6
5. Conclusion.................................................................................................................................... 8
6. Bilan personnel............................................................................................................................ 8

Lexique

ArUco : Une bibliothèque pour des applications en réalité augmentée (la
superposition de la réalité et d'éléments, comme les sons, les images 2D et 3D).

Chorégraphe : Un logiciel qui contient des programmes de base sous forme de blocs,
chaque bloc est une fonction, on peut aussi créer des nouvelles fonctions en utilisant
le langage Python.

C++ : Un langage de programmation compilé.

Python : Un langage de programmation compilé.

QR code : Quick Response code.

ROS : Un système d'exploitation pour la robotique, on peut programmer en langage
C++ avec ROS.

SDK : Un ensemble d'outils d'aide à la programmation, il a deux versions, C++ SDK et
Python SDK.

Introduction

Qui n'a pas déjà rêvé d’un robot capable de ranger des affaires pour nous, et bien
c’est la mission qu’on nous a confiée. Nous sommes deux étudiantes en 4ème année en
Génie Electrique à Polytech Clermont Ferrand.
Nous devons réaliser un projet sur 1 an, le sujet de notre projet est donc : « Pepper range
ses affaires ». Notre client est M. Lengagne, qui est un enseignant du département Génie
Electrique à Polytech Clermont-Ferrand.
Il nous a confié ce projet dans le but de pouvoir par la suite intégrer des travaux pratiques
sur le robot Pepper dans le cursus des étudiants du département. Ce projet pourra aussi
devenir l’un des projets exposés lors des portes ouvertes afin d’être la vitrine du
département.
Nous devons donc programmer le robot Pepper afin qu’il dispose différents objets (une
dizaine) dans une pièce et qu’il les trouve et les range à des endroits précis.

2. Contexte du Projet

2.1. Objectif du client

Le client est M. Sébastien Lengagne, un enseignant du département Génie Electrique, il est
donc le représentant du département. Le département Génie Electrique a investi cette
année dans le robot Pepper afin de pouvoir intégrer des travaux pratiques de robotique,
pour les étudiants de 4eme année en Génie Electrique. Ainsi, le robot pourra être
programmé pour réaliser des fonctions afin de présenter le département lors des portes
ouvertes ou de la fête de la science. Le but de notre projet est de programmer le robot avec
différents outils de programmation afin de faire un choix pour savoir quel outil est le plus
simple à utiliser pour les étudiants et qu’il soit performant pour contrôler tous les capteurs
et actionneurs du robot. Pour cela notre projet consiste à faire un démonstrateur avec le
robot Pepper. La démonstration sera de disposer différents objets (une dizaine) dans une
pièce et demander à Pepper de les trouver et de les ranger à des endroits précis

2.2. Le robot Pepper

Le robot Pepper est un robot humanoïde conçu par SoftBank robotics, il possède pas moins
de 20 moteurs voir figure 1, mais aussi 4 microphones, 2 caméras RGB HD, 5 capteurs
tactiles, un écran tactile sur le torse, 1 caméra 3D derrière les yeux, dans les jambes : 2
sonars, 6 lasers, un capteur gyroscopique, 3 roues omnidirectionnelles. Le robot possède 3
articulations dans chaque bras.

2.3. Cahier des charges

L’objectif premier de ce projet est de créer un démonstrateur avec le robot Pepper.
La démonstration consistera à disposer différents objets (10 objets) dans une pièce
et de demander à Pepper de les trouver pour les ranger à des endroits précis.
Le robot devra être capable de contourner des obstacles s’ils sont sur son chemin.

Nous devrons fournir une démonstration fonctionnelle, ainsi que le code documenté
facilement compréhensible par un étudiant en Génie Electrique de 4ème année.
Le robot devra ranger automatiquement les 10 objets qui seront dans la zone Pepper (4m²)
en 5 minutes à la fin du projet soit à la fin du mois décembre.
Après quelques recherches, nous avons remarqué que ce robot pourrait avoir quelques difficultés
quant à prendre des objets. En effet, celui-ci ne peut pas prendre un objet qui se situe au sol
ou encore qui serait trop haut. Nous avons donc décidé que les objets se situeront à hauteur de table.
Nous avons aussi remarqué que le robot a une limite très faible concernant les objets qu’il peut prendre dans ses mains.
Nous avons donc décidé que les objets ne devront pas dépasser les 400 grammes.
Nous avons néanmoins quelques exigences du client comme celle de faire tous les tests en simulation au préalable.
Mais aussi que tous les tests sur le robot doivent être faits en présence d'un responsable (un professeur du département Génie Electrique).
Nous devons aussi filmer tous les tests sur le robot réel, en effet ces contraintes nous permettent
de pouvoir avoir des preuves si jamais il y a des dysfonctionnements avec le robot ou si on réalise une mauvaise manipulation.
Tout cela a pour but d’éviter d’endommager le robot et de pouvoir le réparer si jamais cela arrive.

3. Déroulement du projet

Pour que le robot puisse ranger ses affaires, nous avons décidé de séparer notre projet en trois grandes parties (annexe 1).
Tout d'abord, on doit être capable d'utiliser les différents capteurs et actionneurs du robot.
Pour cela nous devons faire un choix quant à l’outil de développement que nous allons utiliser.
Il y a trois outils permettant de réaliser le contrôle de ceux-ci, Chorégraphe, SDK (C++ ou Python) et ROS.
On doit faire un choix entre ces trois outils, choisir lequel est le plus efficace.
Ensuite, une fois l’outil de développement choisi on pourra l’utiliser afin de réaliser des programmes
informatiques qui permettront de commander les actionneurs et les capteurs du robot.
Enfin, la troisième partie consiste à choisir une méthode ou des objets spécifiques pour que le robot les reconnaisse et les localise.

3.1. Choix de l'outils de développement

Dans un premier temps, nous avons étudié les différents outils de développement que nous pouvions utiliser.
Avec l’aide de notre tuteur industriel nous avons donc pris en main les outils de développement.
Nous avons commencé par prendre en main simultanément ROS et Chorégraphe. Nous avons donc appris à utiliser ces outils,
nous avons créé des fonctions avec ces outils, comparer les temps utilisés avec chaque outil,
et aussi trouver la limite de ces outils, voir si ces outils nous permettent de réaliser toutes les fonctions dont on aura besoin.
Nous n’avons malheureusement pas réussi à utiliser le SDK (C++, PYTHON).
Nous avons passé beaucoup de temps après avoir réalisé l’installation afin de programmer une petite fonction qui est fournie avec le tutoriel
or il manque beaucoup d’information sur cet outil pour qu’on puisse l’utiliser correctement.
C’est pour cela que l’on peut constater un retard dans notre Gantt prévisionnel (annexe 2),
nous ne pensions pas perdre autant de temps sur la prise en main de cet outil.

3.2. Élaboration des fonctions

Ensuite, une fois la prise en main des outils ROS et Chorégraphe nous avons pu commencer à réaliser quelques fonctions
de base permettant d’utiliser quelques actionneurs du robot. Nous avons pu programmer grâce à ces deux outils pour contrôler les membres du robot.
Ainsi nous avons réalisé une application à l’aide de chorégraphe pour les journées portes ouvertes,
cette application consiste à faire de la reconnaissance faciale, nous l’avons mis en place lors de la journée
des portes ouvertes et cette application a permis de représenter le département du Génie Electrique.
Mettre en place cette application nous a aussi permis de contrôler le robot grâce à cet outil.
Lorsque nous avons commencé à utiliser ROS pour faire déplacer le robot grâce à ses roues,
nous avons eu quelques problèmes techniques qui ne n’étaient pas de notre ressort.
En effet le constructeur de ce robot indique qu’il est possible de le contrôler grâce à ROS
or une erreur est survenue à chaque test réalisé pour le déplacement. Le robot se bloquait et ne voulait plus se déplacer.
Cette erreur nous a bloqué et nous a fait perdre beaucoup de temps alors que celle-ci n’était pas de notre ressort.
Nous avons finalement réussi à contourner l’erreur en contrôlant la tête du robot en lui donnant une position fixe,
ce qui est censé être réaliser automatiquement si celle-ci n’est pas programmée pour réaliser une tâche. Comme inscrit dans le Gantt,
nous avons passé du temps pour résoudre cette erreur et cela a eu une répercussion sur le reste des tâches prévues.

3.3. Choix des objets

Pour ce qui est du choix des objets, nous avons fait des recherches sur la capacité du robot à prendre des objets.
Nous savons qu’il ne peut pas se baisser et prendre un objet situé au sol ou même en hauteur. Il est aussi limité par la masse de l’objet,
celle-ci ne doit pas dépasser 400 grammes. Nous avons donc fait des choix sur sa masse et son volume, il doit pouvoir être tenue dans sa main.
Pour ce qui est de la reconnaissance des objets nous avons pensé à des QR codes,
grâce à eux le robot sera capable de reconnaitre et donc de différencier les objets mais aussi de les situer dans l’espace.
On peut voir figure 4 un exemple de QR code que l’on pourrait utiliser et coller sur un objet afin que le robot le reconnaisse en utilisant ArUco.

Les objets peuvent aussi être choisis en fonction de leur forme, comme par exemple des sphères, des carrés ou encore des cylindres. Mais ils peuvent aussi être choisis par leurs couleurs.

4. Les résultats

Pour ce qui est des résultats nous avons fait le choix de prendre comme outil de développement ROS.
En effet, après une étude des autres outils nous avons pu faire un bilan voir figures 5,6 et 7,
et faire le point avec toutes les études réalisées autour de ces outils. Nous avons ainsi pu conclure
que l’outil ROS était celui qui pouvait répondre à toutes nos attentes et qui permet de contrôler tous les actionneurs et
récepteurs que l’on a besoin pour mener à bien notre projet.

Pour ce qui est du choix des objets, nous avons décidé de coller des QR codes afin que le robot puisse les différencier
mais aussi les localiser dans l’espace ainsi lorsque nous allons réaliser le programme pour que le robot prenne un objet.
Cette tâche sera plus facile à mettre en place si le robot connait la position de l’objet.
Nous avons réalisé quelques programmes afin de pouvoir contrôler les membres du robot avec les deux outils utilisés,
nous avons réalisé plusieurs tâches que nous avons détaillées dans un tableau voir figure 8 dans lequel on peut voir le temps estimé
et le temps réel passé sur ces tâches. Les plus grands écarts de temps sont pour le temps passé sur la reconnaissance faciale car
nous pensions tout d’abord réaliser une simple tâche, alors que nous avons dû la modifier,
la perfectionner pour que cela devienne une application utilisable lors de la journée portes ouvertes.
Cette application a bien été terminée à temps car nous l’avons utilisée lors de la journée des portes ouvertes.
Le deuxième écart est la tâche concernant le déplacement du robot soit la commande de la base du robot,
comme dit précédemment nous avons rencontré une erreur qui nous a fait perdre énormément de temps.

5. Conclusion

Pour conclure, au niveau technique nous avons réussi à réaliser les missions que nous nous sommes confiées
même si nous avons pris du retard sur quelques tâches. Nous savons qu’il nous reste encore beaucoup de travail pour mener à bien notre projet.
Notre objectif pour la rentrée est de pouvoir réaliser les tâches que nous avons prévu sur le Gantt soit la locomotion autonome,
la reconnaissance d’objet et la saisie d’objet. Pour cela nous devrons travailler sur ArUco pour la reconnaissance d’objet à l’aide des QR codes.
Nous devrons donc utiliser comme outil de développement ROS pour réaliser tous les programmes et faire ranger à Pepper ses affaires.

6. Bilan personnel

Ce projet nous a permis d’étudier des outils de programmation différents, nous nous sommes donc auto-formées sur ces outils,
nous avons aussi appris à faire des choix. Nous avons appris à rédiger des rapports, ainsi qu’à présenter notre travail.
Nous avons aussi dû travailler en équipe et s’organiser pour pouvoir être à jour et ne pas prendre de retard.
Nous avons aussi estimé le temps des tâches à effectuer sachant que ceci est pour nous la chose la plus difficile car c’est une première pour nous.
Mais nous n’avons pas fini d’apprendre car notre choix pour l’outil de développement étant effectué,
nous devrons concevoir les différentes fonctions que devra réaliser le robot, les programmes de ces fonctions devront être commentés
de façons à ce que le programme soit facilement compréhensible par des étudiants de 4eme année.
Il nous faudra donc être très précis quant à la rédaction de ceux-ci.

pep2.jpg (58.6 KB) Maeva Garcia, 10/13/2017 08:34 AM

Image1.jpg (6.86 KB) Maeva Garcia, 10/13/2017 09:03 AM

pep1.png (7.13 KB) Maeva Garcia, 10/13/2017 09:06 AM

pep2.png (5.38 KB) Maeva Garcia, 10/13/2017 09:07 AM

pep3.png (3.7 KB) Maeva Garcia, 10/13/2017 09:07 AM

pep4.jpg (64.4 KB) Maeva Garcia, 10/13/2017 09:15 AM

Pep.png (139 KB) Maeva Garcia, 10/13/2017 09:27 AM