Introduction au robot de labyrinthe

La construction d'un robot capable de naviguer de façon autonome dans un labyrinthe est l'un des projets les plus satisfaisants pour les robots amateurs et les étudiants. Le défi combine l'assemblage mécanique, l'intégration des capteurs et la pensée algorithmique dans un seul système de travail. Microsouris La technologie de pointe est un outil de recherche de pointe, qui permet de réaliser des solutions de labyrinthes simples et efficaces grâce à des capteurs infrarouges ou ultrasoniques de base et à un microcontrôleur comme Arduino. Cet article passe par tout le processus, depuis la sélection des composants jusqu'à la programmation de la logique de décision, afin de pouvoir regarder votre robot tourner, sonder et sortir d'un labyrinthe.

Composants et outils

Avant de commencer à souder ou à écrire, rassemblez les pièces suivantes. Chaque article listé ici est largement disponible auprès des détaillants d'électronique tels que SparkFun, Adafruit ou Pololu.

  • Microcontrôleur: Arduino Uno ou Nano est idéal pour les débutants. Il a assez d'épingles d'entrée/sortie pour les moteurs et les capteurs et une grande communauté pour le soutien.
  • Capteurs: Deux à quatre capteurs de distance infrarouge (par exemple, les capteurs à ultrasons Sharp GP2Y0A21YK0F) ou HC-SR04. Les capteurs à infrarouge fonctionnent bien pour la détection de parois à courte portée; les ultrasons peuvent mesurer jusqu'à quatre mètres mais sont plus lents.
  • Conducteur de moteur: Module L298N ou L293D pour contrôler la direction et la vitesse de deux moteurs à courant continu.
  • Moteurs et roues: Deux moteurs à courant continu de 3 à 6 V avec roues, plus une troisième roue de roulette ou roulement à billes pour l'équilibre.
  • Châssis: Une plate-forme rigide (acrylique, aluminium ou imprimé en 3D) pour tout monter.
  • Alimentation électrique: Batterie rechargeable (4×AA ou 7.4 V LiPo) avec régulateur de tension si nécessaire.
  • Câblage et tableau de bord: Des fils de saut (mâle à femme, mâle à mâle), une petite planche à pain pour les capteurs de prototypage, et peut-être un PCB personnalisé plus tard.
  • Outils : Tournevis, strip-teaseuses, fer à souder (en option), multimètre pour vérifier les tensions, et un câble USB pour la programmation.

Le coût total d'une version de base est de 30 $ à 50 $, ce qui en fait un projet accessible le week-end.

Construire le châssis robot

Commencez par assembler la base mécanique. Si vous utilisez un châssis acrylique pré-percé, montez les deux moteurs DC sur les côtés opposés près de l'arrière. Attachez les roues aux arbres du moteur. A l'avant, installez une roulette à billes pour que le robot puisse pivoter en douceur.

Pour placer le capteur, positionnez un capteur IR de chaque côté de l'avant, légèrement incliné vers l'extérieur (environ 45 degrés) pour détecter les parois latérales. Un troisième capteur peut être monté à l'avant pour détecter les obstacles tout droit. Si vous utilisez des capteurs ultrasoniques, montez-les en avant et aux coins gauche/droit. Percez ou coupez des trous dans le châssis afin que les capteurs aient une ligne de vue claire. Exemple: Encodeur de roue Pololu , fixations de capteur peuvent être adaptés.

Branchez les broches d'entrée du conducteur aux sorties numériques 5, 6, 9, 10 (ou toutes les broches compatibles avec PWM) de l'Arduino. L'alimentation du moteur doit provenir directement de la batterie; l'alimentation logique peut être prise à partir de la sortie 5 V de l'Arduino. Double-vérification de la polarité—de nombreux conducteurs fonctionnent à la logique 5 V mais peuvent conduire des moteurs à 6-12 V.

Configuration des capteurs

Câblage des capteurs

Chaque capteur IR a trois fils : VCC (5 V), GND et signal. Connectez VCC et GND aux rails Arduino5 V et GND. Connectez la broche de signal à une entrée analogique (par exemple, A0, A1, A2). Si vous utilisez des capteurs ultrasoniques, le HC-SR04 a quatre broches : VCC, Trig, Echo, GND. Connectez Trig et Echo aux broches numériques, et utilisez la bibliothèque NewPing pour un code plus simple.

En savoir plus sur le câblage de capteur sur le site officiel de Arduino- Oui.

Étalonnage

Les capteurs IR produisent une tension analogique qui est inversement liée à la distance. Placez un objet (par exemple un livre) à des distances connues (10 cm, 20 cm, 30 cm) et enregistrez les lectures analogiques. Créez une table de recherche ou une formule dans votre code pour convertir les valeurs brutes en centimètres. Par exemple :

Tester chaque capteur en imprimant des valeurs au moniteur série. Ajuster les seuils : un -wall obstacle si distance < 15 cm, --clair , si > 25 cm. Les capteurs ultrasoniques sont moins affectés par la lumière ambiante mais peuvent être perturbés par des surfaces douces; leur calibration est plus simple parce qu'ils retournent une distance directe de la largeur de l'impulsion.

Programmation du solvant Maze

Le noyau de l'intelligence du robot réside dans sa boucle de décision. Nous allons commencer par un algorithme réactif simple et ensuite l'affiner. Ecrivez votre code dans l'IDE Arduino.

Fonctions de base du mouvement

Pour un robot à entraînement différentiel, le virage consiste à faire tourner un moteur vers l'avant et l'autre vers l'arrière pendant un temps déterminé (p. ex. 300 ms pour un virage à 90 degrés).

De même, pour un virage à droite, set gauche vers l'avant et droite en arrière- Oui.

Détection des obstacles et prise de décisions

L'algorithme le plus simple est toujours à gauche quand il est bloqué (règle de gauche). Lisez les capteurs avant, gauche et droite tous les 50 ms. Pseudocode:

Cela fonctionne pour des labyrinthes simples avec des canaux droits et des joncs en T. Le robot gardera toujours un mur sur son côté gauche. S'il entre dans une impasse, il se retournera parce que les deux capteurs latéraux détectent des murs.

Algorithme de la suite du mur

Pour une meilleure performance, appliquez un wall-follower proportionnel. Au lieu de seuils binaires, utilisez la distance du capteur latéral pour garder le robot à une distance constante d'un mur. Par exemple, si le capteur gauche lit 20 cm et que votre point de consigne est 15 cm, réduisez légèrement la vitesse du moteur gauche pour diriger à gauche. Cela permet une navigation plus fluide et évite les oscillations.

Exemple d'extrait de code pour le mur suivant:

Cet algorithme suppose que le mur est continu d'un côté. Utilisez le capteur avant pour détecter les extrémités de -morts et ensuite passer à une autre règle (p. ex., tourner à droite jusqu'à ce qu'un mur soit trouvé à gauche). Combinez ceci avec la logique de la machine d'état pour des performances robustes.

Pour une compréhension plus approfondie, lire algorithmes de résolution de labyrinthe sur Wikipédia (Algorithme de Trémaux, suiveur mural, remplissage d'inondation).

Essais et itération

Construire un labyrinthe simple à l'aide de morceaux de carton ou de blocs de bois. Le labyrinthe doit avoir des virages à angle droit, des jonctions en T et au moins une extrémité morte. Placer le robot à l'entrée et le laisser courir. Observer son comportement :

  • Ça s'arrête avant de frapper un mur ? Augmentez le seuil du capteur ou ralentissez la vitesse avant. Si le capteur dépasse, réduisez la vitesse du moteur ou ajoutez une portée de détection plus courte.
  • Ça tourne trop ou trop peu ? Étalonner la durée du virage. Utilisez un capteur de gyroscope (MPU6050) pour des virages précis à 90° si nécessaire.
  • Est-ce coincé dans les boucles ? Les simples suiveurs muraux peuvent être coincés dans des boucles infinies dans certains labyrinthes. Ajoutez un simple compteur de culasse ou implémentez l'algorithme Trémaux pour marquer les chemins visités.

Un problème courant est le bruit des capteurs : les capteurs IR produisent des lectures amères. Appliquer un filtre moyen mobile (moyenne des 3-5 dernières lectures) pour lisser les données.

Les capteurs IR peuvent être affectés par la lumière du soleil; dans une pièce lumineuse, vous devrez peut-être ajuster les seuils. Les capteurs ultrasoniques sont immunisés contre la lumière, mais peuvent être confondus par des surfaces douces comme le tissu.

Améliorations avancées

Une fois que votre solveur de base fonctionne, considérez ces mises à jour pour le rendre plus rapide et plus fiable:

  • Mapping en Maze avec mémoire : En stockant les cellules visitées dans un tableau. Lorsque le robot touche une impasse, il marque la cellule comme bloquée et rétrograde à l'aide d'une pile. algorithme de remplissage des inondations (utilisé dans Micromouse) pour trouver le chemin le plus court après l'exploration.
  • Commande PID pour les parois suivantes: Utilisez un contrôleur PID (proportionnel, intégral, dérivé) pour un suivi mural lisse. Le terme intégral aide à surmonter les erreurs systématiques (par exemple, un moteur étant légèrement plus rapide).
  • Encodeurs de roues: Attachez les encodeurs aux moteurs pour mesurer la distance parcourue. Avec l'odométrie, votre robot peut parcourir des distances connues (par exemple, une longueur de cellule) au lieu de la synchronisation.
  • Débogue sans fil : Utilisez Bluetooth ou Wi-Fi pour diffuser les données des capteurs et les informations de la machine sur votre ordinateur.
  • LiPo solaire ou rechargeable: Si votre robot effectue de longs tests, une batterie de grande capacité empêche la réinitialisation à mi-essai.

Pour un guide complet sur la construction d'un résolveur de style Micromuse, Consultez le tutoriel de RobotPark Academy- Oui.

Conclusion

La création d'un résolveur robotisé à partir de zéro est une excellente façon d'apprendre la programmation intégrée, l'intégration des capteurs et la théorie du contrôle. En commençant par quelques capteurs IR et un Arduino, vous pouvez construire un robot qui navigue dans un labyrinthe simple en utilisant la logique de suivi mural. En raffinant le code et en ajoutant le contrôle de mémoire ou PID, votre robot deviendra plus fiable et efficace.