Les réalisations techniques face aux défis du XXIe siècle : intelligence artificielle

IV. Conception

IV.1 Le robot

Afin d'explorer la totalité du labyrinthe, le robot suit le mur à sa droite et tourne à gauche si un mur se trouve face à lui. Ainsi, la construction du robot suit le principe de fabrication proposé dans le manuel LEGO MINDSTORMS Education afin d'obtenir un assemblage mobile basique muni de deux servomoteurs et d'une roue folle pour les déplacements. Pour tourner dans une direction, le servomoteur correspondant ralentit, s'arrête ou change de sens de rotation suivant l'angle et la position finale recherchée. Par exemple pour tourner à droite à 90°, le servomoteur droit s'arrête complètement. Comme l'une des roues est entrainée plus rapidement que l'autre elle parcourt une plus grande distance ce qui se traduit par une rotation du robot. Lorsque les deux moteurs tournent dans un sens contraire à la même vitesse, le robot tourne sur lui-même.

Afin de détecter les murs latéraux, un capteur à ultrasons est placé sur le robot. Ainsi, d'après les caractéristiques du capteur, celui-ci relève la présence d’un mur ou non et la distance par rapport au robot. Le fait que le capteur soit placé sur la face gauche du robot et dirigé vers la droite de ce dernier résout le problème de zone aveugle car cela permet d’éviter que les murs soient trop proches du capteur.

Pour détecter les murs devant le robot, un capteur de contact est positionné à l’avant de celui-ci. Dans le but d’agrandir la surface de détection, une large tige est placée sur une plate-forme mobile. Lorsque le robot entre en contact avec un mur, cette plate-forme vient appuyer sur le bouton poussoir du capteur.

Les balles sont repérées et identifiées par un capteur photosensible placé sur un support à l’avant du robot, perpendiculairement au sol du labyrinthe. Ainsi, les balles passent sous le capteur, dans sa surface de détection, pour être détectées.

Le robot possède finalement cette apparence dans SolidWork :

image 3D du robot
Une photographie du robot final :
image 3D du robot

IV.2 La pince

La saisie de la balle est gérée par une pince placée à l'avant du robot sur une plate-forme mobile qui, lorsque le préhenseur touche un mur à l'avant, vient appuyer sur le capteur de contact afin qu'il détecte l'obstacle. Elle entoure la zone de détection du capteur photosensible et s’ouvre horizontalement afin d’avoir le plus grand champ d’action possible pour attraper la balle.

Le servomoteur qui gère la fermeture de la pince est quant à lui installé sur le support du capteur photosensible au dessus de la pince et est statique. Ceci amène donc l’utilisation d’élastiques (jaunes) pour transmettre la rotation du moteur par un système de poulies à un ensemble de roues dentées sur la plate forme mobile qui transmettent la rotation d’un plan vertical à un plan horizontal et entraîne les pinces. Deux autres élastiques rouges plus courts et donc moins extensibles ont été placés afin de retenir la plate-forme mobile et empêcher qu’elle soit tirée vers le haut par les élastiques jaunes. Ainsi le servomoteur peut gérer les mouvements du préhenseur et celui-ci reste mobile lorsqu’il touche un mur et appuie sur le capteur de contact. La pince en elle-même est composée de deux pièces identiques comprenant un décalage au bout afin qu'une fois en face l'une de l'autre elles s'assemblent lors de la fermeture en se superposant. Aussi, lorsque la pince est en position ouverte, elle dépasse suffisamment vers l'avant du robot pour que lorsque celui-ci rencontre un mur, le mur ne touche pas le capteur photosensible. Une butée en pièces LEGO bloque l'ouverture de la pince à un angle maximum. En position fermée, les deux pièces s'assemblent et forment une surface plane et large pour le contact avec les murs à l'avant. La butée en LEGO est allongée pour venir protéger la pince de contact avec des murs latéraux et non de face ce qui peut amener son ouverture et la perte de la balle. La butée complète aussi la largeur de la surface de détection des murs avants.

La pince a été modélisée en trois dimensions sous le logiciel de CAO Solidworks ( logiciel de Conception Assistée par Ordinateur) à partir d'un modèle crée en pièce de LEGO convertie au format STL puis imprimée à l’aide d’une prototypeuse rapide par l’ajout successif de couches de plastique. La maquette virtuelle tridimensionnelle est découpée en de multiples lamelles bidimensionnelles qui sont imprimés les unes par-dessus les autres par la prototypeuse pour reformer l’objet de base.

Pour économiser le plastique une gorge a été créée le long de la pièce, ce qui permet d'enlever de la matière et de garder la rigidité de la pince. Le poids de ce système (support, capteur photosensible, servomoteur et préhenseur) étant trop important à l’avant il cause le basculement du robot autour de l’axe des roues. Pour compenser et mieux répartir les masses sur l’ensemble de l’assemblage, ces roues et leurs servomoteurs ont été avancés vers l’avant et la roue folle légèrement reculée.

Voici la forme de la pince :

SolidWorks de la pince

IV.3 Le programme

Comme il a été dis précédemment, le fonctionnement du robot peut se décomposer en trois grandes parties : l'exploration du labyrinthe, la détection suivie de l'identification et la saisie de la balle, et enfin le transport de celle-ci jusqu'à la sortie. Chacune de ces étapes a nécessité une recherche sur l'aspect mécanique du robot, et surtout sur sa programmation et la résolution de problèmes rencontrés afin d'automatiser le comportement et de rendre le robot entièrement autonome. Ces trois étapes sont l'objet des sous-parties suivantes.

3.1 Explorer le labyrinthe

Afin d'explorer la totalité du labyrinthe, le robot suit le mur à sa droite et tourne à gauche si un mur se trouve face à lui. Ainsi, le capteur à ultrason placé sur le robot dirigé face au mur à sa droite contrôle la présence de celui-ci ou non à moins de 40 cm. Tant qu'un obstacle est détecté à une distance inférieure à cette limite, le robot avance tout droit. Il tourne à droite perpendiculairement dès que la mesure dépasse cette limite. Le capteur de contact est placé à l'avant du robot et détecte s’il se trouve face à un mur et qu'il ne peut aller à droite. Il tourne alors à gauche. Ainsi dans la théorie le robot peut explorer la totalité du labyrinthe.
Or, dans la pratique, là où il devrait aller tout droit, des éléments mécaniques et physiques le font dévier de sa trajectoire. La réponse à ce problème est que le robot corrige sa trajectoire en fonction de sa distance par rapport au mur. C'est cette dernière option qui a été au final adoptée. Ainsi, lorsque le robot détecte à l'aide du capteur à ultrason qu'il se trouve à une distance inférieure à 21 cm du mur, il tourne légèrement à gauche et si la mesure est supérieure, il tourne légèrement à droite. Il avance donc en zigzaguant mais cela se passe sur une distance parcourue assez longue pour que ce soit presque imperceptible et que le robot donne l'illusion d'avancer parfaitement droit.

La programmation de la brique intelligente suivant la chaîne d’énergie correspondant à cette étape et cette stratégie de déplacement est représentée par cet algorigramme :

Algorithme de l'exploration

3.2 Détecter, identifier puis saisir la balle

Le capteur photosensible placé à l'avant du robot et dirigé vers le sol mesure en continu la réflexion de la lumière rouge qu'il émet sur celui-ci. Dans le cas où une balle s'interpose dans cet espace, la luminosité change car sa couleur absorbe plus ou moins la lumière rouge. Par conséquent, le robot est programmé pour reconnaître que cela traduit la présence d'une balle.
Il doit ensuite l'identifier grâce au taux de luminosité qu'il reçoit d'elle. La création d'un petit programme qui amène le robot à indiquer la valeur numérique mesurée par le capteur photosensible permet de dresser ce tableau :

ObjetCouleur perçus
Balle rouge < 45%
Balle bleue~ 38%
Sol du labyrinthe~ 35%

Le robot identifie la balle rouge lorsque la valeur qu'il reçoit du capteur photosensible dépasse 45 %, une valeur élevée due au fait que le rouge n‘absorbe pas la lumière rouge émise par la diode du capteur. Mais la valeur perçue par la balle bleue est trop proche de celle du sol du labyrinthe car ils ont presque la même absorbance et au moindre écart de luminosité dans la pièce, s'il fait plus sombre ou plus clair ou si un mur du labyrinthe fait de l'ombre, le robot confond la balle et le sol. À cause du manque de précision du capteur, l'objectif qui a été choisi pour le robot est la détection, l’identification et la saisie de la balle rouge uniquement. Le sol du labyrinthe ayant une valeur perçue bien moins importante, le seuil de détection de la balle est placé à 40%. Ainsi, malgré les variations de luminosité, la balle rouge sera toujours détectée et ne sera pas confondue avec le sol du labyrinthe ou avec la balle bleue.
Toute ces valeurs changent en fonction de la luminosité de la pièce et de la couleur de la lumière sur le labyrinthe, ce qui amène un réglage des valeurs avant chaque utilisation du robot.

La saisie de la balle est gérée par le préhenseur placé à l'avant du robot décrit dans la partie précédente. La programmation de cette étape qui suit la chaine d’information et d’énergie correspondante fonctionne en parallèle avec le programme de l’exploration du labyrinthe et est représentée par cette algorigramme :

Algorithme de la balle

3.3 Porter la balle à la sortie

Cette étape arrive après la saisie de la balle et en parallèle avec l’exploration du labyrinthe. En effet, lorsque le robot trouve la balle rouge et l’attrape, les examinateurs retirent la plaque en bois obstruant la sortie. Afin de la détecter, le capteur photosensible contrôle en continu la présence de la balle dans le préhenseur pendant qu’il explore le labyrinthe car lorsque le robot arrive à son terme celle-ci tombe à cause de la surélévation. Comme la pince est placée à l’avant du robot, celui-ci ne bascule pas et s’arrête. La valeur de luminosité perçue par le capteur à l’extérieur du labyrinthe est inférieure à 30%. Comme celle du labyrinthe est de 35%, si la balle se déplace dans les pinces et vient à disparaître de la zone de détection puis revenir le robot ne détecte pas la sortie du labyrinthe. Ainsi, cette étape ne demande pas de changement dans le mécanisme et la forme du robot mais un travail de programmation uniquement. Ce programme suit donc celui de la saisie de la balle vu précédemment en parallèle avec l’exploration du labyrinthe. À son terme, il stoppe le robot et le programme complet car il ne faut pas que le robot poursuive son exploration, l’objectif final ayant été rempli. Il est représenté par l’algorigramme suivant :

Algorithme de la sortie

3.4 Le programme final

Voici un aperçu du programme utilisé :

Programme