Quick Guide für Pixy Cam (cmuCam5) an Arduino

Atmel, PIC, VEX, Fischertechnik

Moderator: Moderatoren

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5233
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Quick Guide für Pixy Cam (cmuCam5) an Arduino

Beitragvon HaWe » 9. Feb 2018 16:33

Quick Guide für Pixy Cam (cmuCam5) an Arduino:

- Baustelle -

(Die Original-Websites sind IMO extrem unübersichtlich strukturiert und quer-verlinkt.
Hier die entsprechenden Schritte in einer mehr oder weniger geradlinigen Reihenfolge:)


Start:
Übersicht: http://cmucam.org/projects/cmucam5
Wiki Startseite: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)

Treiber- und Lib-Download & Installation
Website:http://cmucam.org/projects/cmucam5/wiki/Latest_release
The Latest Pixy Stuff:
Download the latest PixyMon version and run the installer. Don't plug in your Pixy into your computer yet though.
PixyMon Windows version 2.0.9 is here: http://cmucam.org/attachments/download/1246/pixymon_windows-2.0.9.exe
Docs: Installing PixyMon on Windows Vista, 7, or 8 is here:
http://cmucam.org/projects/cmucam5/wiki/Installing_PixyMon_on_Windows_Vista_7_or_8
Now plug in your Pixy into your computer with a USB mini cable.

PixyMon nach Installation starten:
lokales Startmnü->Programme->PixyMon
Versionen unter Help->About:
PixyMon version 2.0.9
Pixy firmware version 2.0.19 general build (queried)
Falls neue FW benötigt:
Pixy firmware: Download the latest version 2.0.19 here: http://cmucam.org/attachments/download/1317/pixy_firmware-2.0.19-general.hex
Docs: Pixy firmware installation docs are here: http://cmucam.org/projects/cmucam5/wiki/Uploading_New_Firmware

Teach Pixy an Object:
http://cmucam.org/projects/cmucam5/wiki/Teach_Pixy_an_Object_2
choose an object to teach Pixy.
(First, apply power to Pixy via battery or USB cable if you haven't already. When you power up Pixy, it will go through a series of LED flashes. Wait for the LED to turn off before teaching Pixy an object.)
Now, hold down the button on top of Pixy.
After about 1 second, the LED will turn on - first white, then red, then other colors - but when it turns red, release the button.

When you release the button, Pixy will enter what's called "light pipe" mode, where the LED color is the color of the object that Pixy has "locked" onto. Pixy will lock onto objects in the center of its video frame, so hold the object directly in front of Pixy, between 6 and 20 inches from the lens.

Pixy uses a region growing algorithm to try to determine which pixels are part of your object and which pixels are part of the background.
Using these pixels, Pixy will try to create a statistical model of your object so it can detect it reliably under different lighting conditions.
Use the LED color as feedback to determine if Pixy has a good lock on the object, and use the following guidelines to judge:
- When Pixy has locked onto your object, the LED color should match the color of your object.
- The brighter the LED, the better the lock. Move the object a little and see if you can maximize the LED brightness.
- Look at the region-growing grid in the PixyMon window and see how the size of the grid corresponds to the LED color and brightness.
A grid that covers more of your object is better than a grid that covers only some of your object and results in a brighter LED.

Anm:
Im "Raw Mode" (Fleisch-Symbol) oder "Cooked mode" (Koch-Symbol) werden Farben trainiert (am besten: Action->set Signature 1..7 mit Zeichenwerkzeug zum Markieren der exakten Farbbereiche)
Helligkeit oder Farben können eingegrenzt oder erweitert werden über Einstellungen (File->Configure oder Zahnrad) -> Schieberegler
Farbcodes speichern/laden unter File->save/load Pixy parameters

Nur über mode "default program" (Haus-Symbol) werden die Daten an Arduino gesendet, sonst nicht!
Man kann im laufenden Betrieb beliebig zwischen den modes umschalten!



Besonderheiten zu "color codes" (Farb-Gruppen):
http://cmucam.org/projects/cmucam5/wiki/Using_Color_Codes
Training im "Raw Mode" (Fleisch-Symbol)!


Pixy mit Arduino verbinden:
wieder hier: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)
Out of the box, Pixy is ready to talk to an Arduino. It sends block information to Arduino at 1 Mbits/second, which means Pixy can send more than 6000 detected objects per second or 135 detected objects per frame (Pixy can process 50 frames per second.)


Arduino libraries and examples

The Arduino libraries allow your Arduino sketches/programs to talk to Pixy.
Download the latest version 0.1.7 here: http://cmucam.org/attachments/download/1157/arduino_pixy-0.1.7.zip
docs are here: http://cmucam.org/projects/cmucam5/wiki/Hooking_up_Pixy_to_a_Microcontroller_(like_an_Arduino)
(Anm.: auf dieser Seite finden sich auch die links zu lego-, Raspi- und Python-Treiber/Libs)

Next, download the latest Arduino library "arduino_pixy-x.y.z.zip" here. Bring up the Arduino IDE and import the Pixy library by selecting Sketch➜Include Library➜Add .ZIP Library... (or if you're using an older version Sketch➜Import Library) in the Arduino IDE, and then browsing to the Arduino zip file that you just downloaded.

Arduino Sketch Programm laden
Next, load the "hello_world.ino" example by selecting it in File➜Examples➜Pixy.

Code: Alles auswählen

//
// begin license header
// All Pixy source code is provided under the terms of the
// GNU General Public License v2 (http://www.gnu.org/licenses/gpl-2.0.html).
// Those wishing to use Pixy source code, software and/or
// technologies under different licensing terms should contact us at
// cmucam@cs.cmu.edu.
// end license header
//
// This program simply prints the detected object blocks
// (including color codes) through the serial console.
//  It uses the Arduino's ICSP port (SPI).
//
// It prints the detected blocks once per second because printing all of the
// blocks for all 50 frames per second would overwhelm the Arduino's serial port.
//
   
#include <SPI.h> 
#include <Pixy.h>

// This is the main Pixy object
Pixy pixy;

void setup()
{
  Serial.begin(9600);
  Serial.print("Starting...\n");

  pixy.init();
}

void loop()
{
  static int i = 0;
  int j;
  uint16_t blocks;
  char buf[32];
 
  // grab blocks!
  blocks = pixy.getBlocks();
 
  // If there are detect blocks, print them!
  if (blocks)
  {
    i++;
   
    // do this (print) every 50 frames because printing every
    // frame would bog down the Arduino
    if (i%50==0)
    {
      sprintf(buf, "Detected %d:\n", blocks);
      Serial.print(buf);
      for (j=0; j<blocks; j++)
      {
        sprintf(buf, "  block %d: ", j);
        Serial.print(buf);
        pixy.blocks[j].print();
      }
    }
  } 
}


Upload it and bring up the Serial Monitor. You should see messages printed that look similar to this:

Code: Alles auswählen

Detected 1:
  block 0: sig: 1 x: 159 y: 109 width: 61 height: 61
Detected 1:
  block 0: sig: 1 x: 173 y: 114 width: 60 height: 61
Detected 1:
  block 0: sig: 1 x: 146 y: 111 width: 70 height: 65
...


Note, this example will only print messages if Pixy is running the "default program" and an object that matches one of its color signatures is visible. This is what PixyMon looks like when Pixy is running the default program and it has detected objects (you can select the default mode in PixyMon under the Action menu):
Bild

Weitere Interface-/Anschluss-Möglichkeiten (UART, I2C):

http://cmucam.org/projects/cmucam5/wiki/Porting_Guide
Bild
Interface-Header:

Code: Alles auswählen

1   2
3   4
5   6
7   8
9   10


SPI und UART lassen sich also mit dem mitgelieferten 6-poligen Flachbandkabel verwenden, für I2C benötigt man ein neues, spezielles, 10-poliges
(nicht im Lieferumfang! :no: )
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5233
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: Quick Guide für Pixy Cam (cmuCam5) an Arduino

Beitragvon HaWe » 17. Feb 2018 17:29

Pixy liefert normalerweise die erkannten multi-color-code blocks unsortiert (Farbmuster und Größen wild durcheinander).
Eine eigene Sortierfunktion kann allerdings den Mangel ausgleichen; der Code befindet sich allerdings nur im Download-Dokument (inkl. komplettem Arduino-Quick Guide), welcher ab EUR 5,- Spende als Link-Download erhältlich ist.


DONATE / SPENDE:
Gefällt dir dieses Kompendium und möchtest du dafür einen kleinen Betrag über PAYPAL spenden ?
Dann klicke einfach auf diesen Link -
Ab einer Spende ab EUR 5,- kannst du auf Wunsch dieses Kompendium auch als kostenloses WORD.doc erhalten (per Download-Link als .zip, z.T. ein bisschen weniger Geräte-Fotos aus urheberrechtlichen Gründen, dafür aber zusätzliche Infos und Code Beispiele):

-> Ja, ich möchte etwas als Anerkennung spenden <-


Ein ganz herzliches Dankeschön! :prima:
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E


Zurück zu „allgemeine / Nicht-Lego-Robotik und Elektronik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss