- Matériel requis:
- Exigence de programmation:
- Configuration du traitement sur Raspberry Pi:
- Schéma:
- Programme de suivi de balle Raspberry Pi:
- Fonctionnement du robot de suivi de balle Raspberry Pi:
Le domaine de la robotique, de l'intelligence artificielle et de l'apprentissage automatique évolue rapidement et est sûr de changer le mode de vie de l'humanité dans un proche avenir. On pense que les robots comprennent et interagissent avec le monde réel grâce à des capteurs et au traitement d'apprentissage automatique. La reconnaissance d'image est l'une des façons les plus populaires dont les robots comprennent les objets en regardant le monde réel à travers une caméra, comme nous le faisons. Dans ce projet, utilisons la puissance de Raspberry Pi pour construire un robot qui pourrait suivre la balle et la suivre comme les robots qui jouent au football.
OpenCV est un outil très célèbre et open source utilisé pour le traitement d'image, mais dans ce tutoriel, pour simplifier les choses, nous utilisons l'IDE de traitement. Étant donné que le traitement pour ARM a également publié la bibliothèque GPIO pour le traitement, nous n'aurons plus à passer de python au traitement pour travailler avec Raspberry Pi. Ça a l'air cool, non? Alors commençons.
Matériel requis:
- Tarte aux framboises
- Module caméra avec câble ruban
- Châssis de robot
- Moteurs à engrenages avec roue
- Pilote de moteur L293D
- Banque d'alimentation ou toute autre source d'alimentation portable
Exigence de programmation:
- Moniteur ou autre écran pour Raspberry pi
- Clavier ou souris pour Pi
- Logiciel de traitement ARM
Remarque: Il est obligatoire d'avoir un écran connecté à Pi via des fils pendant la programmation car ce n'est qu'alors que la vidéo de la caméra peut être visualisée
Configuration du traitement sur Raspberry Pi:
Comme indiqué précédemment, nous utiliserons l'environnement de traitement pour programmer notre Raspberry Pi et non la manière par défaut d'utiliser python. Alors, suivez les étapes ci-dessous:
Étape 1: - Connectez votre Raspberry Pi à votre moniteur, clavier et souris et allumez-le.
Étape 2: - Assurez-vous que votre Pi est connecté à une connexion Internet active car nous sommes sur le point de télécharger peu de choses.
Étape 3: - Cliquez sur Processing ARM, pour télécharger l'IDE de traitement pour Raspberry Pi. Le téléchargement se fera sous la forme d'un fichier ZIP.
Étape 4: - Une fois téléchargé, extrayez les fichiers de votre dossier ZIP dans votre répertoire préféré. Je viens de l'extraire sur mon bureau.
Étape 5: - Maintenant, ouvrez le dossier extrait et cliquez sur le fichier nommé traitement. Il devrait ouvrir une fenêtre comme indiqué ci-dessous.
Étape 6: - C'est l'environnement dans lequel nous taperons nos codes. Pour les personnes familiarisées avec Arduino, ne soyez pas choqué OUI, l'IDE ressemble à Arduino, tout comme le programme.
Étape 7: - Nous avons besoin de deux bibliothèques pour que notre programme de suivi de balle fonctionne, pour l'installer, cliquez simplement sur Sketch -> Importer une bibliothèque -> Ajouter une bibliothèque . La boîte de dialogue suivante s'ouvre.
Étape 8: - Utilisez la zone de texte en haut à gauche pour rechercher Raspberry Pi et appuyez sur Entrée, le résultat de la recherche devrait ressembler à ceci.
Étape 9: - Recherchez les bibliothèques nommées «GL Video» et «Hardware I / O» et cliquez sur installer pour les installer. Assurez-vous d'installer les deux bibliothèques.
Étape 10: - En fonction de votre connexion Internet, l'installation prendra quelques minutes. Une fois terminé, nous sommes prêts pour le traitement du logiciel.
Schéma:
Le schéma de circuit de ce projet de suivi de balle Raspberry Pi est illustré ci-dessous.
Comme vous pouvez le voir, le circuit implique une caméra PI, un module de pilote de moteur et une paire de moteurs connectés au Raspberry pi. Le circuit complet est alimenté par une banque d'alimentation mobile (représentée par une pile AAA dans le circuit ci-dessus).
Étant donné que les détails des broches ne sont pas mentionnés sur le Raspberry Pi, nous devons vérifier les broches à l'aide de l'image ci-dessous
Pour piloter les moteurs, nous avons besoin de quatre broches (A, B, A, B). Ces quatre broches sont connectées respectivement à partir de GPIO14,4,17 et 18. Les fils orange et blanc forment ensemble la connexion pour un moteur. Nous avons donc deux paires de ce type pour deux moteurs.
Les moteurs sont connectés au module de commande de moteur L293D comme indiqué sur l'image et le module de commande est alimenté par une banque d'alimentation. Assurez-vous que la terre de la banque d'alimentation est connectée à la terre du Raspberry Pi, alors seulement votre connexion fonctionnera.
Voilà que nous en avons terminé avec notre connexion matérielle, revenons à notre environnement de traitement et commençons à programmer pour apprendre à notre robot à suivre une balle.
Programme de suivi de balle Raspberry Pi:
Le programme de traitement complet de ce projet est donné à la fin de cette page, que vous utilisez directement. Plus loin juste ci-dessous, j'ai expliqué le fonctionnement du code afin que vous puissiez l'utiliser pour d'autres projets similaires.
Le concept du programme est très simple. Bien que l'intention du projet soit de suivre une balle, nous n'allons pas le faire. Nous allons simplement identifier la balle en utilisant sa couleur. Comme nous le savons tous, les vidéos ne sont rien d'autre que des cadres d'images continus. Nous prenons donc chaque photo et la divisons en pixels. Ensuite, nous comparons chaque couleur de pixel avec la couleur de la balle; si une correspondance est trouvée, nous pouvons dire que nous avons trouvé la balle. Avec ces informations, nous pouvons également identifier la position de la balle (couleur du pixel) sur l'écran. Si la position est extrême gauche, nous déplaçons le robot vers la droite, si la position est extrême droite, nous déplaçons le robot vers la gauche afin que la position du pixel reste toujours au centre de l'écran. Vous pouvez regarder la vidéo de vision par ordinateur de Daniel shiffman pour obtenir une image claire.
Comme toujours, nous commençons par importer les deux bibliothèques que nous téléchargeons. Cela peut être fait par les deux lignes suivantes. La bibliothèque d'E / S matérielles est utilisée pour accéder aux broches GPIO du PI directement depuis l'environnement de traitement, la bibliothèque glvideo est utilisée pour accéder au module caméra Raspberry Pi.
import processing.io. *; import gohai.glvideo. *;
Dans la fonction de configuration , nous initialisons les broches de sortie pour contrôler le moteur et obtenons également la vidéo de la caméra pi et la dimensionnons dans une fenêtre de taille 320 * 240.
void setup () {size (320, 240, P2D); vidéo = nouveau GLCapture (ce); video.start (); trackColor = couleur (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
Le tirage vide est comme la boucle infinie le code à l'intérieur de cette boucle sera exécuté tant que le programme est terminé. Si une source de caméra est disponible, nous lisons la vidéo qui en sort
void draw () {arrière-plan (0); if (video.available ()) {video.read (); }}
Ensuite, nous commençons à diviser l'image vidéo en pixels. Chaque pixel a une valeur de rouge, vert et bleu. Ces valeurs sont stockées dans la variable r1, g1 et b1
for (int x = 0; x <video.width; x ++) {for (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // Quelle est la couleur actuelle de la couleur currentColor = video.pixels; float r1 = rouge (currentColor); float g1 = vert (currentColor); float b1 = bleu (currentColor);
Pour détecter la couleur de la balle dans un premier temps, il faut cliquer sur la couleur. Une fois cliqué, la couleur de la balle sera stockée dans la variable appelée trackColour .
void mousePressed () {// Enregistrer la couleur où la souris est cliquée dans la variable trackColor int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
Une fois que nous avons la couleur de la piste et la couleur actuelle, nous devons les comparer. Cette comparaison utilise la fonction dist. Il vérifie la proximité de la couleur actuelle avec la couleur de la piste.
float d = dist (r1, g1, b1, r2, g2, b2);
La valeur de dist sera zéro pour une correspondance exacte. Donc, si la valeur de dist est inférieure à une valeur spécifiée (record du monde), nous supposons que nous avons trouvé la couleur de la piste. Ensuite, nous obtenons l'emplacement de ce pixel et le stockons dans la variable la plus proche X et la plus proche Y pour trouver l'emplacement de la balle
if (d <worldRecord) {worldRecord = d; le plus procheX = x; le plus procheY = y; }
Nous dessinons également une ellipse autour de la couleur trouvée pour indiquer que la couleur a été trouvée. La valeur de la position est également imprimée sur la console, cela aidera beaucoup lors du débogage.
if (worldRecord <10) {// Trace un cercle au niveau du remplissage de pixel suivi (trackColor); strokeWeight (4.0); course (0); ellipse (la plus procheX, la plus procheY, 16, 16); println (le plus procheX, le plus procheY);
Enfin, nous pouvons comparer la position du X le plus proche et du Y le plus proche et ajuster les moteurs de manière à ce que la couleur atteigne le centre de l'écran. Le code ci-dessous est utilisé pour faire tourner le robot vers la droite car la position X de la couleur a été trouvée sur le côté gauche de l'écran (<140)
if (le plus procheX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); retard (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("Tourner à droite"); }
De même, nous pouvons vérifier la position de X et Y pour contrôler les moteurs dans la direction souhaitée. Comme toujours, vous pouvez vous référer au bas de la page pour le programme complet.
Fonctionnement du robot de suivi de balle Raspberry Pi:
Une fois que vous êtes prêt avec le matériel et le programme, il est temps de vous amuser. Avant de tester notre bot sur le terrain, nous devons nous assurer que tout fonctionne correctement. Connectez votre Pi pour surveiller et lancer le code de traitement. Vous devriez voir le flux vidéo sur une petite fenêtre. Maintenant, amenez la balle à l'intérieur du cadre et cliquez sur la balle pour apprendre au robot qu'il doit suivre cette couleur particulière. Maintenant, déplacez la balle autour de l'écran et vous devriez remarquer que les roues tournent.
Si tout fonctionne comme prévu, relâchez le bot sur le terrain et commencez à jouer avec. Assurez-vous que la pièce est uniformément éclairée pour de meilleurs résultats. Le fonctionnement complet du projet est montré dans la vidéo ci-dessous. J'espère que vous avez compris le projet et aimé construire quelque chose de similaire. Si vous rencontrez des problèmes, n'hésitez pas à les publier dans la section commentaires ci-dessous ou à l'aide.