Table des matières:

Robot de suivi de ligne avancé : 22 étapes (avec photos)
Robot de suivi de ligne avancé : 22 étapes (avec photos)

Vidéo: Robot de suivi de ligne avancé : 22 étapes (avec photos)

Vidéo: Robot de suivi de ligne avancé : 22 étapes (avec photos)
Vidéo: 📏 micro:bit Maqueen - Suiveur de ligne 2024, Juillet
Anonim
Image
Image
Prototypage - Perfboard
Prototypage - Perfboard

Il s'agit d'un robot de suivi de ligne avancé basé sur Teensy 3.6 et un capteur de ligne QTRX que j'ai construit et sur lequel je travaille depuis un certain temps. Il y a des améliorations majeures dans la conception et les performances de mon robot suivant de la ligne précédente. La vitesse et la réponse du robot se sont améliorées. La structure globale est compacte et légère. Les composants sont disposés à proximité de l'axe de la roue de manière à minimiser le moment cinétique. Les micromoteurs à engrenages métalliques haute puissance fournissent le couple adéquat et les roues en silicone à moyeu en aluminium offrent une traction indispensable à haute vitesse. Le bouclier d'hélice et les encodeurs de roue permettent au robot de déterminer sa position et son orientation. Avec Teensyview monté à bord, toutes les informations pertinentes peuvent être visualisées et les paramètres importants du programme peuvent être mis à jour à l'aide de boutons-poussoirs.

Pour commencer à construire ce robot, vous aurez besoin des fournitures suivantes (et de beaucoup de temps et de patience à votre disposition).

Fournitures

Électronique

  • Carte de développement Teensy 3.6
  • Prop Shield avec détecteurs de mouvement
  • Sparkfun TeensyVoir
  • Réseau de capteurs de réflectance Pololu QTRX-MD-16A
  • Prototype PCB double face 15x20cm
  • Régulateur de tension élévateur/abaisseur Pololu S9V11F3S5
  • Régulateur de tension réglable 4-5-20V Pololu U3V70A
  • Micro motoréducteur MP12 6V 1580 tr/min avec encodeur (x2)
  • DRV8833 Support de pilote à double moteur (x2)
  • Batterie Li-Po 3,7 V, 750 mAh
  • Interrupteur marche / arrêt
  • Condensateur électrolytique 470uF
  • Condensateur électrolytique 1000uF (x2)
  • Condensateur céramique 0.1uF (x5)
  • Boutons poussoirs (x3)
  • LED verte 10mm (x2)

Matériel

  • Roue Atom Silicone 37x34mm (x2)
  • Roulette à billes Pololu avec bille en métal 3/8"
  • Support moteur N20 (x2)
  • Boulon et écrous

Câbles et connecteurs

  • Fils souples 24AWG
  • Dérivation 24 broches FFC vers DIP et câble FFC (Type A, longueur 150 mm)
  • En-tête de broche femelle ronde
  • Borne longue à en-tête de broche femelle ronde
  • En-tête femelle à double rangée à angle droit
  • En-tête mâle à double rangée à angle droit
  • En-tête de broche mâle
  • En-tête de broche d'aiguille mâle

Outils

  • Multimètre
  • Fer à souder
  • Fil de soudure
  • Pince à dénuder
  • Coupe-fil

Étape 1: Présentation des systèmes

Comme pour ma conception précédente d'un robot auto-équilibré, ce robot est un assemblage de panneaux de dérivation montés sur un panneau perforé qui sert également de structure.

Les principaux systèmes du robot sont décrits ci-dessous.

Microcontrôleur: Carte de développement Teensy 3.6 avec processeur ARM Cortex-M4 32 bits 180MHz.

Capteur de ligne: Matrice de capteurs de ligne à sortie analogique QTRX-MD-16A à 16 canaux de Pololu dans un arrangement à densité moyenne (pas de capteur de 8 mm).

Entraînement: 6V, 1580 tr/min, micro-réducteurs métalliques haute puissance avec encodeur de roue magnétique et roues en silicone montées sur moyeux en aluminium.

Odométrie: Paires d'encodeurs à roues magnétiques pour estimer les coordonnées et la distance parcourue.

Capteur d'orientation: Prop shield avec capteurs de mouvement pour estimer la position et le cap du robot.

Alimentation: batterie lipo 3,7 V, 750 mAh comme source d'alimentation. Le régulateur élévateur/abaisseur de 3,3 V alimente le microcontrôleur, les capteurs et le dispositif d'affichage. Le régulateur élévateur réglable alimente les deux moteurs.

Interface utilisateur: Teensyview pour l'affichage des informations. Breakout à trois boutons pour accepter les entrées de l'utilisateur. Deux nombres de LED vertes de 10 mm de diamètre pour l'indication d'état pendant le fonctionnement.

Étape 2: Commençons le prototypage

Image
Image

Nous allons implémenter le circuit ci-dessus sur le perfboard. Nous devons d'abord garder nos cartes de dérivation prêtes en soudant des en-têtes dessus. La vidéo donnera une idée des en-têtes à souder sur quelles cartes de dérivation.

Après avoir soudé les embases sur les cartes de dérivation, empilez le Teensyview et le dérivation du bouton-poussoir sur Teensy.

Étape 3: Prototypage - Perfboard

Prototypage - Perfboard
Prototypage - Perfboard

Procurez-vous le prototype de panneau perforé double face 15x20cm et marquez la limite avec un marqueur permanent comme indiqué sur l'image. Percez des trous de taille M2 pour monter le réseau de capteurs, la roulette et les micromoteurs à engrenages métalliques aux emplacements marqués d'un cercle blanc. Nous couperons plus tard le panneau perforé le long de la limite après avoir soudé et testé tous les composants.

Nous allons commencer notre prototypage en soudant les broches d'en-tête et les prises sur le panneau perforé. Les panneaux de dérivation seront ensuite insérés sur ces en-têtes. Accordez une attention particulière à la position des en-têtes sur le panneau perforé. Nous allons connecter tous les fils en fonction de cette disposition des en-têtes.

Étape 4: Prototypage - Prop Shield

Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield
Prototypage - Prop Shield

Nous allons d'abord souder les connexions au blindage de l'hélice. Étant donné que nous n'utilisons que les capteurs de mouvement du blindage de l'hélice, nous devons connecter uniquement les broches SCL, SDA et IRQ en dehors des broches 3V et de terre du blindage de l'hélice.

Une fois la connexion terminée, insérez Teensy et le prop shield et calibrez les capteurs de mouvement en suivant les étapes mentionnées ici.

Étape 5: Prototypage - Alimentation et mise à la terre

Prototypage - Puissance et Terre
Prototypage - Puissance et Terre

Soudez toutes les connexions d'alimentation et de terre en vous référant à l'image. Insérez toutes les cartes de dérivation en place et assurez la continuité à l'aide d'un multimètre. Vérifiez les différents niveaux de tension à bord.

  • Tension de sortie Li-po (généralement entre 3V et 4.2V)
  • Tension de sortie du régulateur élévateur/abaisseur (3,3 V)
  • Tension de sortie du régulateur élévateur réglable (réglée sur 6 V)

Étape 6: Prototypage - Motor Driver Carrier

Prototypage - Motor Driver Carrier
Prototypage - Motor Driver Carrier
Prototypage - Motor Driver Carrier
Prototypage - Motor Driver Carrier
Prototypage - Motor Driver Carrier
Prototypage - Motor Driver Carrier

La carte porteuse à double moteur DRV8833 peut fournir des courants continus de 1,2 A et de crête de 2 A par canal. Nous allons connecter les deux canaux en parallèle pour entraîner un moteur. Soudez les connexions en suivant les étapes ci-dessous.

  • Mettez en parallèle les deux entrées et les deux sorties du porte-moteur comme indiqué sur l'image.
  • Connectez les fils de commande d'entrée au pilote du moteur.
  • Connectez un condensateur électrolytique de 1000 uF et un condensateur en céramique de 0,1 uF aux bornes Vin et Gnd des deux cartes porteuses.
  • Connectez un condensateur céramique de 0,1 uF aux bornes de sortie du pilote de moteur.

Étape 7: Prototypage - En-tête de réseau de capteurs de ligne

Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne
Prototypage - En-tête de réseau de capteurs de ligne

Teensy 3.6 possède deux ADC - ADC0 et ADC1 qui sont multiplexés sur 25 broches accessibles. Nous pouvons accéder à deux broches des deux ADC en même temps. Nous allons connecter huit capteurs de ligne chacun à ADC0 et ADC1. Les capteurs de nombre pair seront connectés à ADC1 et les capteurs de nombre impair à ADC0. Soudez les connexions en suivant les étapes ci-dessous. Nous connecterons plus tard le capteur de ligne à l'aide d'un adaptateur et d'un câble FFC vers DIP.

  • Connectez toutes les broches de capteur paires (16, 14, 12, 10, 8, 6, 4, 2) comme indiqué sur l'image. Acheminez le fil pour connecter la broche du capteur 12 à travers l'envers du panneau perforé.
  • Connectez la broche de contrôle de l'émetteur (PAIR) à la broche Teensy 30.
  • Connectez toutes les broches de capteur impaires (15, 13, 11, 9, 7, 5, 3, 1) comme indiqué sur l'image.
  • Connectez un condensateur électrolytique de 470 uF entre Vcc et Gnd.

Si vous observez de près les broches du capteur de ligne et leurs broches d'en-tête correspondantes sur le perboard, vous remarquerez que la rangée supérieure du capteur de ligne correspond à la rangée inférieure de l'en-tête sur le perboard et vice versa. En effet, lorsque nous connectons le capteur de ligne au panneau perforé à l'aide d'en-têtes à angle droit à deux rangées, les rangées s'aligneront correctement. Il m'a fallu un certain temps pour comprendre cela et corriger les affectations de broches dans le programme.

Étape 8: Prototypage - Micro-moteur à engrenages et encodeur

Prototypage - Micro motoréducteur et encodeur
Prototypage - Micro motoréducteur et encodeur
  • Fixez le micro-moteur à engrenages métalliques avec encodeur à l'aide des supports de moteur N20.
  • Connectez les fils du moteur et de l'encodeur comme indiqué sur l'image.
  • Encodeur gauche - Teensy pins 4 & 0
  • Encodeur droit - Teensy pins 9 & 27

Étape 9: Prototypage - LED

Prototypage - LED
Prototypage - LED
Prototypage - LED
Prototypage - LED

Les deux LED indiquent si le robot a détecté un virage ou non. J'ai utilisé une résistance série 470 ohms pour connecter les LED à Teensy.

  • Anode LED gauche vers Teensy broche 6
  • Anode LED droite vers Teensy broche 8

Étape 10: Prototypage - Breakouts

Image
Image
Prototypage - Breakouts
Prototypage - Breakouts

Maintenant que nous avons terminé toutes nos soudures sur le panneau perforé, nous pouvons soigneusement couper le long de la limite marquée sur le panneau perforé et retirer les morceaux supplémentaires de panneau perforé. Fixez également les deux roues et la roulette.

Insérez toutes les cartes de dérivation dans leurs prises respectives. Pour l'insertion du breakout FFC-DIP et pour la fixation du capteur de ligne QTRX-MD-16A, reportez-vous à la vidéo.

Étape 11: Présentation des bibliothèques de logiciels

Présentation des bibliothèques de logiciels
Présentation des bibliothèques de logiciels

Nous allons programmer le Teensy dans Arduino IDE. Nous aurons besoin de quelques bibliothèques avant de commencer. Les librairies que nous utiliserons sont:

  • Encodeur
  • Teensyview
  • EEPROM
  • CAN
  • NXPMotionSense

Et certains qui ont été écrits spécifiquement pour ce robot,

  • Bouton
  • Capteur de ligne
  • TeensyviewMenu
  • Moteurs

Les bibliothèques spécifiques à ce robot sont discutées en détail et sont disponibles en téléchargement dans les prochaines étapes.

Étape 12: Explication des bibliothèques – PushButton

Cette bibliothèque est destinée à l'interfaçage de la carte de dérivation des boutons-poussoirs avec le Teensy. Les fonctions utilisées sont

PushButton(int leftButtonPin, int centerButtonPin, int rightButtonPin);

L'appel de ce constructeur en créant un objet configure les broches du bouton-poussoir en mode INPUT_PULLUP.

int8_t waitForButtonPress(void);

Cette fonction attend qu'un bouton soit enfoncé et relâché et renvoie le code de la clé.

int8_t getSingleButtonPress(void);

Cette fonction vérifie si un bouton est enfoncé et relâché. Si oui, renvoie le code clé sinon renvoie zéro.

Étape 13: Bibliothèques expliquées - Capteur de ligne

LineSensor est la bibliothèque permettant d'interfacer le réseau de capteurs linéaires avec Teensy. Voici les fonctions utilisées.

LineSensor(void);

L'appel de ce constructeur en créant un objet initialise ADC0 et ADC1, lit les valeurs de seuil, minimum et maximum de l'EEPROM et configure les broches du capteur en mode d'entrée et la broche de contrôle de l'émetteur en mode de sortie.

void calibrer (uint8_t calibrationMode);

Cette fonction calibre les capteurs de ligne. Le mode de calibrage peut être MIN_MAX ou MEDIAN_FILTER. Cette fonction est expliquée en détail dans une étape ultérieure.

void getSensorsAnalog(uint16_t *sensorValue, mode uint8_t);

Lit le réseau de capteurs dans l'un des trois modes passés en argument. Le mode est l'état des émetteurs et peut être ON, OFF ou TOGGLE. Le mode TOGGLE compense les lectures du capteur de la réflectance due à la lumière ambiante. Les capteurs connectés à ADC0 et ADC1 sont lus de manière synchrone.

int getLinePosition(uint16_t *sensorValue);

Calcule la position du réseau de capteurs sur la ligne par la méthode de la moyenne pondérée.

uint16_t getSensorsBinary(uint16_t *sensorValue);

Renvoie une représentation 16 bits de l'état des capteurs. Un un binaire indique que le capteur est au-dessus de la ligne et un zéro binaire indique que le capteur est hors ligne.

uint8_t countBinary(uint16_t binaryValue);

Le passage de la représentation 16 bits des valeurs des capteurs à cette fonction renvoie le nombre de capteurs qui se trouvent sur la ligne.

void getSensorsNormalized(uint16_t *sensorValue, mode uint8_t);

Lit les valeurs du capteur et contraint chaque valeur du capteur à ses valeurs min et max correspondantes. Les valeurs du capteur sont ensuite mappées de leur plage min à max correspondante à la plage 0 à 1000.

Étape 14: Bibliothèques expliquées - TeensyviewMenu

TeensyviewMenu est la bibliothèque où les fonctions du menu d'affichage sont accessibles. Voici les fonctions utilisées.

TeensyViewMenu(void);

L'appel de ce constructeur crée un objet de classe LineSensor, PushButton et TeensyView.

void intro(void);

C'est pour naviguer dans le menu.

test nul (vide);

Ceci est appelé en interne dans le menu lorsque les valeurs du capteur de ligne doivent être affichées sur Teensyview pour le test.

Étape 15: Explication des bibliothèques – Moteurs

Motors est la bibliothèque utilisée pour piloter les deux moteurs. Voici les fonctions utilisées.

Moteurs (vide);

L'appel de ce constructeur en créant un objet configure la commande de direction du moteur et les broches de commande PWM en mode de sortie.

void setSpeed(int leftMotorSpeed, int rightMotorSpeed);

L'appel de cette fonction entraîne les deux moteurs à des vitesses passées en arguments. La valeur de la vitesse peut aller de -255 à +255 avec un signe négatif indiquant que le sens de rotation est inversé.

Étape 16: Tests - Odométrie encodeur

Nous testerons les encodeurs magnétiques à roues et afficherons la position et la distance parcourue par le robot.

Téléchargez le DualEncoderTeensyview.ino. Le programme affiche les coches de l'encodeur sur Teensyview. L'encodeur s'incrémente si vous déplacez le robot vers l'avant et décrémentez si vous le déplacez vers l'arrière.

Téléchargez maintenant EncoderOdometry.ino. Ce programme affiche la position du robot en termes de coordonnées x-y, affiche la distance totale parcourue en centimètre et l'angle tourné en degrés.

J'ai fait référence à la mise en œuvre de l'évaluation à l'estime par odométrie sur un robot avec entraînement différentiel servo R/C de la Seattle Robotics Society pour déterminer la position à partir des graduations de l'encodeur.

Étape 17: Test - Capteurs de mouvement Prop Shield

Assurez-vous d'avoir calibré les capteurs de mouvement en suivant les étapes mentionnées ici.

Téléchargez maintenant le PropShieldTeensyView.ino. Vous devriez pouvoir voir les valeurs de l'accéléromètre, du gyroscope et du magnétomètre des trois axes sur le Teensyview.

Étape 18: Aperçu du programme

Le programme pour le suiveur de ligne avancé est écrit en Arduino IDE. Le programme fonctionne dans l'ordre suivant expliqué ci-dessous.

  • Les valeurs stockées dans l'EEPROM sont lues et le menu est affiché.
  • En appuyant sur LAUNCH, le programme entre dans la boucle.
  • Les valeurs de capteur de ligne normalisées sont lues.
  • La valeur binaire de la position de la ligne est obtenue en utilisant des valeurs de capteur normalisées.
  • Le nombre de capteurs qui se trouvent sur la ligne est calculé à partir de la valeur binaire de la position de la ligne.
  • Les graduations de l'encodeur sont mises à jour et la distance totale parcourue, les coordonnées x-y et l'angle sont mis à jour.
  • Pour différentes valeurs de comptage binaire allant de 0 à 16, un ensemble d'instructions est exécuté. Si le nombre binaire est compris entre 1 et 5 et si les capteurs situés au-dessus de la ligne sont adjacents les uns aux autres, la routine PID est appelée. La rotation est effectuée dans d'autres combinaisons de valeur binaire et de nombre binaire.
  • Dans la routine PID (qui est en fait une routine PD), les moteurs sont entraînés à des vitesses calculées sur la base de l'erreur, du changement d'erreur, des valeurs Kp et Kd.

Le programme à l'heure actuelle ne mesure pas les valeurs d'orientation à partir du bouclier d'hélice. Ceci est un travail en cours et est en cours de mise à jour.

Téléchargez TestRun20.ino. Nous verrons comment naviguer dans le menu, ajuster les paramètres et comment calibrer les capteurs de ligne dans les prochaines étapes à la suite desquelles nous testerons notre robot.

Étape 19: Navigation dans le menu et les paramètres

Le menu comporte les paramètres suivants qui peuvent être parcourus à l'aide des boutons-poussoirs gauche et droit et sélectionnés à l'aide du bouton-poussoir central. Les réglages et leurs fonctions sont décrits ci-dessous.

  1. CALIBRER: Pour calibrer les capteurs de ligne.
  2. TEST: Pour afficher les valeurs du capteur de ligne.
  3. LANCEMENT: Pour commencer la ligne suivante.
  4. VITESSE MAX: Pour définir la limite supérieure de la vitesse du robot.
  5. VITESSE DE ROTATION: Pour définir la limite supérieure de la vitesse du robot lorsqu'il effectue un virage, c'est-à-dire lorsque les deux roues tournent à des vitesses égales dans des directions opposées.
  6. KP: Constante proportionnelle.
  7. KD: constante dérivée.
  8. RUN MODE: Pour choisir entre deux modes de fonctionnement - NORMAL et ACCL. En mode NORMAL, le robot fonctionne à des vitesses prédéfinies correspondant aux valeurs de position de la ligne. En mode ACCL, la VITESSE MAX du robot est remplacée par la VITESSE ACCL à des étapes prédéfinies de la piste. Cela peut être utilisé pour accélérer le robot sur des sections droites de la piste. Les paramètres suivants ne sont accessibles que si RUN MODE est défini sur ACCL.
  9. LAP DISTANCE: Pour définir la longueur totale de la piste de course.
  10. ACCL SPEED: Pour régler la vitesse d'accélération du robot. Cette vitesse remplace la VITESSE MAX aux différents stades de la piste tels que définis ci-dessous.
  11. NON. OF STAGES: Pour définir le nombre d'étages où ACCL SPEED est utilisé.
  12. ETAPE 1: Pour régler les distances de début et de fin de l'étape dans laquelle MAX SPEED est remplacé par ACCL SPEED. Pour chaque étape, les distances de départ et d'arrivée peuvent être réglées séparément.

Étape 20: Calibrage du capteur de ligne

Image
Image

L'étalonnage du capteur de ligne est le processus par lequel la valeur seuil de chacun des 16 capteurs est déterminée. Cette valeur de seuil est utilisée pour décider si un capteur particulier est au-dessus de la ligne ou non. Pour déterminer les valeurs seuils de 16 capteurs, nous utilisons l'une ou l'autre des deux méthodes.

FILTRE MÉDIAN: Dans cette méthode, les capteurs de ligne sont placés au-dessus de la surface blanche et un nombre prédéfini de lectures de capteur est effectué pour les 16 capteurs. Les valeurs médianes des 16 capteurs sont déterminées. Le même processus est répété après avoir placé les capteurs de ligne sur la surface noire. La valeur seuil est la moyenne des valeurs médianes des surfaces noires et blanches.

MIN MAX: Dans cette méthode, les valeurs du capteur sont lues à plusieurs reprises jusqu'à ce que l'utilisateur demande un arrêt. Les valeurs maximales et minimales rencontrées par chaque capteur sont stockées. La valeur seuil est la moyenne des valeurs minimale et maximale.

Les valeurs de seuil ainsi obtenues sont mappées sur une plage de 0 à 1000.

L'étalonnage des capteurs de ligne par la méthode MIN MAX est montré dans la vidéo. Après avoir étalonné les capteurs de ligne, les données peuvent être visualisées comme indiqué sur l'image. Les informations suivantes s'affichent.

  • Une représentation binaire 16 bits de la position de la ligne avec un 1 binaire indiquant que le capteur de ligne correspondant est au-dessus de la ligne et un 0 binaire indiquant que le capteur de ligne est hors ligne.
  • Un décompte du nombre total de capteurs qui sont au-dessus de la ligne.
  • Valeurs minimales, maximales et capteurs (brutes et normalisées) des 16 capteurs, un capteur à la fois.
  • Position de la ligne dans la plage -7500 à +7500.

Les valeurs minimales et maximales du capteur de ligne sont ensuite stockées dans l'EEPROM.

Étape 21: Testez l'exécution

Image
Image

La vidéo montre une course d'essai dans laquelle le robot est programmé pour s'arrêter après avoir effectué un tour.

Étape 22: Réflexions finales et améliorations

Concours de Robots
Concours de Robots

Le matériel qui est mis en place pour construire ce robot n'est pas pleinement utilisé par le programme qui l'exécute. Beaucoup d'améliorations pourraient être apportées sur la partie programme. Les capteurs de mouvement du bouclier d'hélice ne sont pas utilisés actuellement pour déterminer la position et l'orientation. Les données d'odométrie des encodeurs peuvent être combinées avec les données d'orientation du bouclier d'hélice pour déterminer avec précision la position et le cap du robot. Ces données peuvent ensuite être utilisées pour programmer le robot pour apprendre la piste en plusieurs tours. Je vous encourage à expérimenter sur cette partie et à partager vos résultats.

Bonne chance.

Concours de Robots
Concours de Robots

Deuxième prix du concours Robots

Conseillé: