Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Rocky Rover :système de vision robotique PixyCam et Arduino 101

Composants et fournitures

Arduino 101
× 1
Adafruit Motor/Stepper Shield V2
× 1
Châssis de réservoir SparkFun Dagu DG102
× 1
Piles AA
× 1
Câble USB-A vers B
× 1
Batterie USB Adafruit
× 1
Entretoise M2.5 avec écrou et vis
× 4
Connecteurs de batterie JST polarisés mâles et femelles
× 1
En-tête masculin 40 position 1 rangée (0,1")
× 1
Câbles de raccordement mâle/mâle
× 1
Pixy (CMUcam5)
× 1
Kit Pixy Pan-Tilt pour Pixy
× 1

Applications et services en ligne

Arduino IDE
Blynk

À propos de ce projet

Rover basé sur Intel Arduino 101 avec PixyCam !

Les événements Hackster Live sont géniaux ! Intel a sponsorisé notre événement Hackster Dallas et nous a envoyé des Intel Arduino 101 pour construire des Rovers. Merci Intel, merci Arduino. Voici le Rover que j'ai construit pour l'événement.

J'ai construit cet appareil en suivant ce tutoriel de Johnathan Hottell. Il a créé quelques vidéos pour construire le BLE Rover. Et c'est facile à suivre ! Vérifiez le ici. Voici la vidéo de Johnathan Hottell.

J'ai le Rover avec 4 moteurs donc j'ai suivi ceci.

Après avoir construit le Rover et l'avoir connecté à Blynk. J'ai décidé d'améliorer la construction et d'ajouter une PixyCam. J'ai déplacé le support de batterie à l'avant pour pouvoir monter une caméra panoramique/inclinable.

PixyCam

PixyCam rend la vision robotique facile. Pixy est un capteur de vision rapide pour la robotique DIY, il est facile d'apprendre à Pixy un objet en appuyant simplement sur un bouton. Il est capable de suivre des centaines d'objets simultanément et ne fournit que les données qu'il suit.

J'ai décidé de traquer une citrouille orange.

Je suis surpris de voir à quel point il est facile de le faire démarrer. Voici le lien pour les instructions pour connecter PixyCam à Arduino. Cliquez ici pour les instructions de montage du mécanisme Pan/Tilt. Je suis content qu'il y ait beaucoup de photos, très faciles à suivre. J'ai suivi les instructions d'installation et de construction, comment s'intégrer à Arduino. J'ai testé leurs exemples.

Voici ce que j'ai découvert sur l'API.

API PixyCam Arduino

L'utilisation de Pixy avec Arduino est vraiment simple. Vous incluez simplement les en-têtes SPI et Pixy :

#include  #include   

Et créez une instance globale de Pixy en mettant ce petit gars en dehors de votre setup() et boucle() fonctions :

Pixy pixie ;

La méthode la plus importante de la bibliothèque Arduino est getBlocks() , qui renvoie le nombre d'objets détectés par Pixy. Vous pouvez ensuite regarder dans le pixy.blocks[] tableau pour obtenir des informations sur chaque objet détecté (un membre du tableau pour chaque objet détecté.) Chaque membre du tableau (i ) contient les champs suivants :

  • pixy.blocks[i].signature Le numéro de signature de l'objet détecté (1-7 pour les signatures normales)
  • pixy.blocks[i].x L'emplacement x du centre de l'objet détecté (0 à 319)
  • pixy.blocks[i].y L'emplacement y du centre de l'objet détecté (0 à 199)
  • pixy.blocks[i].width La largeur de l'objet détecté (1 à 320)
  • pixy.blocks[i].hauteur La hauteur de l'objet détecté (1 à 200)
  • pixy.blocks[i].angle L'angle de l'objet détecté objet si l'objet détecté est un code couleur.
  • pixy.blocks[i].print() Une fonction membre qui imprime les informations de l'objet détecté sur le port série

C'est donc simple de parler à Pixy avec votre Arduino ! Pour plus d'informations sur la bibliothèque et l'API Arduino, cliquez ici. Voici le code utilisé pour le Rover. J'ai modifié le code BLE d'origine et ajouté le suivi des objets. Lors de la configuration :

void setup() { ..... pixy.init(); ....}  

La boucle principale ressemble à ceci :

void loop() { ...... // lit les données pixy et récupère les blocs static int i =0; entier j; blocs uint16_t ; char buf[32]; int32_t panError, tiltError ; blocs =pixy.getBlocks(); // s'il y a des blocs if (blocks) { panError =X_CENTER-pixy.blocks[0].x; tiltError =pixy.blocks[0].y-Y_CENTER; panLoop.updatePan(panError); tiltLoop.update(tiltError); pixy.setServos(panLoop.m_pos, tiltLoop.m_pos); je++ ; // le cadre ralentirait l'Arduino si (i%10==0) { int trackedBlock =0; sprintf(buf, "Détecté %d:\n", blocs); Serial.print(buf); long maxSize =0 ; for (j=0; j maxSize) { trackedBlock =j; maxTaille =nouvelleTaille; } } int32_t followError =RCS_CENTER_POS - panLoop.m_pos; // La taille est la surface de l'objet. // Nous gardons une moyenne courante des 8 derniers. size +=pixy.blocks[trackedBlock].width * pixy.blocks[trackedBlock].height; taille -=taille>> 3 ; int forwardSpeed ​​=contrainte(400 - (taille/256), -100, 400); int32_t différentiel =(followError + (followError * forwardSpeed))>>8 ; int leftSpeed ​​=constrain(forwardSpeed ​​+ différentiel, -400, 400); int rightSpeed ​​=constrain(forwardSpeed ​​- différentiel, -400, 400); motor1->setSpeed ​​(leftSpeed); //left motor3->setSpeed(leftSpeed); motor2->setSpeed ​​(rightSpeed); //moteur gauche4->setSpeed(rightSpeed); double largeur =pixy.blocks[trackedBlock].width; if (largeur <=5) { } else if (largeur <20 &&!running) { Serial.println("running"); motor1->run(FORWARD); motor3->run(FORWARD); motor2->run(FORWARD); motor4->run(AVANT); en cours d'exécution = vrai ; } else if (largeur> 80 &&!running) { Serial.println("running"); motor1->run(BACKWARD); motor3->run(BACKWARD); motor2->run(BACKWARD); motor4->run(BACKWARD); en cours d'exécution = vrai ; } else if (width>=20 &&width <=80 &&running) { motor1->setSpeed(128); motor2->setSpeed(128); motor3->setSpeed(128); motor4->setSpeed(128); motor2->run(RELEASE); motor4->run(RELEASE); motor1->run(RELEASE); motor3->run(RELEASE); en cours d'exécution =faux ; } } } }  

Afin de faire fonctionner le Blynk sans que la PixyCam ne le contrôle, mettez le capuchon d'objectif. Cela garantira que PixyCam n'interférera pas avec le contrôle du bot. Si ce projet vous a intéressé à programmer dans Arduino ou à utiliser PixyCam dans votre prochain projet, veuillez cliquer sur le bouton "Respecter le projet" et suivez-moi.

N'hésitez pas à poser des questions.

Code

Rocky Rover

Processus de fabrication

  1. horloge de vision Arduino pov
  2. Système d'alarme Arduino :SERENA
  3. Bras robotique Arduino imprimé en 3D
  4. Puissance Arduino
  5. Bras robotique contrôlé par Nunchuk (avec Arduino)
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE :lunettes de soleil assorties
  8. Persistance de la vision
  9. Considérations relatives à la conception de l'éclairage pour les systèmes de vision en chirurgie robotique