Jouer à « pierre, papier, ciseaux » contre une application de vision, adversaire IA

Un robot joue à « pierre, papier, ciseaux » - Partie 2/3

Une application de vision comme adversaire simulé par ordinateur

Comment faire pour qu'un robot joue à « pierre, papier, ciseaux » ? Sebastian Trella, fan de robotique et blogueur, a entre-temps fait un pas décisif vers la solution de l'énigme. Côté caméras, il a utilisé IDS NXT, un système complet pour l'utilisation de caméras intelligentes. Il couvre l'ensemble du flux de travail, de l'enregistrement et de l'étiquetage des images d’entraînement à l’entraînement des réseaux, en passant par la création d'applications pour l'évaluation et l'exécution effective des applications. Dans la première partie de notre histoire, il avait déjà reconnu les gestes à l'aide d'un traitement d'images basé sur l'IA et avait ainsi également entraîné les réseaux neuronaux. Il s'est ensuite attelé au traitement des gestes reconnus au moyen d'une application de vision spécialement créée à cet effet.

Traitement ultérieur des données d'images analysées

L'application constitue la deuxième phase du projet et doit, de manière générale, permettre de jouer contre un adversaire simulé par ordinateur. Elle s'appuie sur l'IA entraînée et réutilise ses résultats. Pour cela, elle utilise l'adversaire IA qui « propose » au hasard l'un des trois mouvements de main prédéfinis et le compare à celui du joueur. Elle décide ensuite qui a gagné ou s'il y a un résultat nul. L'application de vision est donc l'interface avec le joueur sur l'écran de l'ordinateur, et la caméra est l'interface de capture des gestes du joueur.

La création de l'application, tout comme l'entraînement des réseaux neuronaux, a eu lieu dans le studio de vision IA basé sur le cloud, IDS lighthouse. L'éditeur de code basé sur des blocs, qui ressemble entre autres à l'environnement de programmation graphique gratuit Scratch, a facilité la tâche de Sebastian Trella : « Je connaissais déjà la programmation d'application de vision avec Scratch/Blockly grâce à LEGO® MINDSTORMS® et à divers produits robotiques, et j'ai tout de suite trouvé mes marques. L'interface de programmation est pratiquement identique et la manière de penser requise m'était donc déjà familière. En effet, que je développe une application de vision assistée par IA sur une caméra IDS NXT ou une séquence de mouvements pour un robot, la programmation fonctionne de la même manière. »

Réglage final directement sur la caméra

La nouveauté pour Sebastian Trella était toutefois la représentation du texte sur l'image : « Jusqu'à maintenant, les robots que j'ai programmés ont toujours « produit » uniquement par le biais de la console. Intégrer maintenant les sorties de l'application de vision directement dans l'image de la caméra était une nouvelle approche pour moi. » Il a été particulièrement surpris par la possibilité d'éditer l'application de vision aussi bien dans le cloud que sur la caméra elle-même, mais aussi par le confort de développement sur l'appareil et la performance du matériel de la caméra : « Les petites modifications apportées au code du programme peuvent être testées directement sur la caméra, sans avoir à tout recompiler dans le cloud. L'environnement de programmation fonctionne ici de manière très fluide et stable. » Il voit cependant un potentiel d'amélioration dans le débogage des erreurs sur le périphérique intégré, en particulier en ce qui concerne la synchronisation du périphérique et du système cloud après des ajustements sur la caméra.

Sebastian Trella a découvert un vrai plus, qu'il a trouvé « génial » selon ses propres dires, sur l'interface web de la caméra. En effet, on y trouve l'interface utilisateur Swagger, une collection d'outils open source qui servent à documenter et à tester l'interface REST intégrée, avec des exemples. Cela lui a facilité le travail. Dans ce contexte, il formule également quelques suggestions pour les développements futurs du système IDS NXT : « Ce qui serait génial, c'est d'avoir des modules activables pour communiquer avec des systèmes robotiques tiers, afin de pouvoir « co-programmer » le bras du robot directement dans l'environnement de programmation de l'application de vision. Cela permettrait d'économiser du câblage entre le robot et la caméra, et de simplifier le développement. Sinon, l'importation de fichiers image directement via l'environnement de programmation m'a manqué. Jusqu'à présent, elle n'est possible que par FTP. Dans mon application, j'aurais par exemple affiché l'image d'une coupe pour le gagnant. »

Et la suite ?

« J'ai pris beaucoup de plaisir à construire l'application de vision et je vous remercie chaleureusement de m'avoir donné la possibilité de « jouer » avec un matériel aussi intéressant », déclare Sebastian Trella. La prochaine étape consiste à examiner de plus près et à tester les possibilités de communication de l'application de vision avec le bras du robot. L'adversaire virtuel par ordinateur ne doit pas seulement afficher son geste à l'écran - c'est-à-dire dans l'image de la caméra - mais aussi le faire exécuter en vrai par l'intermédiaire du bras du robot. Cette étape est aussi la dernière pour clôturer le jeu « Pierre, papier, ciseaux » : le robot prendra vie.

À suivre...

Vous trouverez des informations sur l'installation dans notre manuel (uniquement pour les utilisateurs enregistrés).