Table des matières:

HackerBox 0024 : Vision Quête : 11 étapes
HackerBox 0024 : Vision Quête : 11 étapes

Vidéo: HackerBox 0024 : Vision Quête : 11 étapes

Vidéo: HackerBox 0024 : Vision Quête : 11 étapes
Vidéo: HackerBox #0024: Vision Quest 2024, Juillet
Anonim
HackerBox 0024: Quête de vision
HackerBox 0024: Quête de vision

Vision Quest - Ce mois-ci, HackerBox Hackers expérimente la vision par ordinateur et le suivi de mouvement servo. Ce Instructable contient des informations pour travailler avec HackerBox #0024, que vous pouvez récupérer ici jusqu'à épuisement des stocks. De plus, si vous souhaitez recevoir une HackerBox comme celle-ci directement dans votre boîte aux lettres chaque mois, veuillez vous inscrire sur HackerBoxes.com et rejoindre la révolution !

Sujets et objectifs d'apprentissage pour HackerBox 0024:

  • Expérimenter avec la vision par ordinateur
  • Mise en place d'OpenCV (Computer Vision)
  • Programmation de l'Arduino Nano à partir de l'IDE Arduino
  • Contrôler les servomoteurs avec l'Arduino Nano
  • Assemblage d'un assemblage mécanique panoramique et d'inclinaison
  • Contrôler le mouvement panoramique et d'inclinaison avec un microcontrôleur
  • Effectuer un suivi du visage à l'aide d'OpenCV

HackerBoxes est le service de box d'abonnement mensuel pour l'électronique de bricolage et la technologie informatique. Nous sommes des amateurs, des fabricants et des expérimentateurs. Nous sommes les rêveurs de rêves. HACK LA PLANÈTE !

Étape 1: HackerBox 0024: Contenu de la boîte

HackerBox 0024: Contenu de la boîte
HackerBox 0024: Contenu de la boîte
  • Carte de référence à collectionner HackerBoxes #0024
  • Assemblage panoramique et inclinable à trois supports
  • Deux servos MG996R avec accessoires
  • Deux servo-coupleurs circulaires en aluminium
  • Arduino Nano V3 - 5V, 16MHz, MicroUSB
  • Ensemble appareil photo numérique avec câble USB
  • Trois objectifs avec support universel à clip
  • Lampe de stylo d'inspection médicale
  • Pulls Dupont Homme/Femme
  • Câble MicroUSB
  • Décalque exclusif OpenCV
  • Sticker exclusif Dia de Muertos

Quelques autres choses qui seront utiles:

  • Petit morceau de planche de bois pour la base de la caméra
  • Fer à souder, soudure et outils de soudure de base
  • Ordinateur pour exécuter des outils logiciels

Plus important encore, vous aurez besoin d'un sens de l'aventure, d'un esprit de bricolage et d'une curiosité de hacker. L'électronique de bricolage hardcore n'est pas une quête triviale, et nous ne l'édulcorons pas pour vous. Le but est le progrès, pas la perfection. Lorsque vous persistez et profitez de l'aventure, vous pouvez tirer une grande satisfaction de l'apprentissage de nouvelles technologies et, espérons-le, de la réussite de certains projets. Nous vous suggérons de faire chaque étape lentement, de faire attention aux détails et de ne jamais hésiter à demander de l'aide.

FOIRE AUX QUESTIONS: Nous aimons demander une très grande faveur à tous les membres de HackerBox. Veuillez prendre quelques minutes pour consulter la FAQ sur le site Web de HackerBoxes avant de contacter l'assistance. Bien que nous souhaitions évidemment aider tous les membres autant que nécessaire, la plupart de nos e-mails d'assistance impliquent des questions simples qui sont très clairement traitées dans la FAQ. Merci de votre compréhension!

Étape 2: Vision par ordinateur

Vision par ordinateur
Vision par ordinateur

La vision par ordinateur est un domaine interdisciplinaire qui traite de la façon dont les ordinateurs obtiennent une compréhension de haut niveau à partir d'images ou de vidéos numériques. Du point de vue de l'ingénierie, la vision par ordinateur cherche à automatiser les tâches que le système visuel humain peut effectuer. En tant que discipline scientifique, la vision par ordinateur s'intéresse à la théorie derrière les systèmes artificiels qui extraient des informations à partir d'images. Les données d'image peuvent prendre de nombreuses formes, telles que des séquences vidéo, des vues de plusieurs caméras ou des données multidimensionnelles à partir d'un scanner médical. En tant que discipline technologique, la vision par ordinateur cherche à appliquer ses théories et ses modèles à la construction de systèmes de vision par ordinateur. Les sous-domaines de la vision par ordinateur comprennent la reconstruction de scènes, la détection d'événements, le suivi vidéo, la reconnaissance d'objets, l'estimation de pose 3D, l'apprentissage, l'indexation, l'estimation de mouvement et la restauration d'images.

Il est intéressant de noter que la vision par ordinateur peut être considérée comme l'inverse de l'infographie.

Étape 3: Traitement et OpenCV

Traitement et OpenCV
Traitement et OpenCV

Processing est un carnet de croquis logiciel flexible et un langage pour apprendre à coder dans le contexte des arts visuels. Le traitement a favorisé l'alphabétisation logicielle dans les arts visuels et l'alphabétisation visuelle dans la technologie. Il y a des dizaines de milliers d'étudiants, d'artistes, de designers, de chercheurs et d'amateurs qui utilisent Processing pour l'apprentissage et le prototypage.

OpenCV (Open Source Computer Vision Library) est une bibliothèque de logiciels open source de vision par ordinateur et d'apprentissage automatique. OpenCV a été conçu pour fournir une infrastructure commune pour les applications de vision par ordinateur et pour accélérer l'utilisation de la perception machine dans les produits commerciaux. La bibliothèque OpenCV contient plus de 2500 algorithmes optimisés, qui incluent un ensemble complet d'algorithmes de vision par ordinateur et d'apprentissage automatique classiques et à la pointe de la technologie. Ces algorithmes peuvent être utilisés pour détecter et reconnaître des visages, identifier des objets, classer des actions humaines dans des vidéos, suivre les mouvements de caméra, suivre des objets en mouvement, etc.

Installez OpenCV dans Processing à partir du menu Fichier > Exemples en sélectionnant "Ajouter des exemples", puis sous l'onglet Bibliothèques, installez à la fois les bibliothèques vidéo et OpenCV. Ouvrez l'exemple LiveCamTest pour le suivi du visage de base. Découvrez d'autres exemples OpenCV for Processing ici.

Davantage de ressources:

Getting Started with Computer Vision est un projet de livre fournissant un point d'entrée facile pour l'expérimentation créative avec la vision par ordinateur. Il présente le code et les concepts nécessaires pour construire des projets de vision par ordinateur.

Programming Computer Vision with Python est un livre d'O'Reilly sur PCV, un module Python open source pour la vision par ordinateur.

Apprendre OpenCV

Vision par ordinateur: algorithmes et applications

Maîtriser OpenCV

Cours Stanford CS231n Réseaux de neurones convolutifs pour la reconnaissance visuelle (16 vidéos)

Chris Urmson TED Talk Comment une voiture sans conducteur voit la route

Étape 4: Plate-forme de microcontrôleur Arduino Nano

Plate-forme de microcontrôleur Arduino Nano
Plate-forme de microcontrôleur Arduino Nano

Nous pouvons utiliser n'importe quelle plate-forme de microcontrôleur commune pour contrôler les servos dans notre support de caméra panoramique et inclinable. L'Arduino Nano est une carte Arduino miniaturisée à montage en surface, compatible avec les maquettes, avec USB intégré. Il est incroyablement complet et facile à pirater.

Caractéristiques:

  • Microcontrôleur: Atmel ATmega328P
  • Tension: 5V
  • Broches d'E/S numériques: 14 (6 PWM)
  • Broches d'entrée analogique: 8
  • Courant CC par broche d'E/S: 40 mA
  • Mémoire Flash: 32 Ko (2 Ko pour le chargeur de démarrage)
  • SRAM: 2 Ko
  • EEPROM: 1 Ko
  • Vitesse d'horloge: 16 MHz
  • Dimensions: 17 mm x 43 mm

Cette variante particulière de l'Arduino Nano est la conception noire de Robotdyn. L'interface se fait par un port MicroUSB intégré compatible avec les mêmes câbles MicroUSB utilisés avec de nombreux téléphones mobiles et tablettes.

Les Arduino Nanos disposent d'une puce de pont USB/Série intégrée. Sur cette variante particulière, la puce de pont est la CH340G. Notez qu'il existe divers autres types de puces de pont USB/Série utilisées sur les différents types de cartes Arduino. Ces puces permettent au port USB de votre ordinateur de communiquer avec l'interface série sur la puce du processeur de l'Arduino.

Le système d'exploitation d'un ordinateur nécessite un pilote de périphérique pour communiquer avec la puce USB/série. Le pilote permet à l'IDE de communiquer avec la carte Arduino. Le pilote de périphérique spécifique requis dépend à la fois de la version du système d'exploitation et du type de puce USB/série. Pour les puces USB/Série CH340, il existe des pilotes disponibles pour de nombreux systèmes d'exploitation (UNIX, Mac OS X ou Windows). Le fabricant du CH340 fournit ces pilotes ici.

Lorsque vous branchez pour la première fois l'Arduino Nano sur un port USB de votre ordinateur, le voyant d'alimentation vert devrait s'allumer et peu de temps après, le voyant bleu devrait commencer à clignoter lentement. Cela se produit parce que le Nano est pré-chargé avec le programme BLINK, qui s'exécute sur le tout nouvel Arduino Nano.

Étape 5: Environnement de développement intégré (IDE) Arduino

Environnement de développement intégré (IDE) Arduino
Environnement de développement intégré (IDE) Arduino

Si vous n'avez pas encore installé l'IDE Arduino, vous pouvez le télécharger depuis Arduino.cc

Si vous souhaitez des informations d'introduction supplémentaires pour travailler dans l'écosystème Arduino, nous vous suggérons de consulter les instructions de l'atelier de démarrage HackerBoxes.

Branchez le Nano dans le câble MicroUSB et l'autre extrémité du câble dans un port USB de l'ordinateur, lancez le logiciel Arduino IDE, sélectionnez le port USB approprié dans l'IDE sous outils> port (probablement un nom avec "wchusb" dedans). Sélectionnez également "Arduino Nano" dans l'IDE sous tools>board.

Enfin, chargez un exemple de code:

Fichier->Exemples->Bases->Clignote

C'est en fait le code qui a été préchargé sur le Nano et devrait être en cours d'exécution en ce moment pour faire clignoter lentement la LED bleue. Par conséquent, si nous chargeons cet exemple de code, rien ne changera. Au lieu de cela, modifions un peu le code.

En regardant de près, vous pouvez voir que le programme allume la LED, attend 1000 millisecondes (une seconde), éteint la LED, attend encore une seconde, puis recommence - pour toujours.

Modifiez le code en changeant les deux instructions "delay(1000)" en "delay(100)". Cette modification fera clignoter la LED dix fois plus vite, non ?

Chargeons le code modifié dans le Nano en cliquant sur le bouton UPLOAD (l'icône en forme de flèche) juste au-dessus de votre code modifié. Regardez ci-dessous le code pour les informations d'état: "compilation" puis "téléchargement". Finalement, l'IDE devrait indiquer "Téléchargement terminé" et votre LED devrait clignoter plus rapidement.

Si oui, félicitations ! Vous venez de pirater votre premier morceau de code intégré.

Une fois que votre version à clignotement rapide est chargée et en cours d'exécution, pourquoi ne pas voir si vous pouvez modifier à nouveau le code pour que la LED clignote rapidement deux fois, puis attendez quelques secondes avant de répéter ? Essaie! Que diriez-vous d'autres modèles? Une fois que vous avez réussi à visualiser le résultat souhaité, à le coder et à l'observer fonctionner comme prévu, vous avez fait un énorme pas en avant pour devenir un pirate informatique compétent.

Étape 6: Servomoteurs

Servomoteurs
Servomoteurs

Les servomoteurs sont généralement contrôlés par une série d'impulsions électriques répétées où la largeur des impulsions indique la position du servo. Le signal de commande modulé en largeur d'impulsion (PWM) est souvent généré par un microcontrôleur commun tel qu'un Arduino.

Les petits servomoteurs de loisir, tels que le MG996R, sont connectés via une connexion standard à trois fils: deux fils pour une alimentation CC et un fil pour transporter les impulsions de commande. Les servos MG996R ont une plage de tension de fonctionnement de 4,8 à 7,2 VDC.

Étape 7: Assemblage du mécanisme d'orientation et d'inclinaison

Assemblage du mécanisme d'orientation et d'inclinaison
Assemblage du mécanisme d'orientation et d'inclinaison
  1. Sortez les deux servos MG996R de leurs sacs et mettez de côté les accessoires inclus pour le moment.
  2. Fixez un servo coupleur circulaire en aluminium à chaque servo. Notez que les coupleurs sont livrés dans des sacs séparés des servos. Le coupleur est un ajustement très serré. Commencez par appuyer sur le coupleur sur l'extrémité de la sortie du servo, puis vissez une vis dans le trou central. Serrez le fil pour tirer le coupleur sur la sortie du servo.
  3. Notez qu'il y a trois supports pour l'assemblage pan-tilt - deux supports en boîte et un support en U.
  4. Montez l'un des supports sur le cercle en aluminium pour l'un des servos. Nous appellerons ce servo le servo panoramique. Orientez le support de boîtier avec sa paroi centrale contre le cercle en aluminium de telle sorte que les deux autres parois du support de boîtier soient opposées au servo panoramique. Utilisez les trous centraux sur la paroi médiane du support de la boîte. Cette disposition devrait permettre au servo de panoramique de faire tourner le support de boîtier attaché une fois qu'il est actionné.
  5. Positionnez l'autre servo (servo d'inclinaison) dans le support de boîte qui est attaché au cercle en aluminium du servo de panoramique. Utilisez au moins deux écrous et boulons pour fixer le servo d'inclinaison - un de chaque côté.
  6. En tenant le support en U, insérez le "roulement" en laiton de l'intérieur du U à travers l'un des grands trous de montage du pivot.
  7. Placez le support en U avec le roulement sur le servo d'inclinaison qui se trouve à l'intérieur du support du boîtier de telle sorte que l'autre grand trou de montage du pivot (celui sans le roulement) s'aligne avec le cercle en aluminium sur le servo d'inclinaison.
  8. Utilisez des vis pour fixer le support en U sur le cercle en aluminium sur un côté du support en U.
  9. De l'autre côté du support en U, serrez une seule vis à travers le roulement et dans le petit trou du support de boîte à l'intérieur. Cela devrait permettre au support en U de tourner autour du support de boîtier plus tard lorsque le servo d'inclinaison est actionné.

Étape 8: Montage de l'ensemble panoramique et inclinaison

Montage de l'ensemble panoramique et inclinaison
Montage de l'ensemble panoramique et inclinaison
Montage de l'ensemble panoramique et inclinaison
Montage de l'ensemble panoramique et inclinaison

Le support de boîte restant peut être vissé à un petit morceau de planche de bois pour servir de base à la caméra, comme indiqué sur l'image. Enfin, le servo panoramique est monté dans ce support de boîte restant à l'aide d'au moins deux écrous et boulons pour fixer le servo au support - un de chaque côté.

Étape 9: câbler et tester l'ensemble panoramique et inclinaison

Câbler et tester l'ensemble panoramique et inclinaison
Câbler et tester l'ensemble panoramique et inclinaison

Pour câbler les servos selon le schéma, il est plus rapide de simplement couper les connecteurs femelles d'origine des servos, puis d'utiliser des extrémités de cavalier DuPont femelles pour obtenir les lignes de signal et de masse attachées aux broches Nano.

Le Nano n'a pas assez de courant sur l'alimentation 5V pour alimenter les servos à partir de l'USB, une alimentation supplémentaire est donc recommandée. Cela peut être n'importe quoi dans la plage de 4,8 à 7,2 volts. Par exemple, quatre piles AA (en série) fonctionneront bien. Un banc d'alimentation ou une verrue murale est également un bon choix.

L'exemple simple de code Arduino joint ici en tant que PanTiltTest.ino peut être utilisé pour tester le contrôle des deux servos à partir du moniteur série sur l'IDE Arduino. Réglez le débit en bauds du moniteur pour qu'il corresponde aux 9600 bps définis dans l'exemple de code. La saisie de valeurs d'angle comprises entre 0 et 180 degrés positionnera les servos en conséquence.

Enfin, le module de caméra USB (ou un autre capteur) peut être monté sur le support en U de l'assemblage Pan-Tilt pour une utilisation dans des applications de suivi.

Étape 10: Suivi des visages avec OpenCV

Image
Image
Pirater la planète
Pirater la planète

Un système de suivi de visage par vision industrielle peut être mis en œuvre en combinant des sous-systèmes comme indiqué dans le schéma fonctionnel. L'esquisse SerialServoControl pour Arduino se trouve dans le didacticiel Sparkfun suivant, ainsi qu'une démonstration connexe utilisant OpenCV, Processing, un Arduino, une caméra USB et un assemblage Pan/Tilt pour suivre un visage humain. La démo utilise deux servos pour repositionner la caméra afin de garder le visage centré dans l'image vidéo même lorsque l'utilisateur se déplace dans la pièce. Pour un exemple de code en C#, consultez le référentiel GitHub pour la vidéo CamBot.

Étape 11: pirater la planète

Si vous avez apprécié cet Instructable et souhaitez recevoir une boîte de projets électroniques et informatiques comme celui-ci directement dans votre boîte aux lettres chaque mois, veuillez nous rejoindre en vous abonnant ICI.

Contactez-nous et partagez votre succès dans les commentaires ci-dessous ou sur la page Facebook HackerBoxes. N'hésitez pas à nous faire savoir si vous avez des questions ou si vous avez besoin d'aide pour quoi que ce soit. Merci de faire partie de HackerBoxes. Veuillez garder vos suggestions et commentaires à venir. Les HackerBox sont VOS boîtes. Faisons quelque chose de grand !

Conseillé: