Pourquoi construire un robot de suivi de ligne?

Construire un robot de suivi de ligne est l'un des points d'entrée les plus enrichissants dans la robotique et les systèmes embarqués. Le projet vous enseigne l'intégration des capteurs, le contrôle moteur, les boucles de rétroaction, et le débogage pratique et mdash; tout en créant une machine qui navigue entièrement sur lui-même.

Que vous soyez étudiant en préparation à une compétition robotique, amateur à la recherche d'un projet de week-end ou éducateur à la recherche d'une activité pratique STEM, un suiveur de ligne offre des résultats immédiats et visibles. Vous pouvez commencer simple et progressivement ajouter la complexité : contrôle PID, vitesses plus rapides, logique de la résolution de la labyrinthe ou télémétrie sans fil.

Comment les robots de suivi de ligne fonctionnent

Un robot qui suit la ligne lit le contraste entre une ligne sombre et un fond lumineux (ou vice versa) à l'aide de capteurs optiques orientés vers le bas. La plupart des modèles utilisent des capteurs de réflectivité infrarouge (IR), qui émettent de la lumière IR et mesurent la quantité de réflecteur.

Le microcontrôleur lit ces valeurs de capteur, applique un algorithme de décision et commande aux moteurs de diriger le robot le long du chemin. L'approche la plus simple utilise deux capteurs et un contrôleur bang-bang : tourner à gauche lorsque le capteur droit voit la ligne, tourner à droite lorsque le capteur gauche le voit, et aller tout droit lorsque les deux voient la ligne.

Placement du capteur et optique

Hauteur du capteur et espacement de la matière. Montez les capteurs 5–15 mm au-dessus du sol, assez près pour obtenir une lecture propre mais suffisamment haut pour éviter de gratter sur des surfaces inégales. Espacez-les de sorte que lorsque le robot est centré sur la ligne, le capteur gauche est juste hors de la ligne à gauche et le capteur droit est juste hors de la ligne à droite. Pour une ligne 15–20 mm de large, un espacement centre-centre d'environ 15–25 mm entre les capteurs fonctionne bien. L'expérimentation est attendue— enregistrez vos capteurs temporairement jusqu'à ce que vous trouviez l'endroit doux.

Composants matériels à source ouverte

L'écosystème open source offre une large gamme de pièces compatibles et abordables. Ci-dessous est une facture de matériaux recommandée pour un bi-sensor robuste suiveur de ligne. Les prix varient par région et par fournisseur, mais le total est généralement inférieur à 50 USD.

  • Microcontrôleur: Arduino Uno R3, Arduino Nano, ou un clone (par exemple, Elegoo, Robotdyn). Le Nano est plus petit et plus facile à monter sur un châssis compact.
  • Capteurs de ligne: Deux modules de capteur IR à base de TCRT5000 (souvent vendus comme « modules de capteur de suivi ») sont dotés de potentiomètres réglables pour la sensibilité.
  • Moteurs: Deux moteurs DC orientés (généralement 100 etndash;300 RPM à 6V) avec roues. Les micromoteurs en métal N20 sont populaires pour les petits robots.
  • Conducteur automobile: Module L298N pour moteurs plus grands ou L9110S ou DRV8833 pour les plus petits. Le L298N est volumineux mais pardonne. Le DRV8833 est compact et efficace.
  • Châssis: Un kit de châssis en acrylique ou en plastique à deux couches (nombreux sont disponibles sur AliExpress ou Amazon). Vous pouvez également découper au laser ou imprimer votre propre châssis en 3D.
  • Alimentation électrique: Un pack de batterie 6V ou 7.4V (par exemple, 4x AA NiMH ou 2S LiPo). Inclure un interrupteur et un régulateur de tension si vos composants nécessitent 5V.
  • Roues et roulettes: Deux roues motrices (40–65 mm de diamètre) et une roulette à billes ou une petite roue pivotante pour l'avant ou l'arrière.
  • Panneaux de pain, fils de saut et matériel de montage: M3 en nylon ou en laiton, vis, fermetures à glissière et ruban de mousse double face.

Choisir un conducteur de moteur

Le conducteur du moteur règle la logique de faible courant du microcontrôleur (5V, 40 mA max par broche) et des moteurs à courant supérieur. Recherchez un conducteur qui peut gérer le courant de décrochage de vos moteurs (généralement 0,5–2 A par canal). Activez les broches vous permettent d'utiliser PWM pour le contrôle de la vitesse. Le L298N nécessite une tension de décrochage plus élevée (environ 2V), donc le nourrir au moins 7V si vous avez besoin de 5V aux moteurs. Le DRV8833 fonctionne jusqu'à 2,7V et comprend une limite de courant, qui protège vos moteurs et le conducteur contre la surcharge.

Sélection d'un microcontrôleur

Pour un suiveur de ligne, vous avez besoin d'au moins quatre broches d'entrée numérique/analogique (deux pour les capteurs) et quatre broches de sortie (deux pour la direction du moteur, deux pour la vitesse PWM). L'Arduino Uno fournit de nombreuses I/O, mais le Nano ou le Pro Mini est plus compact. Si vous voulez un Wi-Fi ou Bluetooth pour la télémétrie, considérez un ESP32 ou ESP8266— ils peuvent exécuter le code Arduino et ajouter une connectivité sans fil.

Montage du robot

Monter le châssis d'abord, monter les moteurs, puis ajouter l'électronique. Tester chaque sous-système avant de tout connecter.

Assemblage mécanique

Attachez les moteurs au châssis en utilisant les supports fournis dans votre kit ou avec des vis et des supports M3. Assurez-vous que les arbres moteur sont parallèles et que les roues tournent librement. Attachez la roulette ou la roulette à l'extrémité opposée du châssis. Le robot doit s'asseoir à niveau avec toutes les roues touchant le sol. Si vous utilisez un châssis à deux niveaux, montez les moteurs et la batterie au niveau inférieur et le microcontrôleur et la bille au niveau supérieur pour maintenir le centre de gravité bas.

Faites passer les moteurs aux bornes de sortie du conducteur. Twist les fils moteurs ensemble ou les sécurisent avec des attaches zippées pour les empêcher de attraper sur les obstacles.

Assemblage électronique

Placez le microcontrôleur sur le châssis. Si vous utilisez un Arduino Uno, une plaque de montage avec des standoffs fonctionne bien. Pour un Nano, une petite breadboard ou un PCB personnalisé peut le maintenir en toute sécurité. Connectez les broches logiques du pilote moteur aux broches numériques Arduino. Une broche typique :

  • Direction du moteur gauche: broche 7
  • Moteur gauche PWM: broche 6 (ou toute broche compatible avec PWM)
  • Direction du moteur droit: broche 8
  • Moteur droit PWM: broche 5 (ou toute broche compatible avec PWM)

Connectez les modules de capteur IR. Chaque module a VCC, GND et une broche de sortie analogique ou numérique. Pour la lecture analogique, connectez la sortie à une entrée analogique sur l'Arduino (A0 et A1 sont pratiques). Pour la sortie numérique, connectez-vous aux broches numériques. L'approche analogique vous donne un contrôle plus fin sur la détection de seuil.

Connectez la batterie positive à l'entrée de puissance du conducteur et, au besoin, à la broche VIN Arduino, grâce à un régulateur de tension 5V. Connectez tous les terrains. Un terrain commun entre les sections logiques et de puissance est essentiel.

Essais de chaque sous-système

Avant de charger le code de suivi de ligne complète, testez chaque partie individuellement:

  • Capteurs: Téléchargez un croquis simple qui lit les valeurs analogiques et les imprime sur le Serial Monitor. Placez le capteur sur une surface sombre et une surface lumineuse et notez les lectures. Ajustez le potentiomètre sur chaque module de capteur jusqu'à ce que la différence dépasse 200 nombres (sur une échelle de 0–1023).
  • Moteurs: Chargez un croquis qui fait tourner chaque moteur vers l'avant et vers l'arrière à une vitesse fixe. Vérifiez que les deux roues tournent dans la bonne direction et que le robot se déplace droit lorsque les deux moteurs fonctionnent à des valeurs PWM égales.
  • Puissance: Mesurez la tension au microcontrôleur et au conducteur du moteur avec un multimètre sous charge. Assurez-vous que la tension reste dans les limites de la spécification. Une chute de tension inférieure à 4.8V sur un rail 5V peut provoquer la remise à zéro de l'Arduino.

Programmation du robot

L'algorithme de contrôle détermine comment le robot suit la ligne avec grâce et fiabilité. Commencez par un simple contrôleur bang-bang, puis mettez à niveau vers un contrôle proportionnel ou PID à mesure que votre confiance grandit.

Contrôle de Bang-Bang (deux États)

C'est l'approche la plus simple : chaque capteur retourne une valeur binaire (ligne ou pas de ligne). La table logique est :

  • Capteur gauche en ligne, capteur droit hors ligne : tournez à gauche (arrêt ou ralentissez le moteur droit, faites tourner le moteur gauche en avant).
  • Capteur droit en ligne, capteur gauche hors ligne: tournez à droite.
  • Les deux capteurs sont en ligne : allez droit.
  • Aucun capteur en ligne : arrêt et recherche (rotation en place jusqu'à ce qu'un capteur détecte la ligne).

Ce contrôleur fonctionne sur des courbes douces et des sections droites, mais peut osciller sur des virages pointus ou à des vitesses plus élevées.

Contrôle proportionnel

Pour une configuration à deux capteurs, calculez un simple signal d'erreur : . Lorsque vous êtes centré, l'erreur est proche de zéro. Lorsque le robot dérive à gauche, le capteur droit voit plus de ligne et produit une valeur plus élevée, donnant une erreur négative, et vice versa. Utilisez cette erreur pour ajuster les vitesses du moteur :

où Kp est un gain proportionnel vous accordez expérimentalement. Commencez par un petit Kp (0,1–1.0) et augmentez-le jusqu'à ce que le robot traîne sans trop de shooter.

Contrôle de l'IPD

Pour les robots à grande vitesse ou compétitifs, ajoutez des termes intégraux et dérivés pour éliminer les erreurs à l'état stationnaire et amortir les oscillations. Le terme intégral accumule les erreurs passées pour corriger la dérive persistante, tandis que le terme dérivé anticipe les erreurs futures basées sur le taux de changement actuel. Bibliothèque de l'IDP d'Arduino simplifier la mise en œuvre.

Étalonnage et réglage

Un robot bien calibré peut gérer différentes couleurs de sol, conditions d'éclairage et largeurs de ligne. Calibrez vos capteurs chaque fois que vous changez l'environnement.

Seuils de réglage du capteur

Placez le robot avec tous les capteurs sur une section blanche (ou lumineuse) de la piste. Lisez et enregistrez les valeurs analogiques. Puis placez-le sur la ligne noire (ou sombre) et enregistrez ces valeurs. Réglez le seuil numérique au milieu entre les deux lectures. Si vous utilisez le contrôle analogique, normaliser les valeurs du capteur à une échelle de 0–100% en fonction de ces valeurs d'étalonnage.

Vitesse de réglage et constantes PID

Réglez le Kp jusqu'à ce que le robot suive une ligne droite sans faire de oscillation excessive. Si le robot oscille, réduisez le Kp. Si le robot réagit avec lenteur, augmentez le Kp. Une fois que le Kp est satisfaisant, ajoutez un petit Ki (0.01–0.1) pour corriger les courbes longues. Ajoutez Kd (0.5–5) pour réduire le dépassement.

Tune dans cet ordre : Kp, puis Kd, puis Ki. Utilisez le Plotter Serial dans l'IDE Arduino pour visualiser les lectures de signal d'erreur, de sortie du moteur et de capteur en temps réel.

Réglages mécaniques

Si le robot tire systématiquement d'un côté, vérifiez que les deux moteurs reçoivent la même valeur PWM pour le mouvement droit. La traînée mécanique d'un roulement serré ou d'un roulette mal monté peut causer des biais. Ajustez le décalage PWM dans le logiciel ou corrigez la question mécanique. Vérifiez également que les roues sont centrées et que le poids du châssis est équilibré.

Techniques avancées

Une fois que votre suiveur de ligne de base fonctionne de façon fiable, vous pouvez explorer plusieurs mises à jour qui enseignent des concepts robotiques plus profonds.

Systèmes multicapteurs

L'utilisation de trois, cinq ou huit capteurs dans un tableau permet au robot d'estimer le centre de la ligne avec une résolution de sous-capteurs. Une approche commune consiste à attribuer à chaque capteur un poids (p. ex. -3, -2, -1, 0, 1, 2, 3 pour un tableau de sept capteurs) et à calculer la moyenne pondérée des capteurs qui détectent la ligne. Cela donne une valeur de position flottante entre -3 et +3 que vous alimentez directement dans le contrôleur PID. Le résultat est beaucoup plus fluide de suivi à des vitesses plus élevées. Capteurs QTR Pololu gérer le calibrage et la lecture pour vous.

Tuning PID avec Ziegler-Nichols

Si vous voulez une méthode systématique pour trouver des gains PID, utilisez la méthode de réglage en boucle fermée de Ziegler-Nichols. Définissez Ki et Kd à zéro. Augmentez Kp jusqu'à ce que le robot oscille avec une amplitude constante (le « gain ultime » Ku). Mesurez la période d'oscillation (Tu).

Contrôle de vitesse et accélération

Des changements de vitesse du moteur soudain provoquent un mouvement branlé et peuvent jeter le robot hors de la ligne. Implémenter des rampes d'accélération qui augmentent sans heurt la vitesse de zéro à la valeur cible sur quelques centaines de millisecondes. De même, les rampes de décélération avant un virage aigu améliorent la traction et la tenue de la ligne. Vous pouvez implémenter cela avec une machine d'état simple basée sur minuterie ou en utilisant la fonction pour faire avancer progressivement le point de consigne de vitesse.

Maze Solving et la navigation réseau ligne

Un robot qui peut suivre une ligne peut également apprendre à naviguer sur un réseau de chemins. Utilisez un algorithme basé sur la pile (recherche approfondie) ou la "règle de gauche" pour résoudre les labyrinthes morts. Enregistrez chaque décision de jonction et le chemin entre les labyrinthes. Après la première course, le robot peut retracer le chemin optimal. C'est la base de nombreuses compétitions robotiques comme les défis de labyrinthe Micromouse ou de suivi de ligne.

Tutoriel de résolution de la Maze de ligne de Pololu- Oui.

Surveillance et télémétrie sans fil

Ajoutez un module Bluetooth HC-05 ou un module Wi-Fi ESP8266 pour diffuser les valeurs du capteur, les vitesses du moteur et l'erreur PID sur un ordinateur portable ou un smartphone. Cela vous permet d'accorder le robot en temps réel sans l'arrêter. Déplacez les données dans un outil comme SerialPlot ou Python Matplotlib pour visualiser comment la boucle de commande se comporte dans différentes conditions de piste. Une étape importante de débogage est de consigner le signal d'erreur aux côtés des sorties du moteur pour voir si le robot est surcorrect ou souscorrect.

Questions communes et dépannage

Même les constructeurs expérimentés rencontrent des problèmes. Voici les plus communs et comment les résoudre.

Le robot ne bouge pas

Vérifier d'abord la puissance. Mesurer la tension de la batterie sous charge. Si la tension est inférieure à la tension de fonctionnement minimale du conducteur, les moteurs ne tourneront pas. Vérifier toutes les connexions au sol sont solides. Tester le conducteur en envoyant un signal manuel de l'Arduino (HIGH/LOW) sur les broches directionnelles et une valeur PWM de 200 sur les broches d'activation.

Si les moteurs ne bougent pas encore, le conducteur ou le câblage moteur peuvent être défectueux.

Robot Viers hors de la ligne

Cela indique généralement un problème d'étalonnage ou un biais mécanique. Recalibrez les capteurs en utilisant la procédure décrite ci-dessus. Ensuite, vérifiez l'alignement de la roue : soulevez le robot et exécutez les moteurs à des valeurs PWM identiques ; les deux roues doivent tourner à la même vitesse. Si une roue est plus lente, échangez les canaux du conducteur pour voir si le problème suit le canal (problème logiciel) ou reste avec le moteur (problème mécanique ou électrique).

oscillation sur les sections droites

L'oscillation est causée par un gain proportionnel trop élevé (Kp) ou un gain dérivé insuffisant (Kd). Réduire le Kp de 20–30% et voir si le robot se stabilise. Si le robot se agite encore, augmenter le Kd progressivement. Vérifiez également que les lectures de votre capteur ne sont pas bruyantes. Ajoutez une petite quantité de lissage analogique (p. ex., un filtre moyen mobile de 3–5 échantillons) pour réduire le bruit avant de nourrir les valeurs dans la boucle de contrôle.

Robot a raté Sharp Tours

Par exemple, si la valeur de position de la ligne indique une courbe pointue, réduisez la vitesse de base de 30–50%. Vous pouvez également augmenter la différence de vitesse du moteur en utilisant un Kp plus grand pour les situations à forte erreur (une technique appelée planification des gains). Une autre approche consiste à utiliser un tableau de capteur plus large qui peut « voir » la courbe qui vient avant que le robot ne soit engagé.

Performances incompatibles dans différents éclairages

Les capteurs IR sont sensibles à la lumière ambiante, en particulier les luminaires solaires et fluorescents. Étalonner les capteurs dans l'environnement réel où le robot fonctionnera. Bouclier les capteurs avec une hotte ou un court tube en tube thermoréducteur ou un linceul imprimé en 3D pour bloquer l'IR ambiant.

Concours et ressources communautaires

Les robots de suivi de ligne sont une des pièces de base des compétitions de robotique dans le monde entier. Abonné de ligne junior RoboCup et les Concours international de robotique virtuelle à domicile. Participer à des concours offre un but structuré et une occasion d'apprendre des autres.

La communauté open-source a produit d'excellents concepts de référence et bases de code. Robot Pololu Zumo et ses bibliothèques associées sont un excellent point de départ pour un suiveur de ligne haute performance. Projet de robot Lino fournit un robot de commande différentielle ROS complet qui peut être adapté pour suivre la ligne.

Élargir au-delà de la ligne suivant

Les compétences que vous développez en construisant un transfert de suivi de ligne directement vers de nombreux autres projets robotiques :

  • Éviter les obstacles : Remplacer les capteurs de ligne IR par des capteurs ultrasoniques ou à temps de vol et réécrire la logique de contrôle.
  • Mur suivant: Des capteurs de montage sur le côté et utiliser la commande PID pour maintenir une distance constante par rapport à un mur.
  • Robots Sumo: Utilisez des capteurs de ligne pour détecter le bord de l'anneau et tourner en arrière.
  • Résolution autonome du labyrinthe : Ajouter un codeur IMU et roue pour la navigation en position de retrait entre les jonctions.
  • Intégration ROS: Montez un ROS Raspberry Pi, ajoutez une caméra et utilisez la vision de l'ordinateur pour suivre des lignes ou des chemins colorés.

Chacun de ces projets réutilise la même fondation matérielle et les mêmes concepts de contrôle PID ou d'état-machine que vous avez déjà appris.

Pensées finales

La création d'un robot de suivi de ligne avec du matériel open-source n'est pas seulement un projet débutant et mdash; c'est une plateforme pour l'apprentissage continu. Le simple contrôleur bi-sensor, bang-bang fonctionne et est profondément satisfaisant à voir en action. La prochaine itération ajoute PID. Celle après cela ajoute un tableau huit-sensor et un PCB personnalisé. Vous concevez bientôt votre propre châssis, écrivez une application de télémétrie sans fil et entrez dans des compétitions.

L'écosystème open-source vous assure de ne jamais commencer à zéro.

Commandez vos pièces, allumez le fer à souder et commencez à suivre cette ligne. Chaque robot expert que vous admirez a commencé exactement ici.