L'autonomie robotique complète, de la conception mécanique à l'intelligence artificielle
Aperçu du projet
Le projet « Niryo joue aux Dames » est un projet fil rouge mené durant mon cursus d'ingénieur en robotique.
L'objectif central était de permettre à un robot de jouer aux dames de manière totalement autonome en respectant l'intégralité des règles officielles de la Fédération Française de Jeu de Dames (FFJD).
Plutôt que de simples mouvements programmés, nous avons conçu un système complet capable de percevoir l'état du plateau en temps réel via une caméra embarquée, de prendre des décisions stratégiques et d'interagir physiquement avec un joueur humain.
Aperçu visuel du projet.
Le défi : Partir d'un robot seul
Au lancement, nous ne disposions que du robot (un Niryo Ned 2, remplacé plus tard par un Ned 3). Tout l'environnement nécessaire au bon déroulement d'une partie a dû être créé de zéro.
Point de départ du projet : le robot Niryo Ned 2.
Trois pôles technologiques majeurs ont constitué les fondations de ce travail :
Mécanique : Concevoir le damier, les pions et les systèmes de stockage adaptés aux contraintes de préhension du robot.
Vision : Développer un système capable d'identifier les pièces et d'interpréter les coups de l'adversaire malgré les variations d'éclairage.
Intelligence : Programmer un algorithme de jeu assurant un comportement cohérent, stratégique et conforme aux règles officielles.
Conception mécanique et environnement
L'environnement physique a été modélisé sous SolidWorks en tenant compte du rayon d'action limité du robot (490 mm) et des capacités de son outil de préhension (ventouse de 22,5 mm).
Conception du damier adapté aux contraintes mécaniques du robot.
Damier sur mesure : Plateau 10x10 cases bicolore, conçu en deux parties clipsables pour faciliter l'impression 3D et le transport.
Racks de rangement : Intégration d'un toboggan pour 20 pions standards et d'une rampe dédiée pour 6 dames, permettant au robot d'évacuer les pièces capturées en toute autonomie.
Optimisation du robot : Ajout d'une rallonge sur l'outil de préhension pour éviter les singularités cinématiques lors de l'accès aux cases proches de la base.
Support rigide : Création d'un socle dédié assurant un positionnement stable et répétable du robot par rapport au damier.
Une solution multidisciplinaire intégrée
La réussite du projet repose sur la fusion de plusieurs briques d'ingénierie développées en Python.
Vision par Deep Learning : Utilisation d'un réseau de neurones convolutif (CNN) entraîné sur un dataset de plus de 20 000 images pour une détection robuste des pions et des dames.
Géométrie de précision : Recalage par trois points de référence et application d'une homographie pour transformer l'image de la caméra en un plateau logique parfait.
Intelligence : Algorithme décisionnel hiérarchisé (Capture > Défense > Avancement stratégique > Déplacement aléatoire) pour garantir un jeu fluide et compétitif.
Interface Utilisateur : GUI développée sous Tkinter permettant de visualiser la reconstruction du damier en temps réel et de valider les coups via un écran tactile.
Résultat et portabilité
Le système final a été déployé avec succès sur une plateforme embarquée Raspberry Pi 5 (8 Go RAM) intégrée dans une tablette tactile.
Cela permet au robot de fonctionner de manière totalement indépendante de tout ordinateur externe.
D'un robot "nu", nous avons abouti à un démonstrateur complet capable d'initialiser une partie, de détecter les prises multiples obligatoires et de gérer la promotion automatique des pions en dames, offrant ainsi une expérience de jeu autonome et pédagogique.
Marc GAUTHIER
Architecture Technique : Un Système Robotique Intégré
La réalisation de ce projet repose sur une approche multidisciplinaire articulée autour de quatre piliers technologiques : la conception mécanique sous contraintes, la vision par ordinateur par apprentissage profond, l'intelligence algorithmique et l'intégration sur systèmes embarqués.
1. Conception Mécanique et Robotique
L'intégralité de l'environnement physique a été modélisée sous SolidWorks pour répondre aux limites intrinsèques du robot Niryo Ned 2.
Simulation du comportement mécanique et des trajectoires.
Optimisation de l'Espace de Travail : Le damier a été dimensionné pour s'inscrire strictement dans le rayon d'action de 490 mm du robot.
Gestion des Singularités Cinématiques : Lors des premiers tests, des singularités (configurations où le robot perd un degré de liberté) ont été identifiées sur la première rangée de cases. Nous avons résolu ce problème par la conception d'une rallonge d'outil de préhension, déportant la configuration articulaire critique et garantissant une répétabilité optimale.
Préhension & Évacuation : L'usage d'une ventouse de 22,5 mm a imposé l'utilisation de pions de 25 mm pour garantir l'étanchéité. Un rack spécifique (toboggan et rampe) a été conçu avec une pente validée expérimentalement pour assurer un glissement fluide des pièces capturées sans blocage.
2. Choix et contrôle robot.
L'intégralité de l'écosystème logiciel a été développée en Python, un choix stratégique dicté par la polyvalence du langage et, surtout, par l'existence de la bibliothèque dédiée pyniryo. Ce framework nous a permis de piloter le robot de manière fluide, en envoyant des commandes articulaires et cartésiennes tout en restant dans un environnement de haut niveau.
L'avantage majeur de cette approche a été de pouvoir centraliser, au sein d'un même script, toutes les briques critiques du projet : le traitement d'image par CNN, l'algorithmique de jeu et le contrôle des trajectoires. Cette unification logicielle a non seulement facilité l'intégration de la vision et de la logique de jeu, mais elle a aussi permis de structurer le programme de façon modulaire pour gérer efficacement les règles complexes des dames, comme les prises multiples obligatoires ou les promotions.
3. L'Évolution de la Vision : De l'Algorithmique Classique à l'IA
La perception a été le défi majeur. Le système doit transformer une image brute déformée en une matrice logique 10x10 exploitable par le moteur de jeu.
Les Approches Initiales (V1 & V2) : Rapidité vs Robustesse
Version 1 (Masque HSV) : Fondée sur la segmentation par couleur. Bien que très rapide (temps de traitement quasi nul), cette méthode s'est révélée inutilisable en environnement réel. La moindre variation de température de couleur ou l'ombre portée du bras robotique modifiait les valeurs de Teinte/Saturation, entraînant des erreurs de détection massives.
Version 2 (Hough Circle Transform) : Basée sur la détection de formes géométriques. Cette méthode était plus précise spatialement mais échouait dès que les pions présentaient des reflets spéculaires ou n'étaient pas parfaitement centrés. Elle ne permettait pas non plus de distinguer de manière fiable un pion simple d'une dame.
Version 1 de la vision (masque HSV) et ses limites en conditions réelles.
La Solution Finale : Vision par Réseau de Neurones (CNN)
Face à l'instabilité des méthodes classiques, nous avons basculé sur une architecture de Deep Learning pour classifier individuellement chacune des 100 cases du damier.
4. Le Pipeline de Deep Learning : Dataset & Entraînement
La robustesse de notre IA ne repose pas seulement sur son architecture, mais sur la qualité du traitement des données.
Création du Dataset et Annotation
Nous avons développé un script d'annotation semi-automatique : le programme capture une vue du plateau, découpe les 100 cases après homographie, et demande à l'utilisateur de valider la classe par une touche clavier. Ce processus a permis de collecter une base de données initiale "propre" de 1 000 images par catégorie : Pion Bleu, Pion Rouge, Dame Bleue, Dame Rouge, Case Vide.
Exemple de structuration du dataset avant augmentation.
Augmentation de Données (Data Augmentation)
Pour garantir que le robot puisse jouer le matin, le soir, ou sous des néons, nous avons artificiellement étendu le dataset à 20 000 images via un script Python appliquant :
Variations de luminosité et contraste extrêmes.
Ajustement de la composante bleue (critique pour la distinction Bleu/Rouge sous éclairage chaud).
Bruit gaussien et flou de mouvement pour simuler les vibrations du robot.
Entraînement & Inférence
Le modèle a été entraîné sous TensorFlow/Keras avec un split 80/20 (entraînement/validation). L'entraînement complet dure environ 30 minutes, aboutissant à un modèle léger capable d'effectuer une inférence complète du plateau (100 prédictions) en moins de 5s secondes.
Résultats de la phase d'entraînement du modèle.
5. Calibration et Homographie : Le Mode Maintenance
Pour que le CNN analyse la bonne zone, l'image doit être parfaitement "rectifiée". Nous avons intégré un Mode Maintenance dédié à la calibration :
Le robot se place en position de vue optimale.
L'utilisateur sélectionne manuellement les 4 coins du damier sur l'écran (de préférence à la souris).
Le système calcule une matrice d'homographie qui transforme la vue perspective déformée en une vue orthogonale parfaite.
Les coordonnées sont sauvegardées, permettant au robot de retrouver le damier à chaque démarrage sans recalibration, grâce à son support fixé.
6. Intelligence de Jeu et Pilotage
Le cœur décisionnel du projet repose sur un moteur de jeu Python conçu pour orchestrer l'interaction entre la logique pure, la perception et l'exécution robotique.
Moteur de Règles Modulaire et Conformité FFJD : Pour garantir un respect strict des règles officielles de la Fédération Française de Jeu de Dames (FFJD), la logique a été décomposée en une multitude de fonctions modulaires (ex: verifierCoupPion, verifCoupDame, verifMangerPion). Cette architecture permet d'isoler et de valider chaque règle indépendamment :
Prises Obligatoires : Le système impose la capture dès qu'elle est possible via la fonction verifToutManger..
Rafles et Promotions : La gestion des prises multiples en chaîne et la promotion automatique en dame (via CreaDame) assurent une fluidité de jeu identique à une partie professionnelle.
Expérience Utilisateur et Flexibilité de Jeu : L'interface a été pensée pour être "User Friendly", offrant une grande souplesse dans le déroulement de la partie:
Initialisation Intelligente : L'utilisateur peut choisir de démarrer une nouvelle partie, où le robot peut initialiser physiquement le plateau, ou de reprendre une partie en cours.
Scan de Reprise : En cas de reprise, la fonction scanPlateau analyse l'état réel du damier pour synchroniser instantanément le modèle logique avec la position physique des pions.
Maintenance et Rangement : Des options avancées permettent de demander au robot de ranger automatiquement le plateau dans les racks à tout moment, facilitant les démonstrations successives.
Détection Différentielle de Coup : Après chaque tour humain, le robot scanne le plateau et compare l'état physique actuel (plateauP) à l'état logique précédent (plateau). Cette analyse différentielle permet d'identifier précisément la case de départ et d'arrivée. En cas d'anomalie (plusieurs pions déplacés, pièce manquante injustifiée), le coup est rejeté et l'IHM invite l'utilisateur à corriger le plateau.
Algorithme Décisionnel du Bot : Le robot utilise un arbre de décision hiérarchique pour simuler un comportement cohérent:
Priorité 1 : Captures obligatoires (loi de la majorité).
Priorité 2 : Défense active des pions menacés.
Priorité 3 : Stratégie d'avancement pour favoriser la promotion en dame.
Priorité 4 : Déplacement aléatoire pour éviter tout blocage.
Structure de l'algorithme de décision utilisé par le bot.
Génération de Trajectoires : Les coordonnées cibles sont calculées par interpolation vectorielle à partir de trois points de référence (corners) appris manuellement.
Chaque mouvement est décomposé en séquences sécurisées (Approche ? Descente ? Saisie ? Transit ? Dépose) pour garantir l'intégrité physique du matériel et des pièces.
7. Intégration Logicielle et Système Embarqué
Pour transformer le projet en un produit autonome, l'ensemble de la pile logicielle a été migré sur une Raspberry Pi 5 (8 Go RAM).
Animation de démarrage du système intégré sur plateforme embarquée.
Multithreading : L'interface graphique (Tkinter) fonctionne sur un thread principal, tandis que la boucle de jeu, la vision et le pilotage robotique s'exécutent en parallèle pour maintenir une IHM réactive et fluide.
Déploiement Industriel : L'accès distant via Tailscale (SSH/VNC) et l'intégration d'un écran tactile EDA permettent une exploitation directe en mode "Plug & Play" sans dépendance à un PC de développement.