How to Build a Ball-Tracking Robot Using Computer Vision
Table of Contents
Introduction : Pourquoi construire un robot de tir à la balle?
Le projet vous apprend à faire une machine qui peut percevoir son environnement, prendre des décisions et agir en temps réel. Que vous soyez un amateur, un étudiant ou un ingénieur qui cherche à approfondir votre compréhension des systèmes autonomes, un robot de piste offre une expérience pratique avec l'intégration des capteurs, le traitement d'images et le contrôle des retours. À la fin de ce guide, vous aurez un robot fonctionnel qui pourra suivre une boule de couleur vive autour d'une pièce, et vous aurez les connaissances nécessaires pour étendre le système pour des tâches plus complexes, comme le suivi de plusieurs objets ou le passage à une détection basée sur l'apprentissage profond.
Comprendre les éléments de base
Un robot de suivi de la balle se compose de trois sous-systèmes essentiels : un système de vision qui capture et traite les images, un système de contrôle qui décide comment se déplacer et une plate-forme mécanique qui exécute ces commandes.
Choisir un microcontrôleur ou un ordinateur à un seul conseil
Le cerveau du robot peut être un simple microcontrôleur comme un Arduino ou un ordinateur à simple carte plus puissant, comme Riz de framboise. Un Arduino est excellent pour contrôler les moteurs avec un timing précis et gérer des I/O de bas niveau, mais il ne peut pas exécuter un pipeline OpenCV complet en toute exclusivité — vous devriez diffuser la vidéo sur un ordinateur portable via USB ou utiliser un ordinateur externe. Un Raspberry Pi (surtout un Pi 4 ou Pi 5) peut fonctionner directement OpenCV, ce qui en fait le choix préféré pour un robot autonome. Vous pouvez également utiliser un Pi avec un module de caméra et ajouter un Arduino comme coprocesseur pour le contrôle moteur si vous avez besoin de plus de performances en temps réel.
Sélection de la caméra
La caméra doit être compatible avec votre carte de traitement et adapté pour une utilisation intérieure. Module caméra Raspberry Pi 3 Le paramètre clé est le champ de vision — un angle plus large permet au robot de voir une zone plus grande, mais les objets apparaissent plus petits. Une caméra qui peut capturer VGA ou 720p à 30 fps est suffisante pour le suivi de base des balles.
Système moteur et châssis
Votre robot a besoin d'un châssis, de deux (ou quatre) moteurs, de roues et d'un conducteur de moteur. L298N Le conducteur de moteur est un choix populaire pour contrôler deux moteurs DC avec direction et vitesse via PWM. Utilisez un châssis robuste — de nombreux amateurs en construisent un à partir de plaques acryliques ou même de pièces imprimées en 3D. Les batteries (un Li‐Po de 7,4 V ou un pack de cellules AA) devraient fournir suffisamment de puissance pour au moins 20 minutes de fonctionnement.
Montage du matériel
Commencez par monter les moteurs sur le châssis et fixer les roues. Connectez les fils de moteur à la carte du conducteur – suivez le bouton de commande pour L298N : IN1, IN2 commande un moteur ; IN3, IN4 contrôle l'autre ; ENA et ENB reçoivent des signaux PWM pour la vitesse. Faites passer l'alimentation électrique au conducteur et l'alimentation logique (5 V) à votre microcontrôleur ou Pi=s GPIO (si vous utilisez un Pi, vous pouvez alimenter la logique L298N à partir d'un .Pin, mais toujours vérifier les limites de courant).
Sécurisez la caméra à une position orientée vers l'avant, idéalement légèrement surélevée pour qu'elle puisse voir la balle à distance. Si vous utilisez un Raspberry Pi, connectez le câble ruban de caméra au port CSI. Pour une caméra USB, branchez-la dans n'importe quel port USB.
Enfin, connectez tout à votre ordinateur via USB (pendant la programmation) et vérifiez qu'aucun fil n'est en vrac. Utilisez une table à pain ou un PCB personnalisé pour ranger les connexions.
Configuration de l'environnement logiciel
Installation d'OpenCV
OpenCV (Open Source Computer Vision Library) est le moteur de ce projet. Sur un Raspberry Pi fonctionnant Raspberry Pi OS, installez-le avec:
Pour plus de contrôle sur les optimisations (comme l'utilisation du GPU), vous pouvez compiler OpenCV à partir de source, mais le paquet pré-construit fonctionne bien pour le suivi des boules. Pour une configuration basée sur un ordinateur portable, utilisez . Numéro pour les opérations de réseau.
Configuration de l'appareil photo
Si vous utilisez un module Raspberry Pi Camera, activez l'interface de la caméra avec . Testez la caméra en utilisant (Bookworm) ou (légacy). Pour les caméras USB, OpenCV peut ouvrir le flux en utilisant . Exécutez un script de test simple pour s'assurer que les images sont capturées.
Construire l'algorithme de détection des balles
Le noyau du pipeline de vision de l'ordinateur est d'isoler la boule dans chaque cadre et de retourner ses coordonnées de pixel. La méthode décrite ici utilise la détection basée sur la couleur, qui est rapide et fiable pour une seule boule de couleur vive.
Détection de couleur dans l'espace HSV
Convertir chaque cadre de BGR en HSV (Hue, Saturation, Valeur) car HSV sépare les informations de couleur de la luminosité, le rendant robuste aux ombres et aux changements d'éclairage. Choisissez une couleur de boule avec un contraste élevé par rapport à l'arrière-plan — une orange vive, verte, ou rose fonctionne bien.
Utilisez pour générer un masque binaire où les pixels blancs représentent le candidat à la balle.
Détection de contour et calcul du Centroid
Appliquer sur le masque pour extraire toutes les régions blanches connectées. Enrouler à travers les contours et filtrer les très petites (bruit) et les très grandes (arrière-plan). Pour les autres candidats, calculer le centroïde en utilisant les moments:
La paire est l'emplacement de la balle dans l'image.
Filtrage du bruit et des faux positifs
Les environnements réels sont pleins de bruit de couleur. Appliquer des opérations morphologiques (comme et ) sur le masque pour enlever les petites taches. Vous pouvez également ajouter un contrôle de la Circularité : calculer et et rejeter les contours qui ne sont pas à peu près circulaires.
Mise en œuvre de la logique de suivi
Une fois que vous avez le centroïde de la balle, vous devez décider comment le robot devrait bouger pour garder la balle centrée dans le cadre.
Contrôle proportionnel simple
Définir une zone morte autour du centre de l'image (par exemple x de 300 à 340 pour une largeur de 640 pixels). Si la coordonnée x de la boule est en dehors de cette zone, régler la vitesse du moteur proportionnellement à l'erreur :
Cartez la vitesse de virage à gauche et à droite. Par exemple, gauche moteur = base vitesse + tour vitesse, droite moteur = base vitesse – tour vitesse. Cela crée un virage en douceur plutôt que de s'arrêter. Kp lors de l'étalonnage (valeurs typiques 0,3–1,0).
Manipulation des scénarios de perte de boule
Si aucune balle n'est détectée dans un cadre, le robot ne doit pas conduire aveuglément. Implémenter un timeout : si la balle est manquante pendant plus de, disons, 0,5 secondes, arrêter les moteurs ou commencer une recherche (rotation lentement en place).
Intégration de la commande de moteur
La dernière étape consiste à traduire les décisions de mouvement de haut niveau en actions motrices physiques.
PWM et conducteurs de moteurs
Sur un Raspberry Pi, utilisez la bibliothèque pour générer des signaux PWM sur les broches ENA et ENB du L298N. Réglez une fréquence de 100 Hz. Direction de contrôle avec IN1–IN4 en écrivant HIGH ou LOW. Par exemple, pour avancer :
La vitesse est réglée par où la vitesse est de 0–100.
Coordonnées de la caméra de cartographie des commandes de moteurs
L'algorithme de suivi produit les vitesses du moteur telles que décrites.
- Il prend un cadre
- Détecte la balle (ou la marque comme perdue)
- Calcule les vitesses du moteur
- Envoie des valeurs PWM
- Affiche le cadre traité (facultatif, pour le débogage)
Gardez la boucle en marche à un taux fixe (p. ex. 30 Hz) en utilisant un ou un minuteur matériel.
Essais et étalonnage
Aucun algorithme ne fonctionne parfaitement sur le premier essai. Test systématique améliorera la détection et le mouvement.
Réglage des conditions d'éclairage
Testez le robot sous différentes lumières — lumière naturelle, LED, fluorescent. La gamme HSV qui fonctionne dans un réglage peut échouer dans un autre. Créez un petit script de calibration qui montre une fenêtre de barre de piste afin que vous puissiez ajuster dynamiquement les valeurs et voir la mise à jour du masque en temps réel.
Paramètres de mouvement d'accord
Si le robot oscille à gauche, baissez le gain proportionnel (Kp). Si le robot tourne trop lentement, augmentez le Kp ou ajoutez un petit composant dérivé (contrôle de la DP). Si le robot ne tourne jamais parce que la détection retarde, envisagez d'augmenter la vitesse de l'image ou de réduire la résolution. Vérifiez également que la vitesse du moteur est suffisamment élevée pour que le robot réponde rapidement mais pas si haut qu'il dépasse.
Améliorations avancées
Une fois que votre robot de base de piste de balle fonctionne, vous pouvez développer ses capacités en utilisant une vision informatique plus sophistiquée.
- Détection d'objets d'apprentissage profond: Train un modèle léger comme SSD MobileNet ou YOLOV8-nano pour détecter n'importe quelle boule quelle que soit la couleur. Les modèles TensorFlow Lite peuvent fonctionner sur un Raspberry Pi 4 avec une vitesse acceptable. En savoir plus sur TensorFlow Lite- Oui.
- Suivi multi-objets: Utiliser des algorithmes comme TSAE ou KCF depuis l'API de suivi OpenCV pour verrouiller une balle spécifique même quand elle se déplace derrière les obstacles ou change d'apparence.
- Sensation de profondeur: Ajouter un capteur à ultrasons ou une caméra de temps de vol pour estimer la distance et maintenir une distance constante de la balle.
- Recherche autonome: Intégrer une machine d'état pour que le robot patrouille la pièce jusqu'à ce qu'elle détecte une balle, puis passe au mode de suivi.
Conclusion
Construire un robot de suivi à billes en utilisant la vision de l'ordinateur est un projet pratique qui articule la théorie et la pratique en robotique, systèmes embarqués et AI. Vous avez appris à sélectionner le matériel, à configurer un pipeline de vision avec OpenCV, à mettre en place un contrôleur de suivi proportionnel et à tester le système dans le monde réel. Les compétences que vous acquiérez — segmentation de couleur, analyse de contour, contrôle de rétroaction — sont directement transférables à des applications plus avancées comme la navigation autonome, le suivi d'objets, voire le suivi de drones. Consultez la documentation OpenCV pour plus de détails de l'algorithme, et vérifier ce tutoriel de contrôle moteur Pour des informations matérielles plus profondes. La seule limite maintenant est votre créativité.