- Shoggoth Mini est un robot tentaculaire souple qui utilise GPT-4o et l’apprentissage par renforcement pour produire des mouvements naturels et expressifs
- Contrairement aux robots domestiques existants, il est conçu pour pouvoir exprimer son état interne ou ses intentions lors des interactions avec les humains
- L’article décrit en détail l’ensemble du processus, de la conception matérielle au logiciel, en passant par le système de perception par caméra et de contrôle
- Une entrée 2D via trackpad est mappée de façon intuitive au contrôle 3D du tentacule pour améliorer l’utilisabilité, tandis que l’intégration de la vision par ordinateur de pointe et du RL garantit à la fois précision des mouvements et expressivité
- La conclusion propose une réflexion sur l’équilibre entre le caractère vivant du robot, son imprévisibilité et sa compatibilité avec l’humain, ainsi que sur des pistes d’extension futures
Introduction et contexte
- Au cours de l’année écoulée, le domaine de la robotique a progressé rapidement en se combinant à l’ère des grands modèles de langage (LLM)
- Des exemples comme π0.5 ou Tesla Optimus comprennent des commandes en langage naturel et exécutent des actions physiques, mais la plupart restent au niveau de robots fonctionnels
- L’article souligne que, pour rendre l’interaction humain-robot naturelle et transmettre un état interne (intention, attention, confiance, etc.), l’expressivité est essentielle
- Inspiré par une lampe au style Pixar (Apple ELEGNT) et par des SpiRobs qui paraissent étrangement « vivants » avec des mouvements très simples, l’auteur s’intéresse à la différence entre une expressivité conçue intentionnellement et une impression de vie émergente
- C’est dans cette optique qu’a commencé la fabrication de Shoggoth Mini, avec un partage du processus de conception, des expérimentations et des enseignements tirés du hasard
Matériel
- La première version du banc d’essai part d’une structure simple composée de 3 moteurs, d’une plaque pour fixer le tentacule et d’un capot en forme de dôme
- Pendant l’impression 3D, une pénurie de filament a produit une différence de couleur sur une partie du dôme, donnant naissance à une sorte de visage avec des yeux et une bouche ; l’auteur a ensuite exploré des esquisses visuelles avec ChatGPT pour fixer la forme finale
- Une caméra stéréo est montée sur le dôme pour suivre le tentacule, et les « erreurs de prédiction » des yeux du robot produisent un effet qui attire le regard
- La conception avec bobine ouverte avait pour défaut de laisser les câbles se détacher et s’emmêler facilement ; l’ajout d’un simple cache de bobine a résolu le problème et accéléré les itérations expérimentales
- Un script de calibration et l’ajout de longueurs de fil de réserve permettent d’accélérer la maintenance et l’ajustement de la tension des moteurs
- Pour réduire l’affaissement du tentacule, l’« épine dorsale » a été réglée avec une épaisseur appropriée
- Le plan d’assemblage CAD comme les fichiers STL pour l’impression 3D sont publiés dans le dépôt GitHub
Contrôle manuel
- Au départ, l’auteur a simplifié le contrôle de la longueur des 3 tendons en une commande 2D, afin de permettre un pilotage intuitif du tentacule via trackpad
- Chaque tendon possède une direction principale dans le plan 2D, et la variation de longueur nécessaire est calculée en projetant le vecteur de direction du curseur sur chaque axe pour obtenir la tension requise
- Une valeur positive signifie un raccourcissement du tendon, une valeur négative un allongement
- Cette conversion 2D→3D est également réutilisée comme couche de projection de référence pour le contrôle automatisé, notamment en apprentissage par renforcement
- Malgré une plage de manipulation limitée, le contrôle reste intuitif et améliore nettement la réactivité ainsi que l’expérience utilisateur
Conception du système
- L’architecture de contrôle est hiérarchique, avec deux niveaux :
- Au niveau bas, des politiques open loop (par ex.
<yes>, <shake>) et des politiques RL en boucle fermée (par ex. suivi du doigt) exécutent les mouvements, tandis qu’un pipeline basé sur la vision stéréo assure le suivi de la pointe du tentacule et de la main
- Au niveau haut, GPT-4o traite en temps réel la voix et le texte (la vision n’est pas encore publiée) ; les événements vidéo, comme un signe de la main, sont transmis à GPT-4o sous forme d’indices textuels pour décider des appels API
- Plutôt qu’une intégration directe end-to-end de type vision-langage-action (VLA) fondée sur un grand modèle, le système adopte une architecture en cascade faite d’une vision spécialisée et de contrôleurs individuels allégés
- L’ajustement de l’espace d’observation du RL, un retour au point d’origine naturel et l’application d’un état idle entre les appels API (mode « respiration ») renforcent la sensation que le robot est « vivant »
- En raison des limites pratiques des VLA, comme les problèmes de recalage temporel, le prompt engineering joue un rôle important
Perception
- Le suivi de la main s’appuie sur MediaPipe, combiné à un jeu de données personnalisé et à un modèle YOLO pour le suivi de la pointe du tentacule
- Le jeu de données a été enrichi et annoté plus précisément à l’aide du clustering k-means, de l’auto-labeling et de l’active learning de Roboflow, ainsi que de Segment Anything
- L’entraînement a été réalisé avec Ultralytics YOLO, et un notebook DeepLabCut a servi à estimer les paramètres intrinsèques et extrinsèques des caméras et à mettre en œuvre la triangulation 3D
- Le suivi en temps réel des positions 3D de la main et du tentacule permet un contrôle en boucle fermée robuste
API de contrôle bas niveau
- Contrairement aux robots rigides, la cinématique inverse s’applique mal aux robots souples ; l’approche de projection du contrôle 2D est donc utilisée de manière cohérente
- L’épaississement de l’« épine dorsale » améliore aussi la reproductibilité des mouvements d’une session à l’autre
- Des expériences comme la préhension d’objets mettent en évidence la robustesse mécanique propre aux robots souples, capables d’absorber des variations de forme et de poids des objets saisis
- Les micromanipulations à haute fréquence restent difficiles, mais les manipulations de base se révèlent étonnamment stables grâce à la seule conception mécanique
Apprentissage par renforcement (RL)
- Le RL a d’abord été appliqué à des politiques simples comme le suivi du doigt de l’utilisateur ; la simulation MuJoCo avec randomisation dynamique (PPO, MLP, frame stacking, randomisation de la masse, du frottement et de l’amortissement) améliore le transfert sim-to-real
- Au début, l’espace d’action utilisait directement la longueur des tendons, mais cela a conduit à du reward hacking et à un échec du transfert dans le monde réel
- En limitant l’action via l’approche de projection 2D, les comportements irréalistes (instabilité, vibrations, etc.) sont réduits, et le curriculum learning ouvre la voie à une extension progressive vers des dimensions plus élevées
- Pour compenser le jitter provoqué par des changements d’action brusques, une pénalité a été ajoutée à la récompense, avec un lissage des actions par EMA
Conclusion et perspectives
- Au départ, l’imprévisibilité et la place laissée à l’interprétation donnaient une impression de « vivant » ; mais à mesure que le système a été analysé et intériorisé, la fraîcheur du feedback s’est peu à peu estompée
- L’article insiste sur le fait que l’équilibre entre expressivité (transmission de l’intention) et sensation de vie (imprévisibilité) est décisif dans l’interaction robot-humain
- Idées d’extension futures :
- donner une voix non humaine
- lever la contrainte 2D
- diversifier les mouvements expressifs avec du RLHF, entre autres
- ajouter des tentacules et permettre l’auto-déplacement
- adopter des moteurs à entraînement direct pour réduire le bruit
- Le code source et les fichiers sont fournis dans le dépôt GitHub, et l’auteur accueille volontiers collaborations et discussions
1 commentaires
Réactions sur Hacker News
J’ai eu l’impression d’assister à une rencontre fascinante entre la technologie et la psychologie humaine : au début, le robot semblait très vivant, mais à mesure qu’on l’utilise et que ses mouvements deviennent plus faciles à prévoir, il donne progressivement une impression moins vivante. L’« expressivité » consiste à transmettre un état interne, mais le « sentiment de vie » naît de l’imprévisibilité et d’un certain degré d’opacité, parce que les systèmes réellement vivants suivent une multitude de variables complexes. Shoggoth Mini n’en est pas là. Je me demande si nous voulons vraiment des robots qui donnent l’impression d’être vivants, ou s’il existe une limite au-delà de laquelle ils deviennent trop imprévisibles pour qu’on se sente à l’aise à leurs côtés.
Ça me rappelle Furby : une forme et une taille similaires, deux yeux et des oreilles mobiles. Au début c’est amusant, mais dès qu’on interagit un peu avec lui, on voit qu’il n’a qu’un nombre limité de comportements fondés sur des stimuli très simples et quelques états internes. Beaucoup plaisantent en disant « les humains ne sont pas différents », mais en pratique on repère vite les motifs répétitifs.
C’est un peu comme quand on comprend les règles d’un système de jeu et qu’il cesse d’être amusant. Même si l’application des règles donne une apparence de complexité, on a l’impression que le résultat est déterminé. La magie disparaît.
Les humains ont toujours attribué des traits anthropomorphiques et de l’autonomie au feu, à l’eau courante, aux automates du XVIIIe siècle, aux premiers chatbots, à ChatGPT — et même à toutes sortes de machines. Il arrive même que les machines semblent avoir des « humeurs ».
Partage d’une expérience liée aux assistants vocaux et aux langues artificielles : l’assistant vocal est configuré avec un accent britannique, et comme cela paraît juste assez étranger, il inspire beaucoup plus confiance. Ce n’est peut-être pas le cas pour un Britannique, mais c’est mon ressenti. En travaillant autrefois sur un jeu, j’avais essayé de générer dynamiquement les répliques des PNJ, mais les rendre crédibles en anglais était extrêmement difficile. Au final, nous avons fait parler les PNJ dans une langue fictive, puis ajouté un aspect puzzle pour que les joueurs apprennent cette langue, et les personnages semblaient alors bien plus réels. En fait, comme l’énergie mentale passait dans la traduction, on oubliait momentanément qu’il s’agissait d’une langue artificielle, ce qui évitait l’« uncanny valley ». Je me demande toutefois si, une fois habitués au jeu et devenus plus compétents dans cette langue, les joueurs finiraient quand même par reconnaître le caractère artificiel du système.
Ce n’est pas tant un « ah, il a hésité » : on ressent plutôt la même hésitation face à presque toutes les questions. Le délai de génération des réponses par GPT me dérange pas mal, encore plus qu’un retard dans une liaison de direct aux infos. Je me demande si ajouter quelque chose comme des LED sur les yeux pour signaler qu’il est en train de travailler améliorerait la perception. Dès qu’on délègue une requête à GPT, il y a inévitablement de la latence, surtout si la requête part dans le cloud. Je pense aussi que le fait que GPT-4o écoute en permanence l’intégralité du flux audio peut poser problème.
Pour ce type de tâche simple, un petit LLM comme Qwen 0.6B devrait suffire. On pourrait utiliser les performances zero-shot d’un grand modèle pour créer son propre dataset, puis entraîner un autre modèle bien plus rapide.
Concernant le fait que GPT-4o écoute en continu, on peut régler ça avec une bibliothèque de wake word (par ex. openWakeWord, porcupine). L’utilisateur pourrait réveiller le système avec un mot-clé spécifique, puis envoyer son prompt, ce qui réduirait aussi les problèmes de sécurité et de confidentialité. On pourrait afficher une animation « endormi » au repos, puis le faire se réveiller et réagir à l’appel. Je partage aussi ces liens open source : openWakeWord porcupine
Je ne partage pas l’avis selon lequel le délai de réponse de GPT est gênant. Quand le tentacule s’arrête puis se redresse aussitôt, cela donne plutôt l’impression qu’il écoute attentivement et réfléchit, ce qui le rend même plutôt mignon.
Je pense qu’il lui faudrait des sourcils, comme Johnny 5 vidéo d’exemple de Johnny 5
Après la phase de prototype, on pourrait aussi embarquer directement un petit modèle optimisé sur l’appareil local. Ce serait bien plus rapide, plus sûr, et plus adapté à un produit final (même si cela offre moins de flexibilité au stade du prototype).
Partage d’une superbe vidéo de SpiRobs qui a inspiré cette idée vidéo YouTube de SpiRobs
Le design est trop mignon. Quand j’ai étudié les robots à tentacules l’an dernier, j’ai appris que le terme officiel est « continuum robots », et qu’il existe beaucoup de recherche, surtout en robotique médicale. Si vous voulez en savoir plus, il y a une bonne conférence d’introduction : vidéo de cours associée
Je trouve que c’est un projet vraiment génial. Maintenant que les capacités de l’IA ont tellement progressé et que la robotique avance aussi, je trouve dommage qu’on s’obstine toujours à créer des formes humaines. J’aimerais voir apparaître dans les foyers des robots aux formes plus singulières, comme un hybride araignée-calmar.
Il y a beaucoup de débats sur la sécurité de l’IA, mais moi, je veux un robot hybride araignée-calmar qui se promène dans la maison.
Il y a une tendance à vouloir rendre la robotique aussi compatible que possible avec un monde pensé pour les humains. Mais ce serait aussi très intéressant d’essayer diverses options en changeant la forme des pattes.
Certainement pas. J’ai vu ce film. Je ne veux absolument pas d’un facehugger posé sur mon bureau.
Les fans de hentai pourraient au contraire apprécier.
Si les tentacules étaient plus longs et qu’il existait un programme pour faire des farces à ses collègues, ce serait peut-être amusant.
J’aime bien la référence à Lovecraft, mais je me demande si un petit modèle ne suffirait pas.
Je partage aussi quelques liens sur le mème du shoggoth : Shoggoth With Smiley Face Meme article du NYT sur le mème Shoggoth
Je suis du même avis ; en réalité, cela pourrait même être plus simple. Je cite le développeur, qui expliquait avoir envisagé d’entraîner un modèle VLA end-to-end, mais que, pour un robot souple actionné par câbles, diverses combinaisons de longueurs de câble peuvent produire la même position de l’extrémité, ce qui augmente l’imprévisibilité et empêche l’apprentissage à partir de démonstrations de bien passer à l’échelle. Il est donc finalement parti sur une architecture en cascade, dans laquelle une vision spécialisée alimente un contrôleur léger. Malgré cela, ce serait vraiment chouette de réessayer avec un petit modèle, et si on lui faisait tourner un modèle local, ce serait plus rassurant de le garder à l’intérieur d’un pentagramme.
J’ai vu suffisamment de médias venus du Japon pour pouvoir prédire dans quelle direction tout cela va aller.
Le concept lui-même est tellement cool. J’aime beaucoup cette tentative d’ajouter de l’expressivité à un être non verbal et non humanoïde.
Je trouve ce travail vraiment magnifique. Je suis particulièrement impressionné par le fait que ce robot ait été conçu sans ressembler à aucune créature naturelle. Je ne veux pas d’un futur où la frontière entre robotique et réalité devient floue ; jusqu’ici, même les robots humanoïdes ont encore un aspect artificiel, et j’aimerais que cette tendance continue.