I thought of this sometime back when I bought a uCam-TTL from 4D Systems about 2 years ago. I was able to connect to it and retrieve an image at a maximum speed of 2fps then I give up, was no way to be able to do tracking in real-time.
There are several projects online (e.g.: AVRCam, CMUcam, etc), however, are out of my budget. Another solution is based on RoboRealm and a PC, but this quite inconvenient unless you are building a large robot and was not my interest. I then saw a very interesting project using (again) the uCam TTL module and an MBED micro-controller, however could only track movement using very low resolution @3fps only. That is when my real adventure began: got myself a MBED and had it connected with the uCam TTL module, however, was very unstable. Rewrite entire code from scratch and found myself researching how to do tracking using Colour Segmentation (see an article here). Later, after lots of reading and playing around I developed my own image processing algorithms (see more details here and here).
Once this started working fine, I realised that 3fps is not enough for a smooth tracking, you need more FPS! Is when I saw the OV7670 FIFO camera modules on ebay. Took a while till had enough time to work on it, but once had time, got the datasheets and read it, I start to get results (see details here). My limited knowledge on developing code on ARM and all the limitations convinced me to switch to AVR instead, using an “Arduino like” board for start.
Started initially with Atmega8 then moved to Atmega328P for no real reasons except more RAM (see more details here and here). Once able to get the data out from the camera, had to rewrite my tracking code to work on a limited amount of memory, only enough to hold a line and blobs details (see details here). After tuning and changes on the logic of my code talking with the FIFO chip got it tracking stable @15fps (see details here) together with some board revamps (see details here) and later tracking @30 fps (see details here and here).
Recently, I started working again on this project trying to refine it and improve it. Moved away from Atmega328P cause of pin limitation (could use only 6 bits per colour maximum, no spare pins available, etc). I designed first PCB prototype and while waiting for the boards to be produced and shipped from the factory I started rewrite the code to allow a two-ways communication between camera module and the host micro-controller (see details here).
There are more details and will be also more updates on my blog.