Table des matières:
- Fournitures
- Étape 1: Présentation
- Étape 2: Matériaux et logiciels utilisés dans ce projet
- Étape 3: Que faire ?
- Étape 4: Schémas
- Étape 5: Comment faire ?
- Étape 6: Pseudo-code
- Étape 7: Coder
- Étape 8: Liens externes
Vidéo: Robot de suivi de balle : 8 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Donc, en cela, je vais expliquer comment faire un robot de suivi de balle qui est un robot qui identifiera une balle et la suivra. Il s'agit essentiellement d'une technique de surveillance automatisée qui peut être utilisée dans le monde moderne. Alors, laissez-nous simplement entrer et commencer à construire…
REMARQUE: Il s'agit de la tâche partielle soumise à l'Université Deakin, École d'informatique, SIT-210 Développement de systèmes embarqués
Fournitures
www.hackster.io/junejarohan/ball-tracking-robot-7a9865
Étape 1: Présentation
La surveillance d'aujourd'hui présente un inconvénient majeur qui est qu'elle repose sur l'implication des humains qui, comme nous le savons tous, peuvent être facilement distraits, il était donc de la plus haute importance de découvrir un système capable de surveiller les régions de manière autonome et continue. Et nous voulons également identifier les choses et les dangers odieux ou indésirables tout en prenant des décisions et en répondant en conséquence. Le suivi des objets avec l'utilisation de systèmes intelligents et d'ordinateurs est donc essentiel et crucial pour réaliser une surveillance automatisée.
Tout système de surveillance extérieure doit pouvoir suivre les objets en mouvement dans son champ de vision, classer ces objets et détecter certaines de leurs activités. J'ai développé une méthode pour suivre et classer ces objets dans des scénarios réalistes. Le suivi d'objet dans une seule caméra est effectué à l'aide d'une soustraction d'arrière-plan, suivie d'une correspondance de région. Cela prend en compte plusieurs indices, y compris les vitesses, les tailles et les distances des boîtes englobantes.
Étape 2: Matériaux et logiciels utilisés dans ce projet
Composants matériels utilisés:
- Framboise Pi (x1)
- Module caméra Raspberry Pi (x1)
- Capteur à ultrasons (x3)
- Pilotes de moteur SparkFun Dual H-Bridge L298 (x1)
- Moteur à courant continu (x1)
- Planche à pain (x1)
- Fils de connexion
Logiciel utilisé:
OpenCV
Outils manuels:
Python
Étape 3: Que faire ?
Tout système de surveillance extérieure doit pouvoir suivre les objets en mouvement dans son champ de vision, classer ces objets et détecter certaines de leurs activités. J'ai développé une méthode pour suivre et classer ces objets dans des scénarios réalistes. Le suivi d'objet dans une seule caméra est effectué à l'aide d'une soustraction d'arrière-plan, suivie d'une correspondance de région. Cela prend en compte plusieurs indices, y compris les vitesses, les tailles et les distances des boîtes englobantes.
La chose cruciale lors de la détection d'images image par image était d'éviter toute chute d'image, car le bot peut alors entrer dans un état de limbes s'il ne remarque pas la direction du mouvement de la balle à cause des chutes d'image. Si la balle sort de la portée de la caméra, elle entrera dans ce que nous appelons un état de limbes, dans ce cas, le bot fait un virage à 360 degrés pour voir l'espace autour d'elle jusqu'à ce que la balle revienne dans le cadre de la caméra, puis commencez à vous déplacer dans sa direction.
Pour l'analyse de l'image, je prends chaque image et la masque ensuite avec la couleur nécessaire. Ensuite, je trouve tous les contours et je trouve le plus grand d'entre eux et je le délimite dans un rectangle. Et montrez le rectangle sur l'image principale et trouvez les coordonnées du centre du rectangle.
Enfin, le bot essaie d'amener les coordonnées de la balle au centre de son axe de coordonnées. C'est ainsi que fonctionne le robot. Cela peut être encore amélioré en utilisant un appareil IoT comme une particule de photons qui peut vous permettre d'être informé lorsqu'une chose est détectée et que le robot la suit ou lorsque le robot en a perdu la trace et revient maintenant à la base.
Pour le traitement des images, vous devez installer le logiciel OpenCV sur votre raspberry pi, ce qui était assez délicat pour moi.
Vous pouvez obtenir toutes les informations nécessaires pour installer OpenCV via ce lien: cliquez ici
Étape 4: Schémas
Ci-dessus, j'ai fourni les schémas de mon projet et avec lui le circuit imprimé (PCB).
Et voici quelques-unes des principales connexions que vous devez effectuer:
• Tout d'abord le module Raspberry Pi Camera est directement connecté au Raspberry Pi.
• Les capteurs à ultrasons VCC sont connectés à la borne commune de même qu'au GND (masse) et les deux ports restants du capteur à ultrasons sont connectés aux broches GPIO du Raspberry Pi.
• Les moteurs sont connectés à l'aide du pont en H.
• L'alimentation est fournie à l'aide de la batterie.
J'ai également ajouté la vidéo qui pourrait aider à comprendre le fonctionnement du capteur à ultrasons et son fonctionnement.
et vous pouvez également suivre ce lien si vous ne trouvez pas la vidéo ci-dessus.
Étape 5: Comment faire ?
J'ai fait ce projet représentant un robot de base qui peut suivre une balle. Le robot utilise une caméra pour traiter l'image en prenant des images et en suivant la balle. Pour suivre la balle, diverses caractéristiques telles que sa couleur, sa taille et sa forme sont utilisées.
Le Robot trouve une couleur codée en dur, puis recherche la balle de cette couleur et la suit. J'ai choisi Raspberry Pi comme micro-contrôleur dans ce projet car il nous permet d'utiliser son module caméra et donne une grande flexibilité dans le code car il utilise le langage python qui est très convivial et il nous permet également d'utiliser la bibliothèque OpenCV pour analyser les images.
Un pont en H a été utilisé pour changer le sens de rotation des moteurs ou pour les arrêter.
Pour l'analyse de l'image, je prends chaque image et la masque ensuite avec la couleur nécessaire. Ensuite, je trouve tous les contours et je trouve le plus grand d'entre eux et je le délimite dans un rectangle. Et montrez le rectangle sur l'image principale et trouvez les coordonnées du centre du rectangle.
Enfin, le bot essaie d'amener les coordonnées de la balle au centre de son axe de coordonnées. C'est ainsi que fonctionne le robot. Cela peut être encore amélioré en utilisant un appareil IoT comme une particule de photons qui peut vous permettre d'être informé lorsqu'une chose est détectée et que le robot la suit ou lorsque le robot en a perdu la trace et revient maintenant à la base. Et pour ce faire, nous utiliserons une plate-forme logicielle en ligne qui connecte les appareils et leur permet d'effectuer certaines actions sur des déclencheurs spécifiques, à savoir les déclencheurs IFTTT.
Étape 6: Pseudo-code
Voici le pseudo-code pour la partie détection utilisant OpenCV où l'on détecte une balle.
Étape 7: Coder
Ci-dessus se trouvent les extraits de code et ci-dessous la description détaillée du code.
# importer les packages nécessaires
NOUS IMPORTONS TOUS LES PAQUETS NÉCESSAIRES
de picamera.array importer PiRGBArray #Comme il y a un problème de résolution dans raspberry pi, ne sera pas en mesure de capturer des images par VideoCapture
depuis picamera importer PiCamera importer RPi. GPIO en tant que GPIO importer l'heure numpy en tant que np
MAINTENANT, NOUS CONFIGURONS LE MATÉRIEL ET ATTRIBUONS LES BROCHES CONNECTÉES SUR RASPBERRY PI
GPIO.setmode(GPIO. BOARD)
GPIO_TRIGGER1 = 29 #Capteur à ultrasons gauche
GPIO_ECHO1 = 31
GPIO_TRIGGER2 = 36 #Capteur à ultrasons avant
GPIO_ECHO2 = 37
GPIO_TRIGGER3 = 33 #Capteur à ultrasons droit
GPIO_ECHO3 = 35
MOTEUR1B=18 #Moteur Gauche
MOTEUR1E=22
MOTOR2B=21 #Moteur droit
MOTEUR2E=19
LED_PIN=13 #S'il trouve la balle, alors il allumera la led
# Définir les broches comme sortie et entrée
GPIO.setup(GPIO_TRIGGER1, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO1, GPIO. IN) # Echo GPIO.setup(GPIO_TRIGGER2, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO2, GPIO. IN) GPIO.setup(GPIO_TRIGGER3, GPIO. OUT) # Déclencher GPIO.setup(GPIO_ECHO3, GPIO. IN) GPIO.setup(LED_PIN, GPIO. OUT)
# Définir le déclencheur sur False (Low)
GPIO.output(GPIO_TRIGGER1, False) GPIO.output(GPIO_TRIGGER2, False) GPIO.output(GPIO_TRIGGER3, False)
CETTE FONCTION UTILISE TOUS LES CAPTEURS À ULTRASONS COLLECTER LA DISTANCE DES OBJETS AUTOUR DE NOTRE BOT
# Autoriser le module à s'installer
def sonar(GPIO_TRIGGER, GPIO_ECHO): start=0 stop=0 # Définir les broches comme sortie et entrée GPIO.setup(GPIO_TRIGGER, GPIO. OUT) # Trigger GPIO.setup(GPIO_ECHO, GPIO. IN) # Echo # Définir le déclencheur sur False (Faible) GPIO.output(GPIO_TRIGGER, False) # Permet au module de régler time.sleep(0.01) #while distance > 5: #Envoyer une impulsion de 10us pour déclencher GPIO.output(GPIO_TRIGGER, True) time.sleep(0.00001) GPIO. output(GPIO_TRIGGER, False) begin = time.time() tandis que GPIO.input(GPIO_ECHO)==0 et time.time()
FAIRE FONCTIONNER LES MOTEURS CC AVEC LE RASPBERRY PI
GPIO.setup(MOTOR1B, GPIO. OUT)
GPIO.setup(MOTOR1E, GPIO. OUT)
GPIO.setup(MOTOR2B, GPIO. OUT) GPIO.setup(MOTOR2E, GPIO. OUT)
DÉFINIR LES FONCTIONS POUR FAIRE FONCTIONNER LE ROBOT ET LE FAIRE SE DÉPLACER DANS DIFFÉRENTES DIRECTIONS
def avant():
GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def reverse(): GPIO.output(MOTOR1B), GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH) def rightturn(): GPIO.output(MOTOR1B, GPIO. LOW) GPIO.output(MOTOR1E, GPIO. HIGH) GPIO.output(MOTOR2B, GPIO. HIGH) GPIO.output(MOTOR2E, GPIO. LOW) def leftturn(): GPIO.output(MOTOR1B, GPIO. HIGH) GPIO.output(MOTOR1E, GPIO. LOW) GPIO.output(MOTOR2B, GPIO. LOW) GPIO.output(MOTOR2E, GPIO. HIGH)
def stop():
Sortie GPIO (MOTEUR1E, GPIO. LOW) Sortie GPIO (MOTEUR1B, GPIO. LOW) Sortie GPIO (MOTEUR2E, GPIO. LOW) Sortie GPIO (MOTEUR2B, GPIO. LOW)
FAIRE FONCTIONNER LE MODULE CAMERA ET AJUSTER LES PARAMETRES
#CAPTURE CAMÉRA
#initialiser la caméra et saisir une référence à la capture de caméra brute camera = PiCamera() camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray(camera, size=(160, 120)) # autoriser la caméra au temps de préchauffage.sommeil(0,001)
MAINTENANT METTRE EN UVRE LA CHOSE PRINCIPALE O LE BOT SUIVRE LA BALLE ET ÉVITER TOUT OBSTACLE SUR LE CHEMIN
while(1<10): { #distance venant du capteur à ultrasons avant distanceC = sonar(GPIO_TRIGGER2, GPIO_ECHO2) #distance venant du capteur à ultrasons droit distanceR = sonar(GPIO_TRIGGER3, GPIO_ECHO3) #distance venant du capteur à ultrasons gauche distanceL = sonar(GPIO_TRIGGER1, GPIO_ECHO1) if(distanceC=8: rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep(0.0125) #while found== 0: leftturn() time.sleep(0.00625) elif distanceL>=8: leftturn() time.sleep(0.00625) stop() time.sleep(0.0125) forward() time.sleep(0.00625) stop() time.sleep (0.0125) rightturn() time.sleep(0.00625) stop() time.sleep(0.0125) else: stop() time.sleep(0.01) else: #sinon il avance vers l'avant() time.sleep(0.00625) if(distanceC>10): #il amène les coordonnées de la balle au centre de l'axe imaginaire de la caméra. if(centre_x=20): if(centre_x0): flag=1 leftturn() time.sleep(0.025) forward() time.sleep(0.00003125) stop() time.sleep(0.00625) sinon: stop() time.sleep(0.01)
autre:
#s'il fonde la balle et qu'il est trop près il allume la led. GPIO.output(LED_PIN, GPIO. HIGH) time.sleep(0.1) stop() time.sleep(0.1) #cv2.imshow("draw", frame) rawCapture.truncate(0) # effacer le flux en vue du image suivante }
FAIRE LES NETTOYAGES NÉCESSAIRES
GPIO.cleanup() #libère toutes les broches GPIO
Étape 8: Liens externes
Lien vers la vidéo de démonstration: cliquez ici (Youtube)
Lien vers le Code sur Git-hub: cliquez ici (Git-Hub)
Conseillé:
Arduino - Robot de résolution de labyrinthe (MicroMouse) Robot de suivi de mur : 6 étapes (avec photos)
Arduino | Robot de résolution de labyrinthe (MicroMouse) Robot de suivi de mur : Bienvenue, je suis Isaac et voici mon premier robot "Striker v1.0". Ce robot a été conçu pour résoudre un labyrinthe simple. Dans la compétition, nous avions deux labyrinthes et le robot a été en mesure de les identifier. Tout autre changement dans le labyrinthe peut nécessiter un changement dans le
Balle-balle de tennis de table à LED : 16 étapes (avec photos)
Balle de tennis de table à LED : histoire Après avoir construit un panneau plat de balles de tennis de table il y a quelque temps, j'ai commencé à me demander s'il serait possible de faire un panneau 3D à partir de balles de tennis de table. Combiné avec mon intérêt pour la création "art" à partir de formes géométriques récurrentes je
Kits de voiture de suivi de robot intelligent bricolage Suivi de voiture photosensible: 7 étapes
DIY Smart Robot Tracking Car Kits Tracking Car Photosensible: Design by SINONING ROBOTVous pouvez acheter à partir de la puce de suivi du robot carTheoryLM393 comparer les deux photorésistances, lorsqu'il y a une LED de photorésistance latérale sur BLANC le côté du moteur s'arrêtera immédiatement, l'autre côté du moteur tourner, de sorte que
Comment assembler un impressionnant bras de robot en bois (Partie 1 : Robot pour le suivi de ligne) -- Basé sur le Micro : Bit : 9 étapes
Comment assembler un bras de robot en bois impressionnant (Partie 1 : Robot pour le suivi de ligne) -- Basé sur le Micro : Bit : Ce type en bois a trois formes, il est très différent et impressionnant. Alors entrons-y un par un
Caméra de suivi de balle à 180 ° : 5 étapes (avec photos)
Caméra Ball Tracking 180° : Bienvenue dans mon premier projet ! Je suis ravi de partager ce que j'ai fait et de vous montrer les étapes pour construire votre propre caméra de suivi. Ce projet a été rendu possible en utilisant la bibliothèque OpenCV en conjonction avec Python