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 !
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 :
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.
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".
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 :
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.
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 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.
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. br> Inutile de vouloir tricher, NAO le détecte et peut se mettre en colère !
La version actuelle du comportement "NAO joue ... au puissance 4" est la version 0.4. Elle comprend les éléments suivants :

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.

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.
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 !
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 ?
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 :
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.