Pixy CMUcam5 is a smart vision sensor you can quickly "teach" to find objects. It saves you time by only outputting the object data you're interested in. A multitude of connection options means you can use Pixy with almost any microcontroller. It connects directly to Arduino with the included cable, and fully supports Raspberry Pi and BeagleBone Black with included software libraries.
Included in the box is mounting hardware to attach Pixy to your robot creation. The firmware, software and hardware are open source, so you can tweak to your heart's delight. Free tech support is included on the CMUcam wiki! Note: if you are using an Arduino shield in conjunction with Pixy, you may need to purchase Stackable Headers for the Pixy cable to fit.
Pixy uses a hue-based colour filtering algorithm to detect objects. Most of us are familiar with RGB (red, green, and blue) to represent colours. Pixy calculates the hue and saturation of each RGB pixel from the image sensor and uses these as the primary filtering parameters. The hue of an object remains largely unchanged with changes in lighting and exposure. Changes in lighting and exposure can have a frustrating effect on colour filtering algorithms, causing them to break. Pixy’s filtering algorithm is robust when it comes to lighting and exposure changes and significantly better than previous versions of the CMUcam.
Pixy can find literally hundreds of objects at a time and is super fast - processing at 50 frames a second. It uses a connected components algorithm to determine where one object begins and another ends. Pixy then compiles the sizes and locations of each object and reports them through one of its interfaces. Pixy processes an entire 640x400 image frame every 1/50th of a second (20 milliseconds). This means that you get a complete update of all detected objects' positions every 20 ms. At this rate, tracking the path of falling/bouncing ball is possible (A ball traveling at 30 mph moves less than a foot in 20 ms.).
Note:USB cable not included with the Pixy CMUcam5. The pan/tilt kit can be added to improve the Pixy's field of vision.
- 1 x Pixy CMUcam5
- 1 x connector cable Arduino compatible
- 4 x mounting brackets
- 3 x large screws
- 5 x small screws
- 1 x small black screw
- Small, fast, easy-to-use, low-cost, readily-available vision system
- Learns to detect objects that you teach it
- Outputs what it detects 50 times per second
- Connects to Arduino with included cable. Also works with Raspberry Pi, BeagleBone and similar controllers
- All libraries for Arduino, Raspberry Pi, etc. are provided
- C/C++ and Python are supported
- Communicates via one of several interfaces: SPI, I2C, UART, USB or analog/digital output
- Configuration utility runs on Windows, MacOS and Linux
- All software/firmare is open-source GNU-licensed
- All hardware documentation including schematics, bill of materials, PCB layout, etc. are provided
- Processor: NXP LPC4330, 204 MHz, dual core
- Image sensor: Omnivision OV9715, 1/4", 1280x800
- Lens field-of-view: 75 degrees horizontal, 47 degrees vertical
- Lens type: standard M12
- Power consumption: 140 mA typical
- Power input: USB input (5V) or unregulated input (6V to 10V)
- RAM: 264K bytes
- Flash: 1M bytes
- Available data outputs: UART serial, SPI, I2C, USB, digital, analog
- Dimensions: 2.1" x 2.0" x 1.4"
- Weight: 27 grams
Vision as a Sensor
If you want your robot to perform a task such as picking up an object, chasing a ball, locating a charging station, etc., and you want a single sensor to help accomplish all of these tasks, then vision is your sensor. Vision (image) sensors are useful because they are so flexible. With the right algorithm, an image sensor can sense or detect practically anything. But there are two drawbacks with image sensors: 1) they output lots of data, dozens of megabytes per second, and 2) processing this amount of data can overwhelm many processors. And if the processor can keep up with the data, much of its processing power won't be available for other tasks.
Pixy addresses these problems by pairing a powerful dedicated processor with the image sensor. Pixy processes images from the image sensor and only sends the useful information (e.g. purple dinosaur detected at x=54, y=103) to your microcontroller. And it does this at frame rate (50 Hz). The information is available through one of several interfaces: UART serial, SPI, I2C, USB, or digital/analog output. So your Arduino or other microcontroller can talk easily with Pixy and still have plenty of CPU available for other tasks.
It's possible to hook up multiple Pixys to your microcontroller -- for example, a robot with 4 Pixys and 360 degrees of sensing. Or use Pixy without a microcontroller and use the digital or analog outputs to trigger events, switches, servos, etc.