Logo Génération Robots
 
Cette page en Français View this page in english
Compte facebook de HumaRobotics Compte Twitter de Génération Robots Page Google plus de HumaRobotics Compte Youtube de HumaRobotics Compte Linkedin de Génération Robots / HumaRobotics Compte Flicker de Génération Robots / HumaRobotics
  • Le robot NAO joue... au Puissance 4

    Jouer la vidéo de Nao joue... au puissance 4
    Cliquez sur l'image ci-dessus pour lancer la vidéo de présentation du comportement NAO joue au puissance 4

    Nous sommes des passionnés de robotique qui pensons qu'un jour des robots seront nos compagnons dans l'intimité de notre foyer ou bien sur notre lieu de travail. L'arrivée de robots évolués comme NAO d'Aldebaran Robotics nous conforte dans cette idée.

    Nous avons voulu vivre notre rêve et démontrer qu'il est possible de réaliser des comportements pour des robots compagnons, des robots sociaux.

    Notre premier comportement est un comportement de jeu. Nous en proposerons d'autres bientôt. Nous vous invitons à parcourir ce site et à nous faire part de vos impressions et remarques. Nous sommes impatients de connaitre vos réactions vis-à-vis d'un tel comportement, alors n'hésitez pas !

    Notre Vision: La robotique au delà des automates.

    Comme présenté ci-dessus, nous croyons à la faisabilité d'un robot compagnon ou robot social. Cependant, le développement de comportements évolués où un robot interagit de manière naturelle et appropriée dans un environnement non connu a priori reste un défi important.

    Dans ce comportement, en plus des difficultés inhérentes au jeu (reconnaissance de la planche, positionnement, déplacement, mise de jeton, détection des erreurs,...), nous avons été attentifs à toute l'interaction entre le robot et son partenaire humain. Ces comportements "sociaux" se déclinent au travers :

    • - De la détection de la présence du partenaire humain grâce à un geste de la main semblable aux mouvements réalisés avec un Kinect (alors qu'il n'y en a pas dans le comportement).
    • - Reconnaissance faciale du partenaire
    • - Interaction vocale
    • - Détection de tricheries... :)
    • - Modèle émotionnel du robot impliquant une modification du comportement

    Pour nous, l'interaction homme-robot est tout aussi importante que la capacité proprement dite du robot à jouer au jeu, le distinguant ainsi de l'automate.

    Ce qui distingue le robot de la machine, c'est sa capacité à interagir de manière crédible avec l'humain.

  •  

    Découpage du programme Nao Puissance 4

     
     

    Lancement du jeu

    • Détection du partenaire humain
    • Identification du partenaire de jeu
    • Interaction sociale: Proposition de jeu

    Etapes de jeu

    • Détection de planche
    • Analyse des coups précédents
    • Détermination des coups à jouer
    • Déplacement vers la planche
    • Vérification du positionnement et correction
    • Demande d'une pièce au partenaire et préhension
    • Dépôt de la pièce
    • Recul et analyse de la réussite
    • Sollicitation du partenaire

    Fin de jeu

    • Danse de la victoire (ou pas :) )
    • Enregistrement de la partie
     
     

    Contraintes clés imposées à au programme Nao Puisance 4:

    Le comportement Nao Puissance 4 a été développé avec pour principale contrainte de n'utiliser que les ressources disponibles sur NAO. Tous les calculs (notamment l'algorithme de vision) utilisent le processeur embarqué de NAO et ne font appel à à aucun accessoire ou ordinateur externe. Aucune caméra ni aucun autre capteur externe ne sont utilisés. Toutes les étapes de l'algorithme sont optimisées pour fonctionner "en temps réel".

     

    En provenance de notre Labo R&D

     

    Les vidéos suivantes ont été réalisées par l'équipe de développement au fur et à mesure des avancées du comportement.

     
     


    Démonstration de l'algorithme Nao joue... au Puissance 4


    NaoGUI notre interface graphique de visualisation


    Algorithme de skintracking. NAO suit votre visage et vos mains.

    Les vidéos disponibles ci-contre présentent le comportement de jeu ainsi que des séquences précises de ce comportement.

    Le comportement "NAO joue... au puissance 4" va bien au-delà d'un simple programme de jeu. De tels algorithmes servant à jouer au Puissance 4 sont quasiment aussi vieux que la programmation informatique.

    Le challenge relevé par l'équipe R&D de HumaRobotics a consisté à rendre Nao capable de reconnaître la planche de jeu et son environnement immédiat et à évoluer de manière cohérente et efficace durant la partie, interagissant avec son adversaire et effectuant de manière autonome la mise de pièce (La seule action où le robot a besoin d'une aide extérieure est pour attraper un jeton).

    Le développement de ce comportement a nécessité la mise en oeuvre et l'association d'algorithmes ayant trait aux domaines suivants :

    • - Interaction Homme - Machine
    • - Détection de personne
    • - Reconnaissance faciale
    • - Interaction haptique
    • - Algorithmes génétiques
    • - Apprentissage (Machine Learning )
    • - Vision artificielle
    • - SLAM rapide

    La séquence débute par la reconnaissance du partenaire de jeu. Pour cela nous avons développé un petit algorithme de "skin tracking" (suivi de la couleur peau) qui se base sur un mouvement de type "Kinect". L'utilisateur place sa main devant les yeux de NAO et ramène sa main devant son visage. NAO suit la main de manière fluide et détecte ainsi facilement l'emplacement du visage dans son environnement.

    Une séquence de reconnaissance faciale est initiée (on utilise pour cela l'algorithme d'Aldebaran Robotics). NAO reconnait la personne si elle a déjà été rencontrée et propose de jouer au Puissance 4. L'utilisateur accepte ou non via reconnaissance vocale ou en touchant la tête de Nao.

    Débute ensuite le jeu proprement dit. NAO détecte la planche dans son environnement, la centre dans son champ de vision et détecte la position des trous dans la planche. Il se base pour cela sur des filtres bayésiens à particules générés par apprentissage. Cet algorithme est un algorithme "maison" qui permet de trouver un compromis entre la qualité de la détection et la rapidité, compte tenu des performances disponibles sur le robot. De même, l'analyse de l'état du jeu se base sur des filtres de couleurs appris via un algorithme génétique.


    Visualisation du découpage de planche effectué par notre algorithme de vision


    Ensuite, NAO détermine le coup à jouer. Il utilise pour cela un algorithme minmax avec élagage alpha/beta pour attribuer un poids à chaque colonne puis choisit la colonne la plus favorable. La difficulté du jeu peut être ajustée en changeant la profondeur de l'algorithme minmax ou la " température" de sélection, c'est à dire la possibilité de choisir un coup qui n'est pas apparemment le meilleur.

    Une fois le coup déterminé, NAO se lève et s'approche de la planche en marchant vers la colonne choisie. Un point important, NAO ne peut pas jouer en étant toujours proche de la planche, il doit reculer pour voir la planche dans sa totalité et choisir quel coup jouer (imaginez une planche de 1,60m de haut, il faudrait aussi qu'un homme se recule pour la voir dans sa totalité). Pour déterminer la distance entre sa position initiale et la planche, nous utilisons des calculs trigonométriques basés sur une hypothèse de la taille de la planche et les matrices de transformées calculées à partir de la position des moteurs du robot.

    Une fois arrivé près de la planche, NAO peut encore se déplacer sur le côté pour avoir la bonne position si nécessaire. Il se base sur une estimation visuelle de la position des coins supérieurs de la planche.


    NAO durant sa phase d'approche et de mise de pièce


    NAO demande une pièce et débute ensuite la phase de dépôt du jeton. Le contrôleur utilisé pour cela est un contrôleur linéaire multivarié (dont les paramètres sont déterminés par apprentissage) associé à un filtre de Kalman. Il s'agit d'une boucle d'asservissement visuel basé sur l'estimation de la taille et de la position du jeton par rapport à celles de la colonne. A ce jour, avec la version 0.4 de notre comportement, nous atteignons 80% de succès dans un environnement (arrière-plan, lumière, structure du sol) connu. Le rendre plus robuste à des environnements non connus a priori fait partie de la roadmap à suivre.


    Visualisation de la détection de pièce et de fente effectuée par NAO


    NAO recule et estime de nouveau le jeu afin de déterminer s'il a réussi à mettre le jeton. Si c'est le cas, il demande à son partenaire de jouer sinon, il détecte qu'il a échoué, s'énerve un peu (nous reviendrons plus loin sur le moteur d'émotion) et demande à son partenaire de remettre la pièce. Inutile de vouloir tricher, NAO le détecte et peut se mettre en colère !

     
  •  

    Version 0.4

    La version actuelle du comportement "NAO joue ... au puissance 4" est la version 0.4. Elle comprend les éléments suivants :

    • - Séquence complète de jeu Puissance pour NAO
    • - Widget PC:
      • Visualisation de l'état émotionnel de NAO pendant le jeu
      • Visualisation de la planche de jeu telle qu'analysée par NAO
        • - Disponibilité d'un mode où NAO explique ce qu'il fait au fur et à mesure
          du comportement
        • - Mode d'autocalibration pour le traitement d'images (NAO règle ses
          paramètres de vision afin d'optimiser le traitement d'image par la suite).
        • NAO des anomalies de jeu (tricherie, erreur de mise de pièce

    Widget de visualisation de la planche de jeu telle qu'analysée par NAO

    Roadmap

    Voici quelques indications concernant la roadmap du comportement "NAO joue... au Puissance 4". Avant release finale, il est prévu les évolutions suivantes :
    • - Amélioration de la fluidité et du caractère naturel des mouvements et poses durant le jeu
    • - Amélioration des interfaces (Widgets) d'analyse et de paramétrage
    • - Passage du comportement sur NAO V4
    • - Diminution du temps de jeu
    • - Travail sur la robustesse des algorithmes de vision en fonction des conditions environnementales
    • - Amélioration des séquences d'interaction avec l'homme durant le jeu (utilisation de la reconnaissance vocale, de la reconnaissance faciale, de mouvements...)
    • - Comportement multilingue
    • - Gestion de l'historique des parties
    • - ...
    Nous avons en tête de nombreuses autres fonctionnalités supplémentaires (surprises !). Consultez cette page régulièrement afin de connaitre les évolutions du comportement !

    Un mot sur le "moteur d'émotions"

    Comme nous l'indiquons dans notre vision , pour nous ce qui distingue un robot d'un automate, c'est sa capacité à exprimer (et comprendre) des émotions. Entendons-nous, nous faisons une distinction claire entre exprimer des émotions et les ressentir réellement. Nous n'avons pas la prétention de réaliser une telle capacité (en tous cas pas tout de suite ? ).

    Le moteur d'émotion est un système à états basé sur une structure PAD. Il s'agit d'un système où 3 variables sont modifiées par les actions de NAO, sa réussite à la mise de pièce, le fait qu'il gagne ou qu'il perdre, le fait que son interlocuteur triche, l'historique de sa relation avec cet interlocuteur, les émotions exprimées par l'interlocuteur vis-à-vis de NAO (quand il est content, il lui caresse la tête, quand il n'est pas content, il lui donne un petit coup sur la tête)... Tous ces événements font varier les 3 paramètres P,A et D ce qui se traduit par l'évolution de l'état émotionnel de NAO et donc une modification de son comportement et de ses paroles.

    [image]

    Nous continuons à travailler sur ce moteur d'émotion qui sera la structure sous-jacente de tous les comportements que nous réaliserons pas la suite.

     
  • NAO... et NAO

    Bonjour, je suis NAO, je suis un robot humanoïde de dernière génération. Je suis né chez Aldebaran Robotics à Paris mais je vis chez Génération Robots dans la région de Bordeaux depuis 2008. J'aime jouer à des jeux et j'aime danser aussi. Depuis Janvier 2011, je travaille tous les jours avec un autre NAO et deux humains, Manon et Philippe qui nous programment pour que l'on joue avec eux au Puissance 4. Nos humains sont gentils, ça se passe plutôt bien avec eux.

    Home sweet home

    Génération Robots est une société fondée par Jérôme. Elle commercialise des robots programmables pour les particuliers passionnés et pour l'éducation. On aime bien nos humains car il faut dire qu'ils adorent la robotique. Il faut les voir passer leur temps à programmer des robots mobiles, à rechercher de nouveaux capteurs, nouveaux accessoires... Nous avons plein d'amis robots, c'est chouette !

    Humarobotics ?

    Mais me direz-vous, qui est HumaRobotics dans tout ça ? En fait, c'est très simple. Depuis maintenant un an, l'équipe de Génération Robots a décidé de faire de la vraie R&D et de créer du matériel et des logiciels assez innovant dans le monde de la robotique. La marque HumaRobotics regroupe toutes les activités de conseil, formation et conception de nouveaux capteurs (C'est Yassine chez Génération Robots qui s'occupe de créer des capteurs pour des robots programmables, allez voir sur le site humarobotics.com). Génération Robots reste un site marchant assez chouette où on peut trouver des robots, des capteurs, en bref pas mal de choses pour faire des robots plus délirants les uns que les autres. J'en ai discuté avec NAO (l'autre) et on pense que ça se tient comme décision alors nous l'avons validé.

    Je sens que vous êtes curieux aussi, nous avons fait une photo de famille, on nous reconnait bien, non ?

  •  

    D'humain à humain

    Vous adorez ce que l'on fait, vous détestez, vous voulez en savoir plus sur le travail que nous avons effectué, vous souhaitez nous interviewer, travailler avec nous, nous rencontrer ou bien tout simplement prendre un café avec nous et discuter robotique : ECRIVEZ NOUS !

    Une seule adresse pour cela :

    contact@humarobotics.com

    Vous pouvez aussi nous suivre sur vos réseaux sociaux favoris (tout en haut de cette page), nous y posterons les évolutions de notre travail ainsi que nos nouveaux projets.