Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Rocky Rover:Robotic Vision System PixyCam &Arduino 101

Komponenten und Verbrauchsmaterialien

Arduino 101
× 1
Adafruit Motor/Stepper Shield V2
× 1
SparkFun Dagu DG102 Panzergehäuse
× 1
AA-Batterien
× 1
USB-A-zu-B-Kabel
× 1
Adafruit USB-Akku
× 1
M2,5-Abstandshalter mit Mutter und Schraube
× 4
Polarisierte JST-Batterieanschlüsse für Männer und Frauen
× 1
Männliche Kopfzeile 40 Position 1 Zeile (0.1")
× 1
Überbrückungsdrähte männlich/männlich
× 1
Pixy (CMUcam5)
× 1
Pixy Pan-Tilt-Kit für Pixy
× 1

Apps und Onlinedienste

Arduino-IDE
Blynk

Über dieses Projekt

Intel Arduino 101-basierter Rover mit PixyCam!

Hackster Live-Events sind großartig! Intel hat unser Hackster Dallas Event gesponsert und uns einige Intel Arduino 101 geschickt, um Rover zu bauen. Danke Intel, danke Arduino. Hier ist der Rover, den ich für das Event gebaut habe.

Ich habe dieses Gerät nach diesem Tutorial von Johnathan Hottell gebaut. Er hat einige Videos erstellt, um den BLE Rover zu bauen. Und es ist einfach zu folgen! Schau es dir hier an. Hier ist das Video von Johnathan Hottell.

Ich habe den Rover mit 4 Motoren, also habe ich mich daran gehalten.

Nach dem Bau des Rovers und der Verbindung mit Blynk. Ich beschloss, den Build zu verbessern und eine PixyCam hinzuzufügen. Ich habe den Batteriehalter nach vorne verschoben, damit ich eine Schwenk-/Neigekamera montieren kann.

PixyCam

PixyCam macht Robotersehen leicht gemacht. Pixy ist ein schneller Vision-Sensor für DIY-Robotik, es ist einfach, Pixy ein Objekt einfach per Knopfdruck beizubringen. Es kann Hunderte von Objekten gleichzeitig verfolgen und liefert nur die Daten, die es verfolgt.

Ich beschloss, einen orangefarbenen Kürbis zu verfolgen.

Ich bin überrascht, wie einfach es ist, es in Gang zu bringen. Hier ist der Link für die Anweisungen zum Verbinden von PixyCam mit Arduino. Klicken Sie hier für die Montageanleitung für den Schwenk-/Neigemechanismus. Ich bin froh, dass es viele Bilder hat, sehr einfach zu folgen. Ich habe die Setup- und Build-Anweisungen befolgt, wie man mit Arduino integriert. Ich habe ihre Beispiele getestet.

Folgendes habe ich über die API herausgefunden.

PixyCam Arduino-API

Die Verwendung von Pixy mit Arduino ist wirklich einfach. Sie fügen einfach die SPI- und Pixy-Header ein:

#include  #include   

Und machen Sie eine globale Instanz von Pixy, indem Sie diesen kleinen Kerl außerhalb Ihres setup() platzieren und loop() Funktionen:

Pixie-Pixie;  

Die wichtigste Methode in der Arduino-Bibliothek ist getBlocks() , die die Anzahl der von Pixy erkannten Objekte zurückgibt. Sie können dann in den pixy.blocks[] . nachsehen Array für Informationen über jedes erkannte Objekt (ein Array-Mitglied für jedes erkannte Objekt.) Jedes Array-Mitglied (i ) enthält die folgenden Felder:

  • pixy.blocks[i].signature Die Signaturnummer des erkannten Objekts (1-7 für normale Signaturen)
  • pixy.blocks[i].x Die x-Position des Zentrums des erkannten Objekts (0 bis 319)
  • pixy.blocks[i].y Die y-Position des Zentrums des erkannten Objekts (0 bis 199)
  • pixy.blocks[i].width Die Breite des erkannten Objekts (1 bis 320)
  • pixy.blocks[i].height Die Höhe des erkannten Objekts (1 bis 200)
  • pixy.blocks[i].angle Der Winkel des erkannten Objekts, wenn das erkannte Objekt ein Farbcode ist.
  • pixy.blocks[i].print() Eine Memberfunktion, die die erkannten Objektinformationen an den seriellen Port ausgibt

Es ist also ganz einfach, mit Ihrem Arduino mit Pixy zu sprechen! Weitere Informationen zur Arduino-Bibliothek und API finden Sie hier. Hier ist der Code, der für den Rover verwendet wird. Ich habe den ursprünglichen BLE-Code modifiziert und die Objektverfolgung hinzugefügt. Während der Einrichtung:

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

Die Hauptschleife sieht in etwa so aus:

void loop() { ...... // Pixy-Daten lesen und Blöcke abrufen static int i =0; int j; uint16_t Blöcke; char-buf[32]; int32_t panError, TiltError; Blöcke =pixy.getBlocks(); //wenn es Blöcke gibt 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); i++; // Frame würde das Arduino blockieren if (i%10==0) { Int trackedBlock =0; sprintf(buf, "Erkannt %d:\n", Blöcke); Serial.print (buf); lange maxSize =0; for (j=0; j maxSize) {trackedBlock =j; maxSize =newSize; } } int32_t followError =RCS_CENTER_POS - panLoop.m_pos; // Größe ist die Fläche des Objekts. // Wir behalten einen laufenden Durchschnitt der letzten 8. size +=pixy.blocks[trackedBlock].width * pixy.blocks[trackedBlock].height; Größe -=Größe>> 3; int forwardSpeed ​​=Constraint(400 - (Größe/256), -100, 400); int32_t differentiell =(followError + (followError * forwardSpeed))>>8; int leftSpeed ​​=Constraint(forwardSpeed ​​+ differentiell, -400, 400); int rightSpeed ​​=Constraint(forwardSpeed ​​- differentiell, -400, 400); motor1->setSpeed ​​(leftSpeed); // linker Motor3-> setSpeed ​​(leftSpeed); motor2-> setSpeed ​​(rightSpeed); // linker Motor4-> setSpeed ​​(rightSpeed); doppelte Breite =pixy.blocks[trackedBlock].width; if (Breite <=5) {} else if (Breite <20 &&!running) {Serial.println("running"); motor1->laufen (vorwärts); motor3->laufen (vorwärts); motor2->laufen (vorwärts); motor4> laufen (vorwärts); läuft =wahr; aufrechtzuerhalten. Sonst if (Breite> 80 &&!running) {Serial.println("running"); motor1->laufen (RÜCKWÄRTS); motor3->laufen (RÜCKWÄRTS); motor2-> laufen (RÜCKWÄRTS); motor4> laufen (RÜCKWÄRTS); läuft =wahr; aufrechtzuerhalten. Sonst if (Breite>=20 &&Breite <=80 &&läuft) { Motor1->setSpeed ​​(128); motor2->setSpeed ​​(128); motor3->setSpeed ​​(128); motor4->setSpeed ​​(128); motor2->laufen (FREIGABE); motor4> laufen (FREIGABE); motor1->laufen (FREIGABE); motor3->laufen (FREIGABE); läuft =falsch; } } } }  

Um den Blynk ohne Steuerung durch die PixyCam zu betreiben, setzen Sie den Objektivdeckel auf. Es stellt sicher, dass PixyCam die Steuerung des Bots nicht stört. Wenn dieses Projekt Ihr Interesse geweckt hat, in Arduino zu programmieren oder PixyCam in Ihrem nächsten Projekt zu verwenden, klicken Sie bitte auf die Schaltfläche "Projekt respektieren" und folgen Sie mir.

Fühlen Sie sich frei, Fragen zu stellen.

Code

Rocky Rover

Herstellungsprozess

  1. Arduino-Pov-Vision-Uhr
  2. Arduino-Alarmsystem:SERENA
  3. Arduino 3D-gedruckter Roboterarm
  4. Arduino-Power
  5. Nunchuk-gesteuerter Roboterarm (mit Arduino)
  6. Intel Arduino 101 BLE Blynk Tank
  7. Arduino101 / tinyTILE BLE:Match-Making-Sonnenbrille
  8. Beharrlichkeit der Vision
  9. Arduino Apple Watch
  10. Überlegungen zum Beleuchtungsdesign für robotergestützte Chirurgie-Sichtsysteme