CMUcam2 Emulation ================= The CMUcam2 has the following capabilities: * Track user defined color blobs at up to 50 frames per second (frame rate depends on resolution and window size settings) * Track motion using frame differencing at 26 frames per second * Find the centroid of any tracking data * Gather mean color and variance data * Gather a 28 bin histogram of each color channel * Process horizontally edge filtered images (not supported) * Transfer a real-time binary bitmap of the tracked pixels in an image * Arbitrary image windowing * Image down sampling * Adjust the camera's image properties * Dump a raw image (single or multiple channels) * Up to 176 x 255 resolution * Supports baud rates of: 115,200 57,600 38,400 19,200 9,600 4,800 2,400 1,200 BPS * Control 5 servo outputs * Slave parallel image processing mode off of a single camera bus (not supported) * Automatically use servos to do two axis color tracking * B/W analog video output (PAL or NTSC, depending on camera module used) * Flexible output packet customization * Power down mode * Multiple pass image processing on a buffered image Pre-compiled CMUcam2 Emulation Images ------------------------------------- :download:`Compiled Firmware Image
` There are several differences between the CMUcam2 emulation and the actual CMUcam2. Below is a list of all CMUcam2 functionality with non-supported features crossed off. Many crossed off features will be supported in the near future. | BM Buffer Mode | CR Camera Register | CP Camera Power | DC Difference Channel | DS Down Sample | FD Frame Difference | FS Frame Stream (added r553) | GB Get Button | GH Get Histogram | GI Get Aux IO inputs | GM Get Mean | GS Get Servo Positions | GT Get Tracking Parameters | GV Get Version | GW Get Window | HC Historgram Configure | HD High Resolution Difference | HR Hi-Res Mode | HT Set Histogram Track (not supported) | L0 Led Control | LF Load Frame to Difference | *LM Line Mode* | MD Mask Difference (not supported) | NF Noise Filter | OM Output Packet Mask | PD Pixel Difference (not supported) | PF Packet Filter | PM Poll Mode | RF Read Frame into Buffer | RM Raw Mode | RS Reset | SF Send Frame | SM Servo Mask | SO Servo Output | SP Servo Parameters | ST Set Track Command | SV Servo Position | TC Track Color | TI Track Inverted | TW Track Window | UD Upload Difference buffer (not supported) | VW Virtual Window **The following commands will not be supported in the near future:** | CT Set Camera Type | DM Delay Mode | L1 Led Control (look at SO instead) | PS Packet Skip | SD Sleep Deeply | SL Sleep Command CMUcam2 Emulation Differences ----------------------------- * **Servo Input Range** * Servos are now 0-255 8-bit values * **Jumpers** * Due to the lack of jumpers on the CMUcam3, baud rate and servo direction changes need to be done at compile time - these are controlled by #defines at the top of the cmucam.c source code * **Set Input (SI** *pin* **) Command** * Sets the *pin* to be an input * **Software Color Space (CS** *value* **) Command** * CS 0 sets the color space to the hardware default (RGB or YCrCb) * CS 1 does a software conversion to the HSV color space * Conversion assumes hardware is set to RGB for correct results * HSV space is an integer space where all values are scaled between 16 and 240 * Note: This is only available in r504 and higher * **Set Output can control the Blue and Orange LEDs** * Servos 2 and 3 will stop working * SO 2 1 -> Blue on * SO 2 0 -> Blue off * SO 3 1 -> Orange on * SO 3 0 -> Orange off * **No Slave Mode** * It is possible, but we currently don't support it * **Output Mask (OM)** * Only supports T and S packets (type 0 and 1) * **Line Mode (LM)** * Only supports track color mode (LM 0 1) * Track color statistics added in r523 (LM 0 2) * **Send JPEG (SJ)** * Sends a jpeg compressed frame, header and all * **Demo Mode** * Since holding down the programming button puts the CMUcam3 into programming mode, you need to press the button half a second after startup to enter demo mode * **Hi-Res Frame Difference** * This now works the same as low-res frame differencing, just at a higher resolution