Sujet Pi² InMoov : Robot Interactif

Le projet Pi², Robot Interactif, s’inscrit dans le projet InMoov de l’association.

La communication est une chose facile pour nous, depuis notre enfance nous communiquons avec notre entourage. En réalité, le langage est un moyen de communication complexe. Pour pallier à cela, il est possible de créer une intelligence artificielle (IA) afin de permettre à l’utilisateur d’avoir une interaction avec le robot.

 

L’Objectif : Permettre à notre humanoïde de communiquer avec autrui.

Les différentes étapes de notre projet sont les suivantes : 

  • Transformer la parole en une donnée.
  • Capter les paroles et les épurer.
  • Convertir en une donnée Traiter les données.
  • Réaliser une conversation (plus de 3 interactions).
  • Réaliser la partie code + Arduino.
  • Faire une série de tests.
  • Incorporer à Inmoov.
  • Synchroniser la conversation avec les gestuelles de l’humanoïde.

Dans le cadre de ce projet, nous nous devons de respecter certaines contraintes : 

  • Ne pas apprendre de langage vulgaire.
  • Rester respectueux.
  • Ne pas laisser de blanc, même si InMoov n’est pas capable de comprendre, il faut le faire comprendre à l’utilisateur.

 

Réalisation :

L’association de robotique du Pôle Universitaire Léonard de Vinci, DaVinciBot s’est lancée dans la construction d’un robot humanoïde, open-source, et entièrement imprimable en 3D nommé InMoov.

Ce-dernier a été conçu par Gaël Langevin, un sculpteur et designer Français, qui a débuté le projet en 2012 en concevant la première prothèse Open source imprimée en 3D.

Basée sur le concept du partage et de l’entraide, une communauté s’est créée autour d’InMoov, permettant à de nombreuses personnes de pouvoir s’initier plus facilement au monde de la robotique et d’apporter leurs propres innovations. Cette communauté, qui n’a cessé de s’agrandir depuis, permet au robot d’être en perpétuelle évolution.

DaVinciBot a réussi à instaurer 3 Pi² (Projet d’innovation Industrielle) dont le but était d’apporter une amélioration au robot. Nous nous sommes intéressés au « Pi² InMoov : Robot Interactif ».

Notre équipe est en charge de permettre au robot d’interagir avec son environnement que ce soit de manière physique et verbale le tout de façon intelligente, en utilisant l’intelligence artificielle dont des réseaux de neurones.

Pour ce faire, nous avons dans un premier temps développé notre propre réseau de neurones, pour reconnaitre des intentions dans des phrases, cependant il n’était pas assez performant et fiable pour une utilisation quotidienne sur le robot. Nous nous sommes donc penchés vers une technique développée par une start-up française, Snips, que nous avons découvert grâce aux Master Class d’intelligence artificielle proposées par Mr Duhart. L’API Snips permet de construire un assistant vocal et de le rendre intelligent grâce aux réseaux de neurones. En définissant des bundles (catégories), des intents (intentions) et des slots (groupe de mots-clefs), il nous est possible d’utiliser leur algorithme de reconnaissance vocale déjà pré-entrainé sur une base de données très conséquente. On peut donc formuler une phrase et, en cas de reconnaissance, récupérer sous format Json les intents et les mots-clefs, avec des probabilités associées dépassant souvent les 50% de correspondance en cas de réussite.

Pour compléter cette première reconnaissance, nous avons développé un algorithme qui relie les différents retours de Snips à la fonction correspondante dans le robot. L’intérêt était de pouvoir actionner certaines fonctions du robot en pouvant utiliser n’importe quel type de phrases qui s’y réfère. Comme il existe dans le langage courant des dizaines de façons d’exprimer la même intention, il était primordial de créer un algorithme qui va compléter le travail de Snips, initialement non conçue pour traiter autant de retours différents.

Un des problèmes majeurs que nous avons dû surmonter était de pouvoir relier tous ces logiciels et composants sur un seul hardware qu’est le robot. Pour ce faire, nous avons créé un pont MQTT qui prend le rôle de client-serveur. Le serveur va écouter les retours de Snips et les transférer au client. C’est dans la partie client que l’on traite ces informations pour obtenir une unique fonction à envoyer au robot. De là, un autre pont TCP est créé pour transmettre l’information vers la Raspberry, cerveau du robot.

L’appel de ces fonctions se fait sur MyRobotLab, un Framework open-source développé en JAVA utilisé par un certain nombre de robot. Il fait office d’interface pour contrôler InMoov, où toutes les fonctions du robot, comme se présenter, serrer la main etc. sont enregistrées.
En somme, nous avons pu changer la manière d’interagir avec le robot InMoov, en lui permettant de comprendre dans des phrases simples et naturelles quelles actions il doit exécuter. En ayant incorporer l’ensemble des éléments nécessaires directement dans le robot et en utilisant des logiciels open-source ou développés par nous-mêmes, notre travail pourra être repris par d’autres passionnés et continué.

Projet réalisé par: Rabah Houaoui, Corentin Lemaitre, Kristóf Szűcs & Rayan Galetta

Laissez un commentaire