Apprendre à un robot à jouer à un jeu pour tout-petit : VLA, Gemini 3 Flash et First Orchard

DEV - 21/02
Lorsque nous réfléchissons à l'avenir de l'IA, nous nous tournons souvent vers la robotique, ou « IA incorporée », comme prochaine logique...

Lorsque nous réfléchissons à l’avenir de l’IA, nous nous tournons souvent vers la robotique, ou « IA incorporée », comme prochaine frontière logique. Il s’agit de chercher à exploiter les capacités de raisonnement des grands modèles linguistiques (LLM) et à les rendre physiquement utiles dans le monde réel.

Cela dit, le domaine de la robotique est vaste. Cela couvre tout, de l'ingénierie mécanique et électrique aux systèmes de contrôle logiciel, en passant par la vision par ordinateur et les mathématiques complexes nécessaires simplement pour gérer les mouvements de base.

Bien que je vienne d'un milieu amateur général d'IoT, je suis toujours en train de me repérer dans le domaine de la robotique. Pour apprendre, j'ai décidé de me lancer dans un projet où je pourrais me lancer tête première dans ces défis et les relever en temps réel. Pour cette expérience, j'utilise un bras robot SOARM101 pour jouer au jeu de société pour tout-petits First Orchard.

Ce projet rassemble deux puissantes composantes d’IA :

  1. Un modèle vision-langage-action (VLA) nouvellement formé pour contrôler les mouvements physiques du robot.
  2. Gemini 3 Flash agit comme le « cerveau » qui suit l'état et les règles du jeu.

Dans cet article, je vais vous expliquer exactement en quoi consiste ce projet, les obstacles que j'ai rencontrés et comment je l'ai construit.

Le jeu : Premier verger

First Orchard est un jeu simple et coopératif conçu pour les enfants de deux ans. Il se compose de quatre tuiles d'arbre circulaires, chacune contenant des morceaux de fruits en bois, d'un chemin composé de tuiles, d'une pièce de jeu de corbeau et d'un dé à six faces.

Les faces des dés comprennent :

  • Quatre couleurs : correspondant aux quatre types de fruits (rouge, bleu, vert, jaune).
  • Le panier : permet au joueur de retirer n'importe quel fruit du plateau.
  • Le Corbeau : Déplace la pièce de jeu du Corbeau d'un pas en avant le long du chemin.

L'objectif : lancer le dé et récolter tous les morceaux de fruits avant que le corbeau n'atteigne la fin du chemin.

La configuration

Pour ce projet, j'ai utilisé une webcam aérienne pour fournir une "vue à l'oeil de Dieu" de la carte et une caméra-bracelet montée sur le SOARM101 pour une manipulation en gros plan.

Pour garder l'environnement cohérent pour le modèle VLA, j'ai collé les tuiles du chemin, les tuiles des arbres et une petite boîte utilisée comme zone de « récolte » où le robot laisse tomber les pièces retirées. Bien que le robot puisse atteindre chaque tuile d'arbre, le chemin du corbeau a été intentionnellement placé hors de portée en raison de l'espace de la table. Pour cette itération du projet, le corbeau est déplacé manuellement par un joueur humain lorsque sa face est roulée.

Collecte de données : la mouture

La collecte de données était, de loin, la partie la plus fastidieuse de ce projet. Après y avoir passé des heures, j'ai un nouveau respect pour les équipes qui collectent des centaines de milliers d'heures de séquences pour former des modèles de fondations.

Au départ, j'avais envisagé deux approches :

  1. Décomposition des tâches : décomposer le mouvement en morceaux plus petits (atteindre, saisir, soulever) et les résoudre via des politiques individuelles ou une cinématique inverse.
  2. Politique de bout en bout : formation d'une politique unique qui gère l'intégralité de la séquence : se déplacer vers le fruit, le saisir, le soulever, se déplacer vers la boîte, le laisser tomber et revenir à sa position d'origine.

Puisque mon objectif était de repousser les limites des capacités du VLA dans un environnement domestique, j'ai opté pour le flux de bout en bout. J'ai défini quatre tâches spécifiques à enregistrer :

  • "Placez les fruits rouges dans la caisse"
  • "Placez le fruit bleu dans la boîte"
  • "Placez le fruit vert dans la boîte"
  • "Placez le fruit jaune dans la boîte"

Je visais 100 épisodes par tâche, pour un total de 400 épisodes. Pour m'en sortir, j'ai monté une émission de télévision et je me suis lancé dans la tâche de téléopérer le bras à l'aide d'une combinaison de robot leader/suiveur.

Voici la commande que j'ai utilisée pour configurer les caméras, les ID de robot et les paramètres de l'ensemble de données :

lerobot-record \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=follower_arm \ --robot.cameras="{ bracelet_cam_left : {type : opencv, index_or_path : 8, largeur : 640, hauteur : 480, fps : 30}, Overhead_cam : {type : opencv, index_or_path : 4, largeur : 640, hauteur : 480, fps : 30}}" \ --teleop.type=so101_leader \ --robot.port=/dev/ttyACM1 \ --teleop.id=leader_arm \ --display_data=true \ --dataset.repo_id=paultr/first-orchard \ --dataset.num_episodes=25 \ --dataset.single_task="Placez le fruit bleu dans la boîte"
Entrer en mode p...
[Courte citation de 8% de l'article original]
Loading...