Poppy building at the Arts et Métiers school

Hello, I just received a copy of Poppy !!!
I’m in a graduation project at the Arts et Métiers school in Paris, and I will dedicate these next 4 months in the handling of the robot.

1 Like

@Matthieu, I just finished unpacking the Poppy ! :smiley:

I found a picture that you recently published and I do not recognize some parts, can you confirm this from my montage if we have or not the latest version (is your picture showing the latest version ?).

Orange, my Poppy’s hips are the same as those of the Red Poppy built in the Cité des Sciences in March (version 1 or 2 anyway?) while they are in three parts with you (we have a “structural piece” missing from the printer that we’ll receive in the week but we don’t know which one).

Green, it is the “small parts”, we have less than you …

Finally, according to the parts list that I downloaded (in a recent post), it seems that the only missing piece is the knee_bumper (doesn’t look like a “structural piece” …).

If I understand correctly, there is still no passive feet with springs?

Edit : Every reason to believe that the missing piece is a second white piece (3D printed), the “structural piece” (Connector HN07-N101_FR05-S101).
The FR05-S101 (metallic from Robotis) part would be a provisional solution.

Welcome @Timothee ! We are eager to follow you progress in images !

So you have the beta version which is indeed a old one, the same as the one has the cité des sciences.

On the picture I posted, it is the new pelvis. So you should have for the pelvis assembly:

  • the pelvis part you have in “orange”
  • 2x the small printed part you display on the second picture
  • 2x FR07-S101
  • 2x FR07-H101
  • 2x HN07-I101 Set

For the shoulder you need:

  • 2x HN07-I101 Set
  • 2x FR07-H101

For the “double rotation”, where you have two motors assembled together (abs and chest), you will have the classic robotis assembly rather a new one involving 3D printed parts (smaller and cheaper).

Per double rotation:

  • 1x FR07-B101K Set
  • 1x FR07-F101K Set
  • 1x FR07-S101 Set

In the final version (1.0), all parts have changed, but there is a lot of minor changes.
When you will want to upgrade to last version, you could upgrade only the major change i.e the pelvis, the head and the feet.

PS: The knee bumper is not very important, on our Poppy it is self made with cutted rubber band.

Poppy’s back … again :wink:

Hello every one !
Think about dressing your Poppy, we found amazing stuff at [Zara Kids (at least in France)][1] hope you enjoy the new look !

My Poppy is allright !

Poppy is posé

The clothes are for 9/12 months kids, it fits allright but may be better for large moves in 12/15 size.
[1]: http://www.zara.com/fr/fr/enfants/bébé-garçon-(3 mois - 3 ans)/acheter-le-look-c466006.html

3 Likes

Hi, very beautiful look, congratulations !

Can you give us feedback about the whole process of assembly? What was easy, difficult, lacking documentation?

Hi Timotee, now your beautifull Poppy misses only a hat… and some Python programs :wink:
Sylvain is still working at ENSAM Bordeaux to publish soon his complete documentation on Poppy’s assembly : you two can exchange view points on this experience.

@oudeyer:
Sorry for the not an answer last month.
Poppy harware : version 0.1

Assembly : Nothing much difficult but we received an incomplete kit, the printed connector was single so we had only one leg for a moment and one bearing was missing for the MX-64.
I noticed that some motors can’t be full screwed (ex: top head one) due to the printed pieces space but it won’t be a problem.
Documentation : I had to switch between different topics to study pictures. Wiring schemes are still at different places in the forum be are enough and clear enough to understand how dynamixels work and can be connected with hubs and power units and usb connectors.
Hardware : screw holes for MX-64 in the left or right leg are too small and had to be enlarged both sides.
Software : I have a reccurent error when running the poppytools primitives (arm copy, walking gait, move recorder) that says one of my 2 usb ports is not available or busy when I try to launch another primitive. Can we run a few commands to reinitialise all the communications, stop running thread if it’s the problem ?

Current work

I’m currently working on an inverse kinematics project.
I will probably need the help of talented devs to make it functionnal and incorporable in the Pypot library, that’s why I’m preparing a LaTex document detailing all the process of calculating the robot posture to make one of its end effector (left/right foot/hand) reach a position from an initial position [as you suggested with other student projects possibilities][1]. I’m discovering the LaTex language so it will take a few days before I expose the purpose of the programs needed.

This method calculates all influent motors goal position at each period in a sampled goal displacement for an end effector. If we take the chest as the base referential, we have to determine the position of 10 motors to change the position of a point located on Poppy’s foot.
Constraints will have to be selected through a list of possibilities to make the solution unique at every period. They will be 7 relations at least bitween different motors positions to reach a (x,y,z) position. We could program methods with those options that can be set by default.
Foot’s orientation can be one of these conditions or paralelism with ground and so on…

Wait for the theory doc !
[1]: Idées de projets étudiants/FabLabs autour de la plateforme Poppy

Schéma cinématique de la chaîne "Buste / Pied gauche"

Ce schéma intervient dans le parametrage de Denavit Hartenberg Modifié permettant de relier les coordonnées d’un point du pied gauche de Poppy aux variables articulaires des dix servomoteurs composant la chaine cinématique. On fait correspondre les notations suivantes aux angles des servomoteurs :
q1 => id34 q6 => id11
q2 => id35 q7 => id12
q3 => id33 q8 => id13
q4 => id31 q9 => id14
q5 => id32 q10 => id15

Je suis aussi en pleine réflexion sur le sujet et notamment sur le modèle géométrique direct (des bras). Ce qui est le plus dur c’est de trouver une méthode pour éviter les erreurs de signes tout en ayant un temps de calcul très faible.
Pour inverser le modèle géométrique, je suis plutôt partisant de l’optimisation sachant que cela peut s’élargir à d’autres problèmes.

Et si ça peut t’aider, il y a sympy qui permet de faire du calcul symbolique sous python.

1 Like

Yes ! Peux-tu m’en dire plus sur l’optimisation ? Je pars de l’exemple de la chaine cinématique buste-pied gauche ce qui permet de construire une Jacobienne de taille 3x10 donc non inversible et dont la pseudo inverse n’est pas exploitable à priori.

Mon intuition est pour l’instant la suivante :
Le contrôle consisterait à rendre le système lié (passer d’un espace de solutions de dimension 7 à une solution unique) à chaque étape d’échantillonage durant la trajectoire voulue en introduisant des relations entre les vitesses des moteurs (les plus grossières consistant à conserver les vitesses de sept moteurs nulles et à en faire bouger 3 non coaxiaux).

Je posterai dans la soirée toute la stratégie en détail sous pdf, tous les paramètres DHMs sont déjà identifiés.

Le but du calcul de modèle géométrique inverse par optimisation est de minimiser une fonction de coût. C’est donc en jouant sur l’expression de cette fonction de coût que l’on peut faire ce que l’on veut.
Il faut d’abord avoir la fonction du modèle géométrique direct
x=MGD(q) (on peut aussi sortir dx/dq)
avec:
x le vecteur du bout du pied (dimension 3)
q le vecteur des coordonnées articulaires (dimension 10 dans ton cas)
si t’as le vecteur x_goal, la position que tu veux du pied, alors il faut minimiser ici la distance entre x et x_goal (au carré pour faciliter la tache à l’algo d’optimisation)
Alors il y a une infinité de solutions mais tu peux t’amuser à modifier la fonction de coût pour imposer d’autres contraintes qui t’arrangent.
Il y a aussi un choix à faire dans la méthode d’optimisation (en cours de mon côté).

Un autre avantage de cette méthode est qu’il n’y a pas de problème de singularité.

Inverse_kinematics_poppy.pdf (117.9 KB)

Ce document introduit le concept de la cinématique inverse appliquée à Poppy.
La cinématique inverse permet de déterminer pour une position désirée d’un organe terminal
(nous prendrons l’exemple du pied gauche de Poppy), des positions solutions des servomoteurs du robot.

L’ensemble des étapes de calcul nécessaires à l’obtention des angles cibles
des servomoteurs y est détaillé pour la chaîne cinématique partant du buste jusqu’au pied gauche.

Voici une méthode possible d’exploitation de cette méthode.

J’ai préféré envoyer une photo pour ne pas me casser la tête à faire une courbe à l’ordi je ne suis pas très débrouillard sur Linux, j’utilisais Microsoft Office pour tous mes bidouillages auparavant.
All apologies to my english speaking friends I betrayed.

Il est nécessaire d’échantilloner le déplacement, à chaque pas de temps les positions des moteurs ont changé par conséquent la Jacobienne aussi. En fait on recalcule à chaque fois la Jacobienne et les nouvelles vitesses des servomoteurs pour tangenter le chemin reliant directement la position actuelle et la position désirée, l’inertie du robot dans son déplacement fait qu’on ne part jamais directement parallèle à la direction recalculée.

C’est la méthode que j’ai étudiée et que je viens de présenter sur le pdf.
En revanche je propose de réduire l’espace des solutions en introduisant des relations entre les vitesses des différents moteurs, cela peut produire des mouvements peu naturels c’est pourquoi ces relations devront être paufinées à l’issue des plusieurs essais jusqu’à obtenir des paramètres par défaut pour des types de mouvements et des postures initiales du robot donnés (tout ceci doit être codé).