Poppy, robot Open Source

Bonjour et bienvenue sur la page consacrée à l’évolution de notre projet : le robot Poppy

 

Voici quelques photos prisent pendant les séances de travail :

 

FB_IMG_1484146245829 FB_IMG_1484146249313  20170601_121931-min12                                 POPPY_3D

La chaîne Youtube présentant quelques vidéos prises durant les séances: https://www.youtube.com/channel/UCKl81J2HIElrVy7R9H43F0A

I-  Projet IUT

1.Description du projet

  • Description générale

Le but de ce projet est de réaliser la construction et la programmation d’un robot Poppy. Ce dernier devra exécuter des mouvements basiques tels que : lever les bras, marcher, s’accroupir… Pour cela, la partie mécanique sera traitée par deux étudiants de Génie Mécanique (GMP). Elle consiste à la création de supports de maintien pour des batteries et à réadapter le centre d’équilibre du robot. En outre, la partie électrique sera traitée par trois étudiants de Génie Electrique (GEII). Elle consiste à la programmation du robot qui sera faite en langage Python via le notebook disponible sur l’interface web du robot. De plus, un circuit de batteries sera inséré dans le robot pour assurer une alimentation autonome de ce dernier.

  • Nos ambitions

Nous avons constaté lors de la construction du robot que le point d’équilibre de ce dernier n’est pas bien centré et donc il ne peut marcher tout seul sans tomber. De plus,  avec son alimentation filaire sur secteur, le câble de liaison crée une instabilité supplémentaire. Nous avons donc l’ambition de lui permettre de se déplacer de manière autonome (c’est-à-dire de lui modifier son point d’équilibre afin qu’il puisse marcher sans accompagnateur et de lui implanter des batteries dans les jambes pour lui permettre de s’alimenter sans être connecté au réseau).

Notre équipe se fixe donc plusieurs objectifs mettant en lien diverses activités liant les domaines mécaniques, électriques et encore de la programmation.

  • Composition de l’équipe et le rôle de chacun

Nous sommes une équipe de 5 étudiants tous en formation apprentissage inscrits à l’IUT de Mulhouse. Elle se compose :

-2 GMP (Génie Mécanique et Productique) qui s’occupent de la partie conception/assemblage et de l’étude de l’implantation des batteries dans le robot et de la gestion du nouvel équilibrage de celui-ci.

-3 GEII (Génie Electrique et Informatique Industrielle) qui s’occupent de la partie programmation/codage et de la configuration des servomoteurs. Ainsi que de l’étude de l’alimentation du robot avec des batteries et prévoir le rechargement de celles-ci.

Bien entendu, il est évident que pour une meilleure progression du projet, la coopération est primordiale. La répartition des activités est variée en fonction des spécialités GEII et GMP des membres du groupe afin de garantir une certaine polyvalence et d’acquérir une expérience et des compétences pour chacun.

Nous avons précisé les activités réalisés ainsi que les ambitions futures dans le suivi d’avancement : Suivi d’avancement 27avril

Les GMP ont rendu un rapport vous permettant d’en savoir un peu plus sur leur activités : Rapport GMP

  • Caractéristiques du robot

Les caractéristiques principales du robot sont les suivantes:

 Alimentation et interfaces de programmation:

– Alimentation: une moyenne de 13V

-Programmation: langage Python

-Interface: programmation via le notebook disponible sur l’interface web du robot

Caractéristiques principales du robot:

-Hauteur: 83 cm

-Poids: 3,5 kg

-Systèmes embarqués : Odroid XU4 avec Ubuntu 14.04

-25 moteurs

-Caméra HD et à grande profondeur de champ.

 

  • Cahier des charges

-Le montage du robot devra être exécuté selon les critères de conception indiqués par le constructeur dans la documentation technique fournie sur internet.

-La nouvelle structure des jambes du robot devra permettre l’amélioration de son centre de gravité.

-Une alimentation autonome devra être conçue et appropriée pour alimenter le robot.

-La programmation du robot devra être fait en langage Python via le notebook disponible sur l’interface web du robot.

2. Analyse fonctionnelle

 

Capture2-1

 

 

Capture-14

 

II-  Réalisation et programmation du robot Poppy

1.Assemblage du robot

Le montage du robot a été fait par l’ensemble de l’équipe du projet.

Ayant reçu le robot en pièces détachées, l’assemblage de ce dernier à pu se faire à l’aide de vidéos tutorielles trouvées sur YouTube (le lien dirige vers la chaîne de Matthieu Lapeyre, sa chaîne présente clairement et simplement toutes les vidéos nécessaires au montage du robot étapes par étapes :  https://www.youtube.com/user/bizounours94/videos).

Lors du montage du robot il était impératif de suivre les recommandations de montage pour minimiser les problèmes liés aux moteurs. En effet, pendant cette période, nous avions aussi par la même occasion configuré les moteurs pour leur imposer une position initiale.

FB_IMG_1484146261777-300x300                                                                                           20170601_093829

Robot en pièces détachées                                                                                                                                                         Robot assemblé

Capture

 

 

 

Lors de l’assemblage, nous devions faire attention à aligner le point du support moteur et le point sur l’axe du servomoteur. Si cela n’était pas respecté, la position zéro du moteur n’aurait pas été cohérente avec l’articulation du robot.

 

 

L’adressage des Dynamixel a été effectué sur Herborist pour les configurer et ainsi leur donner une position zéro et une adresse unique pour les différencier.

2.Programmation

La programmation du robot a été faite en langage python. De plus, les instructions ont été saisies via le notebook disponible sur l’interface web du robot.

Voici l’interface web du robot:

Capture2

Le Robot est connecté sur le réseau en wifi, puis l’accès se fait via le logiciel Putty grâce à une connexion SSH.

Voici l’interface du logiciel Putty:

Sans titre

 

  • Position initiale

Sans un premier temps, nous avons codé les positions initiales du robot grâce à la fonction:   set_goal_position({numéro du moteur: angle})

1

  • Position actuelle

Nous avons ensuite codé la fonction:   get_present_position(dxl_io.scan([numéro du moteur]))

Cette fonction permet de connaître la position actuelle du moteur, et l’angle auquel il est référencé.

Nous pouvons voir tous les angles des moteurs à un moment T, qui sont représentés sur l’interface du logiciel Putty.

2              3

 

  • Positions « garde à vous » et « Accroupi »

4

Ces deux instructions lient plusieurs mouvements de plusieurs parties du corps.

Pour rendre les mouvements plus fluides et moins brutales, nous utilisons des boucles While, qui permettent un changement d’angle progressif. (le moteur bouge de 1° à chaque tour de boucle)

Les instructions à la fin du code servent à exécuter les différentes fonctions du programme.

 

3. Alimentation autonome

Pour créer une alimentation autonome, nous avons opté pour des batteries lithium-ion 18650. Celles-ci présentent un faible encombrement et leur coût est peu élevé.

Caractéristiques des batteries lithium-ion 18650 :

Capture3

Nous avons branché les batteries de façon à avoir  une alimentation d’environs 5A et ayant une tension d’environ 14V. Nous avons opté pour un régulateur de charge qui permettra l’alimentation du robot et la recharge des batteries.

Ce régulateur comme son nom l’indique va permettre de réguler la charge entre les 6 batteries ( 2×3 paires) qui composent une jambe.

 

Schéma électrique du régulateur :

Schéma batteries

 

Nous avons décidé d’intégrer les batteries de la manière suivante :

 

Capture4       20170405_112816-ConvertImage (666666)

Par la suite, nous avons implanté le circuit de batteries dans les jambes du robot imprimées par les étudiants GMP.

20170330_100508-ConvertImage            20170601_121811-min

 

III- Bilan du projet

  • Les difficultés rencontrées

Le projet a connu plusieurs retards et problèmes, de ce fait, nous n’avons pas eu l’opportunité de terminer le projet par manque de temps.

Les problèmes sont apparus durant les toutes premières séances du projet car le robot n’était pas encore livré. Nous avions donc uniquement les documentations trouvées sur internet (nombreuses et parfois incorrectes) pour débuter. Néanmoins, nous avons pu tirer quelques informations utiles tels que les 26 degrés de liberté (à titre de comparaison, le robot NAO en a 25), ainsi que de récupérer des modélisations du robot (CATIA 3D, Solidworks…) qui ont pu servir aux GMP.

De plus, le projet a été une découverte pour l’ensemble de notre groupe ainsi que pour le corps enseignant. Le système d’exploitation Linux ainsi que le codage en python étant nouveaux (ou vague) pour les membres du groupe, il était donc prévisible que le groupe connaisse des difficultés sur le projet.

Nous n’allons pas lister tous les problèmes que nous avons pu rencontrer car ces derniers sont cités plus haut dans le tableau d’avancement.

  • Résultats obtenus

A la fin de l’année, le montage du robot à pu être réalisé (hormis l’assemblage final de la tête, du au besoin d’accès de la carte pour la programmation du robot). Les nouvelles jambes du robot (avec leurs supports intégrés) ont pu être imprimées avec l’insertion des batteries dans ces dernières.

Pour la programmation, nous avons codé des mouvements de base tout en lui assurant une bonne stabilité. Malheureusement nous n’avons pas eu le temps de lui permettre marcher (le code étant très complexe à réaliser, car même le constructeur n’a pas pu nous le fournir).

  • Objectifs réalisés

√  -Montage du robot et vérification du bon fonctionnement des moteurs via herborist

√ -Réaliser la connexion robot/PC via le réseau de l’uha par ethernet et ainsi communiquer avec le robot

√ -Trouver des batteries adaptées aux besoins énergétiques du robot

√ -Permettre la recharge de ces batteries : créer un régulateur qui assurera la fonction sans endommager celles-ci (pour cela effectuer les recherches nécessaires à la conception et au fonctionnement d’un régulateur)

√-Tester le robot avec les fonctionnalités simples comme le » Garde à vous » et « Accroupi »

± -Implanter les batteries dans le robot et lui donner de l’autonomie (marcher sans aide, alimentation sans fil)

 

  • Conclusion

Ce projet nous a fait découvrir un peu plus en détail la robotique et la programmation, depuis sa conception jusqu’à coder ses mouvements. La collaboration avec les GMP a été enrichissante par le biais des transferts de connaissances et de par les relations amicales qui en ont résulté.