For a long time I've been wanting to make an ultra minimalist vision / optical flow sensor for the hobbyist and experimentalist community. I've been pursuing this as a small IR&D pet project at Centeye. We're almost there.
The above photo shows one of these sensors next to a millimeter scale. The part count is small- One of our 64x64 custom image sensors, an Atmel ATmega644 processor, several resistors and capacitors, and some lightweight flat optics we developed. Two complete sensors are shown, including with mounted optics (yes it's that thin!). Total mass is about 440mg. The primary interface is via I2C/TWI, which will allow many sensors to be hooked up to a common bus. A secondary connector includes the interface with the ISP for uploading firmware.
We chose to use an ATmega processor since they are loved by hardware hackers and are easy to use. Ideally for a single sensor, one can upload any number of different "application firmwares" to the sensor to make it whatever one wants, limited by just the processor and the base resolution. One firmware will turn it into an optical flow sensor . Another firmware will let it track bright lights. Yet another firmware could turn it into something else. Or someone could write their own firmware, whether by tweaking existing source code (yes I plan to share it) or writing something completely new.
An ATmega644 may not sound like much for image processing- 64kB flash, 4k SRAM, 2k EEPROM, 20MHz max. Neither does a 64x64 array. But the reality is if you are witty you really don't need at lot of resolution or processing power to get some nice results. (We once did an altitude hold demo with just 16 pixels an 1MIPS back in 2001.)
We've already made our first batch of these (about 20) and handed them out to a few close collaborators. Based on feedback we are preparing our second run. The new sensors will be slightly larger and heavier (thicker PCB) but more rigid, and use strictly 0.1" headers for all IO and power (including programming). Mass should still be under a gram.
We also have an even smaller version in the works, shown below with a chip mounted and wire bonded (sorry about the mess). This board uses ATtiny and the 7mm x 8mm board alone weighs about 95mg. I think we can get a whole sensor made for about 120mg, if only I had the time! (Maybe some brave person here would like to take a stab at programming it???)
Comments
I have not really stumbled upon a cheap way for smooth autonomous landings. Pressure sensors seem to drift, and sonars or anything of the sort is too expensive, isn't it?
The pixel circuits are actually continuous-time with a logarithmic response so there really is no shutter. Each pixel produces a voltage and that voltage is read out when needed. The log-response allows it to operate over a large range of light levels.
As for frame rate- that depends on the algorithm and how many pixels you wish to process. It can vary from a few Hz to 100s of Hz, maybe even a kHz in some cases though I haven't yet obtained the latter with this particular hardware. (An older 10MIPS PIC-driven sensor, our original Ladybug, got 1.4kHz with an 88 pixel image sensor.)
Regards,
Brian
With optical flow sensor, one can achieve position hold with respect to doors and windows also waypoint navigation is also possible by using continuous video recognition using this optical flow sensor.