1. Accueil
  2. Docs
  3. Niryo One
  4. Démonstrateurs Niryo One
  5. Vision Tic-Tac-Toe

Vision Tic-Tac-Toe

PHN0eWxlPgouZGlzY2xhaW1lciB7CmJhY2tncm91bmQ6I2U3ZjJmYTsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2IoMCAwIDAgLyAzMCUpOwogIGZvbnQtZmFtaWx5OiBvcGVuLXNhbnMsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsKfQouZGlzLXRpdGxlIHsKYmFja2dyb3VuZDojNmFiMGRlOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzZhYjBkZTsKICAgIHBhZGRpbmc6IDZweCAxMnB4Owp9Ci5kaXMtdGV4dCB7CiAgICBwYWRkaW5nOiA2cHggMTJweDsKfQouZGlzLXRleHQgYSB7CnRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7Cn0KPC9zdHlsZT4KPGRpdiBjbGFzcz0iZGlzY2xhaW1lciI+CjxkaXYgY2xhc3M9ImRpcy10aXRsZSI+Tm90ZTwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXMtdGV4dCI+VGhpcyBhcHBsaWNhdGlvbiBpcyBkZXNpZ25lZCBmb3IgTmlyeW8gT25lIHVzZXJzLiBJZiB5b3UgYXJlIHVzaW5nIE5lZCwgcGxlYXNlIGZpbmQgdGhlIG5ldyBkb2N1bWVudGF0aW9uIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5uaXJ5by5jb20vYXBwbGljYXRpb25zL25lZC9zb3VyY2UvZXhhbXBsZXMvdmlzaW9uX2dhbWVfdGljX3RhY190b2UuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvZGl2Pgo8L2Rpdj4=PHN0eWxlPgouZGlzY2xhaW1lciB7CmJhY2tncm91bmQ6I2U3ZjJmYTsKICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwogICAgbWFyZ2luLWJvdHRvbTogMjRweDsKICAgICAgYm9yZGVyLXJhZGl1czogMTBweDsKICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2IoMCAwIDAgLyAzMCUpOwogIGZvbnQtZmFtaWx5OiBvcGVuLXNhbnMsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsKfQouZGlzLXRpdGxlIHsKYmFja2dyb3VuZDojNmFiMGRlOwogIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiAjZmZmOwogICAgYmFja2dyb3VuZDogIzZhYjBkZTsKICAgIHBhZGRpbmc6IDZweCAxMnB4Owp9Ci5kaXMtdGV4dCB7CiAgICBwYWRkaW5nOiA2cHggMTJweDsKfQouZGlzLXRleHQgYSB7CnRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lICFpbXBvcnRhbnQ7Cn0KPC9zdHlsZT4KPGRpdiBjbGFzcz0iZGlzY2xhaW1lciI+CjxkaXYgY2xhc3M9ImRpcy10aXRsZSI+Tm90ZTwvZGl2Pgo8ZGl2IGNsYXNzPSJkaXMtdGV4dCI+VGhpcyBhcHBsaWNhdGlvbiBpcyBkZXNpZ25lZCBmb3IgTmlyeW8gT25lIHVzZXJzLiBJZiB5b3UgYXJlIHVzaW5nIE5lZCwgcGxlYXNlIGZpbmQgdGhlIG5ldyBkb2N1bWVudGF0aW9uIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5uaXJ5by5jb20vYXBwbGljYXRpb25zL25lZC9zb3VyY2UvZXhhbXBsZXMvdmlzaW9uX2dhbWVfdGljX3RhY190b2UuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+LjwvZGl2Pgo8L2Rpdj4=

Le moment est venu de combattre un adversaire de taille, le Niryo One, au Tic-Tac-Toe.

Ce démonstrateur utilise notre API TCP Python, le Niryo One ainsi que notre Vision Set.

Le traitement d'image permet au robot de détecter chaque objet présent sur l'espace de travail, utilisé comme plateau de jeu, et l'IA fait du Niryo One un adversaire redoutable, selon le niveau de difficulté choisi au début de chaque partie.

Équipement requis:

  • Le Niryo One 
  • Une pompe à vide
  • Cinq pions bleus et cinq pions rouges
  • Le Vision Set ainsi que l’espace de travail
  • En option : la pente du tapis roulant éducatif

Vous pouvez également personnaliser votre propre espace de travail.

Installer:

Paramétrage du robot

Commencez par calibrer l’espace de travail avec le Niryo One Studio. Le nom de l'espace de travail doit être le même que celui que vous avez écrit dans le programme du robot (nommé par défaut « workspace_1 »).

Si votre espace de travail n'est pas devant le robot, vous devrez modifier la variable « observation_pose » afin que le robot détecte les quatre repères sur l'espace de travail. 

Il est très important de fixer solidement votre robot, la pente et l'espace de travail.

Mise en place de la pente

Il est absolument nécessaire de repérer la pente afin de pouvoir l'utiliser avant votre première utilisation. Pour le faire :

  • Placez la ventouse du robot sur le pion en bas de la pente.
  • Appuyez sur Entrée

Afin de modifier la position de la pente, vous pouvez également utiliser le –reset (python3 morpion_vision.py –reset …) ou utilisez le menu en utilisant le -menu argument.

Remarque : Si la position de la pente a changé depuis votre dernière partie, il faudra soumettre sa nouvelle position au robot.

Comment ça marche:

Pour mettre en œuvre Tic-Tac-Toe avec le Niryo One, nous utilisons le Vision Set pour photographier l'espace de travail. Ensuite, les positions des objets dans l'espace de travail sont extraites grâce aux fonctions de traitement d'image. Enfin, les objets sont placés dans une matrice 3×3 utilisée comme plateau de jeu.

Grâce à l'algorithme et en fonction de la difficulté choisie, le robot calculera son prochain coup.

Une commande sera alors envoyée au robot afin de lui faire placer le pion dans la bonne position.

Caractéristiques :

Lorsque vous lancez le script, vous pouvez ouvrir un menu en utilisant le -menu commande dans laquelle vous pouvez choisir un tas de paramètres. Ces paramètres vous offriront la possibilité de changer la façon dont le jeu est joué par le robot. Notre IA possède également les fonctionnalités suivantes :

  • Le programme est capable de voir si le joueur humain triche. Dans ce cas, il lancera une animation et jouera ensuite son tour.
  • La difficulté peut être adaptée, d'une IA jamais perdante à une IA jouant de manière aléatoire (cf. la liste des commandes).
  • Si la -noslope est choisie, le robot nettoiera automatiquement l'espace de travail avant chaque partie ou bien le robot sortira les pions de l'espace de travail.
  • Chaque fois que le robot analyse l'espace de travail, une fenêtre s'ouvre et montre le traitement d'image que le robot effectue pour localiser les pions.

Liste des commandes :

{–menu | -m}

Cette commande affiche le menu des paramètres.

{NUMÉRO}

Le nombre est un nombre entier compris entre 0 et 1000. Cette commande permet d'ajuster le côté aléatoire de l'IA. L'IA est imbattable si vous réglez la difficulté à 0, et elle joue de manière absolument aléatoire si la difficulté est réglée à 1000. 

{–boucle | -l}

Cette commande déclenche la relance de toute partie terminée.

{–bouton | -b}

Cette commande permet d'annoncer au robot que votre tour est terminé en appuyant sur un bouton branché sur le port GPIO du Niryo One.

{–nospente | -s}

Cette commande vous donne la possibilité d'utiliser l'espace de travail pour ranger les pions du robot plutôt que sur la pente. Avant d'utiliser cette commande, vous devez placer les pions bleus du robot sur l'espace de travail en début de partie (vous pouvez également les ajouter dans la pente de stockage en cours de partie). Lorsque ce paramètre est activé, le robot rangera automatiquement l'espace de travail au début de chaque partie.

Attention : cela ne fonctionne qu'avec des pions ronds car les carrés sont trop gros pour être placés sur l'espace de travail.

Lancer un jeu :

Lancer un jeu avec les paramètres standards

Commencez par poser cinq pions bleus sur la pente du Niryo One, puis lancez le script : «python3 morpion_vision.py ».

Remarque : Lorsque vous jouez pour la première fois, ou lorsque la pente a été déplacée, le robot devra connaître sa nouvelle position. Consultez la partie « Aménagement de la pente » de cette démonstration pour savoir comment procéder.

Tu commences le jeu

  • Placez un pion sur l'espace de travail où vous le souhaitez.
  • Une fois le pion posé sur l'espace de travail, bougez légèrement le bras du robot pour indiquer que votre tour est terminé.

Le robot scannera l'espace de travail et jouera son tour. Vous pouvez également connecter un bouton (dans la fenêtre de contrôle qui apparaît maintenant) dans l'entrée GPIO du robot pour indiquer que votre tour est terminé.

  • Répétez l'opération jusqu'à la fin de la partie.

Une fois le jeu terminé, le robot reviendra à sa position d'attente.

Le robot démarre le jeu

Afin d'indiquer que c'est au tour du robot, bougez légèrement son bras. Il scannera ensuite l'espace de travail et placera son pion. Une fois votre pion sur l'espace de travail, déplacez à nouveau le bras du robot et ainsi de suite, jusqu'à la fin de la partie.

Obtenez le programme sur Github pour jouer à Tic-Tac-Toe avec le Niryo One

Comment pouvons-nous vous aider ?