Projet 10 - Robot suiveur de ligne
Présentation
Quel électronicien, amateur ou averti, n’a pas un jour imaginé construire un robot, quelle que soit sa forme ou l’étendue de ses actions ? L’objectif derrière ce projet est variable, mais certaines caractéristiques sont communes à tous les robots :
-
Récupérer de l’information grâce à des capteurs.
-
Traiter ces informations et prendre des décisions.
-
Réaliser des actions correspondant aux choix précédemment effectués.
Le présent projet consiste à réaliser un robot autonome capable de suivre une ligne tracée au sol.
![images/12LF01N.png](https://www.eni-training.com/download/2c6cd77e-389e-4d5b-8725-a857437094f8/images/12LF01N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Robot suiveur de ligne
En utilisant un châssis préexistant, il s’agira ici de se concentrer sur l’analyse des signaux des capteurs, l’alimentation des moteurs grâce une technique bien connue et fort astucieuse (le pont en H) et la programmation des mouvements. La réalisation finale constituera un vrai robot capable de se déplacer de manière autonome. Il pourra constituer une base pour d’autres expérimentations de robots.
1. Principe de fonctionnement
Le châssis du robot, acheté ou fabriqué, est équipé de deux moteurs à courant continu entraînant chacun une roue. À l’avant, une roulette permet d’assurer la stabilité de l’ensemble...
Matériel nécessaire
Le montage s’articule autour de plusieurs éléments :
-
une plaque de prototypage (ou breadboard) ;
-
un châssis de robot à deux roues motrices (voir lien ci-dessous) ;
![images/12LF02N.png](https://www.eni-training.com/download/2c6cd77e-389e-4d5b-8725-a857437094f8/images/12LF02N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Châssis de robot
https://www.gotronic.fr/art-chassis-magic-dg007-17268.htm
-
une carte de commande pour deux moteurs à courant continu en double pont en H à base de DRV8825 ou L293 (voir lien ci-dessous) ;
![images/12LF04N.png](https://www.eni-training.com/download/2c6cd77e-389e-4d5b-8725-a857437094f8/images/12LF04N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Shield de pilotage moteur à base de L293
https://wiki.dfrobot.com/Arduino_Motor_Shield__L293___SKU__DRI0001_
-
une matrice de trois capteurs de réflexion infrarouge (voir lien ci-dessous) ;
![images/12LF03N.png](https://www.eni-training.com/download/2c6cd77e-389e-4d5b-8725-a857437094f8/images/12LF03N.png?id=AAEAAAD%2f%2f%2f%2f%2fAQAAAAAAAAAMAgAAAE1FbmkuRWRpdGlvbnMuTWVkaWFwbHVzLCBWZXJzaW9uPTEuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49bnVsbAUBAAAAJ0VuaS5FZGl0aW9ucy5NZWRpYXBsdXMuQ29tbW9uLldhdGVybWFyawIAAAAHcGlzVGV4dAlwaWR0ZURhdGUBAA0CAAAABgMAAAAwdGVzdCB2Ml84IC0gZmZhNjQzOWQtZDZjYi00NzYxLWJhYTMtZWZkZDNiZDcwMWM25rSq0F7p2IgL)
Capteurs optiques
https://www.pololu.com/product/2457
-
un boîtier de piles 9 V et sa pile ;
-
une LED et sa résistance (environ 220 kOhms) ;
-
des fils « Dupont ».
Pour la partie programmation, nous utilisons une carte Arduino Uno.
Schéma et montage
Plusieurs étapes sont nécessaires pour construire ce robot : l’assemblage du châssis, l’alimentation des moteurs, puis le positionnement des capteurs.
1. Le châssis
Dans un premier temps, il nous faut monter le châssis. Si vous avez choisi d’acheter un châssis tout fait, il vous suffit de suivre les instructions de montage livrées par le fournisseur.
Sinon, fabriquez un châssis d’environ 15 cm de large, doté de deux moteurs à courant continu (voire de motoréducteurs pour avoir plus de plage de dosage et de couple) reliés à des roues. La troisième roue peut être remplacée par une roulette, une bille ou même une tête de vis ronde (sur des sols pas trop fragiles).
Vous pouvez vous inspirer de divers projets open source, par exemple :http://fablabo.net/wiki/Plateforme_robot_eco
2. Le contrôleur des moteurs
Les deux moteurs à courant continu, reliés à chacune des roues, servent au déplacement du robot et à son changement de direction, en imprimant des vitesses d’entraînement différentes à chacune d’entre elles.
Chacun des moteurs a besoin d’une certaine puissance électrique pour tourner. Comme l’Arduino est incapable de fournir une puissance électrique significative, il faut alimenter les moteurs...
Programmation de l’Arduino
La programmation du robot se fait en trois étapes : lire les informations fournies par la matrice de capteurs optiques, gérer les moteurs (et créer une bibliothèque pour cela), puis assembler ces deux modules pour que le robot puisse se déplacer en fonction des informations optiques qu’il perçoit.
1. Gestion des capteurs optiques
Le but de la programmation des capteurs est d’obtenir l’information de la position du robot par rapport à une ligne sombre tracée sur le sol : est-il à gauche, dessus ou à droite de la ligne ?
Pour chaque capteur, une session de mesure est une suite relativement complexe d’actions qu’il est fastidieux de programmer. Heureusement, le fournisseur de la matrice de capteurs (Pololu) a publié la bibliothèque QTRSensors dédiée, qui réalise toutes les mesures à la fois et est même capable de produire des données synthétiques de l’ensemble.
Pour installer cette bibliothèque, procéder comme habituellement, grâce au Gestionnaire de bibliothèques et sélectionner la librairie QTRSensors de Pololu.
Les déclarations préalables commencent par un appel de la bibliothèque QTRSensors.
Puis le numéro de la borne servant d’émetteur (c’est-à-dire celle reliée à l’alimentation de la matrice de capteurs) est défini, ainsi que le nombre de capteurs présents sur le module (car Polol en commercialise de différentes tailles).
Ce sont respectivement les constantes emetteur et nombreDeCapteurs.
Le paramètre TIMEOUT correspond au temps maximum d’attente pour la réponse de chacun des capteurs. Selon le principe de fonctionnement d’un capteur, plus la surface réfléchissant la lumière émise est sombre, et plus le capteur met du temps à répondre. Il ne répond même pas du tout si, par exemple, le robot est soulevé et si aucune surface n’est présente pour réfléchir la lumière. Pour éviter que ce cas de figure bloque le programme, le paramètre TIMEOUT interrompt l’attente d’une réponse du capteur après ce temps donné.
#include <QTRSensors.h> ...
Améliorations possibles
Ce robot suiveur de ligne est déjà bien amusant, mais c’est aussi une véritable plate-forme de développement, au sens propre comme au figuré. En effet, sans rien changer au matériel et en utilisant le robot tel quel, vous pouvez en faire bien d’autres usages. Il suffit de modifier sa programmation.
1. Jeu d’évasion
Au lieu de tracer une simple ligne au sol, tracez un labyrinthe, dont les parois sont matérialisées par des lignes.
L’idée est de programmer le robot pour qu’il arrive à sortir du labyrinthe le plus rapidement possible. Si vous arrivez à réaliser un algorithme performant, vous pouvez concourir aux trophées de robotique que propose souvent cette discipline.
2. Robot artiste
Ce robot est capable de voir où se trouve une ligne, et de se déplacer. Et si vous l’équipiez d’un marqueur pour lui permettre de dessiner une ligne ?
Possibilité à explorer à la lumière de la théorie de nœuds :https://fr.wikipedia.org/wiki/Théorie_des_nœuds
3. Robot cartographe
Au lieu de contraindre les mouvements du robot sur une ligne, l’idée est d’enfermer le robot dans un territoire délimité par une ligne, puis de le programmer pour qu’il cherche et mémorise la position de cette...
Ressources supplémentaires
Pont en H :
https://fr.wikipedia.org/wiki/Pont_en_H
Matrice de capteurs de réflexion :
https://www.pololu.com/product/2457
Conseils de codage pour développer proprement une bibliothèque (anglais) :
https://docs.arduino.cc/learn/contributions/arduino-library-style-guide
Création d’un bras robotisé :
https://roboticsandenergy.com/projects/arduino-projects/robotic-arm/