Poppy à la Japan-Expo à Paris


#1

Du 2 au 5 juillet aura lieu la Japan-Expo au parc des expos de Villepinte à Paris. Ca se déroule malheureusement en même temps que Innorobo mais j’imagine qu’au moins un des Poppy sera sur place.
J’y emmène ma version de Poppy pour la confronter au public et essayer de nouvelles choses… notamment ne plus le laisser assis sur la table et lui faire faire quelques pas.
Ce sera sur le stand de l’association Caliban qui apparemment réserve de belles surprises cette année :smile:
Je ferai une piqure de rappel avant.


#2

Voici un debrief de la Japan-Expo sur le stand Caliban.

C’est toujours un salon très original qui traite de la culture japonaise, des mangas, des jeux vidéos… On y croise des Link, des Mario, des Assassin’s Creed ou autre Lara Croft…On ose tout. La culture japonaise implique forcément un espace dédié à la robotique. Cette année, c’était près de 300m².
Le salon dure 4 jours, les jeudi et vendredi sont en général assez légers en fréquentation. Par contre, les samedi et dimanche sont un vrai marathon pour les robots comme pour les exposants. Cette année, c’est 250 000 visiteurs qui ont été sur le salon.
Le but de ce salon n’est pas de conclure des marchés et d’acheter des puits de pétrole, c’est clair mais plutôt de :

  • Tester le robot devant un public conquis d’avance
  • Faire de la pédagogie sur ce que peut et ne peut pas faire un robot à l’heure actuelle.

Pour ce salon, j’avais quatre animations différentes que je présente ici, ça peut donner des idées :

Contrôle de la tête de Poppy via Leap-Motion

Ici, le but était de controler la tête du robot uniquement avec une Leap-Motion. Je récupère le tangage et le lacet de l’index, et je l’envoie directement sur les deux moteurs de la tête.
Voici le code assez simple :

# -*- coding: utf-8 -*-
"""
Created on Fri Jun 19 22:25:00 2015

@author: Thomas
"""
import Leap
import pypot.robot
import time

c = Leap.Controller()
r = pypot.robot.from_json('full_poppy.json')
r.start_sync()
r.head_z.compliant = False
r.head_y.compliant = False
r.head_z.moving_speed = 0
r.head_y.moving_speed = 0

while True:
    frame = c.frame()
    
    for f in frame.fingers:
        if f.type == f.TYPE_INDEX and f.is_valid and f.is_extended:
            pitch = f.direction.pitch
            yaw = f.direction.yaw
            r.head_z.goal_position = -2.0*yaw*180.0/3.14
            r.head_y.goal_position = -2.0*pitch*180.0/3.14
    time.sleep(0.02)

J’ai été très étonné du temps de réponse. Je pouvais donc utiliser le robot pendant que tout le reste du corps refroidissait (s’il y avait besoin).
J’étais souvent en embuscade à faire le marionnettiste, suivre les gens du regard, ou suivre leur mains quand ils l’agitaient ou bien répondre par oui ou non aux questions qu’ils posaient (là ils étaient très souvent surpris :smile: )

Contrôle du corps via Leap Motion

Ici, le principe est le même mais le robot est assis. Avec l’index de la main gauche, je contrôle la tête de Poppy de la même manière qu’au dessus et avec la position de ma main droite, je pilotais la position de la main droite. C’est le mode marionnette “Tatayet”. Ici, le code est plus complexe puisque le corps du robot était soumis à différentes contraintes géométriques, dépendant de la Leap-Motion. C’est ce code que je compte mettre au propre pour faire le soft FIRE.
Bon, avec ce mode, j’étais du coup capable de toucher les gens avec les mains en plus de jouer avec la tête.
Les gens étaient surpris quand le bras bougeait. L’autre activité intéressante est quand je donnais aux enfants la Leap Motion pour qu’ils manipulent. Souvent, les vitesses maximales des servos étaient atteintes… Mais ça a eu un effet très hypnotique sur certains qui se sont mis à me poser des questions sur le langage Python etc…
Pour l’occasion, j’avais aussi utilisé la librairie pyttsx pour faire parler le robot… mais nous étions à côté de deux stands de jeux musicaux comme si on avait un concorde prêt à décoller en permanence à côté (oui j’exagère…) donc c’était assez inutile.

La marche

Enfin je pouvais répondre à la question “Est-ce qu’il marche ?” à partir du samedi. J’avais utilisé l’algorithme que j’utilisais à l’époque de mes premiers robots (si contact sol, je passe l’autre pied devant en éteignant l’articulation du genou) Malheureusement, il faut tenir le robot par les mains…
Le code est le même que celui qui fait bouger les bras et la tête, j’avais tout intégré dans un seul soft.

Video de Poppy à la Japan Expo

Conférence “Robot : science ou fiction”

Dans le cadre du salon, il nous est demandé de faire une présentation généraliste de l’état de l’art en robotique. Pour l’occasion, j’ai fait une présentation centrée sur les frères Capek (Josef et Karel) qui ont créés le mot “Robot” dans la pièce de théâtre RUR dont j’avais eu l’occasion de jouer quelques extraits.
Les questions sont souvent les mêmes :

  • Pourquoi humanoïde alors que R2D2 peut faire plus de choses de C3PO ? (Le robot d’Interstellar a été aussi beaucoup cité… C’est pourtant un robot armoire…)
  • Est-ce que Skynet va arriver ?
  • A quand une IA comme Glados (Iron Man)
  • Vaut il mieux une IA centralisée ou des robots en essaim ?
  • Quels-sont les problèmes éthiques liés à la robotique ?
  • Pourquoi ne pas mettre directement les 3 lois d’Asimov ?

Bilan

Au bilan, par rapport aux autres robots que j’avais présenté avant, Poppy a tenu largement le choc. Il a perdu 3 vis à l’épaule, des faux contacts sont apparus sur les hubs Dynamixel. Les deux premiers jours de canicule, la clim était en panne… Le robot est monté jusqu’à 65deg dans le moteur abs_y mais je l’ai laissé reposer. Les deux derniers jours, la clim était là et le robot se maintenait au max à 55deg, avec une pointe à 60deg dans le cou (un enfant qui faisait du headbang :pensive: )
En revanche, j’ai eu une ribambelle de “checksum error” qui ont été amplifiés par le faux contact. Je vais re-tester si les checksum errors étaient dûs uniquement au faux contact.


#3

Merci @thot pour ce retour super complet. Ça a dû être intense de faire ce salon, j’espère que t’étais pas tout seul pour tenir le stand.

En tout cas, ton projet a l’air de bien avancer et je trouve que ta marche est pas mal du tout. Comment tu détectes le contact du pied au sol ?

L’idée d’utiliser une leap motion pour faire marionetiste est super aussi, t’as des videos qui montrent comment ça marche ?


#4

Super retour @Thot ! Je suis aussi hyper intéressé pour voir le mode de contrôle via Leap-Motion !

N’hésite pas si tu as besoin d’aide pour FIRE !


#5

Non, c’était le stand de l’association Caliban, nous étions une vingtaine d’exposants donc on pouvait faire des pauses.

J’ai mis des nouveaux pieds equipés de FSR pris en sandwish entre la semelle et une plaque solidaire de la cheville. Je vais faire un post avec des photos du pied en question. L’avantage est que quelque soit le point de contact entre le pied et le sol, le capteur le détecte.

Oui, je vais en faire une, il va sans doute en avoir de personnes du stand qui en ont fait.
Un gosse d’environ 12 ans, “petit génie de l’informatique” a compris le code qui fait bouger la tête. Ca peut être sympa pour intégrer ça dans une formation.

Oui, je prépare un ensemble de questions sur pypot :smile:

PS : la video ne s’affiche pas chez moi (Chrome), je vais la remettre en lien.


#6

Bravo pour tout ce travail et un grand merci pour ce retour. Je suis très intéressé par des vidéos et les codes pour le contrôle du robot avec le LeapMotion, cela me semble très très intéressant pour construire des activités pédagogiques, voir les posts dans la section Education du forum. @juju @droy @tibo @Theo @Amandine @Antoine devraient être intéressé j’en suis sûr :slight_smile:


#7

J’ai mis du temps mais je voulais le faire en utilisant FIRE :

Comme vous pouvez le voir, le robot obéit très bien.