This is a follow-on to an earlier post about an Arduino-based optical flow sensor prototype. Here I actually constructed a complete sensor that could actually be integrated into a robotic platform. To achieve a smaller size, I used an Arduino Pro Mini board from Sparkfun, and added a "shield" to interface that with a Centeye image sensor and optics. The breakout of parts is shown above- The complete sensor is shown next to a US Quarter. You can also see the individual blue Arduino board and the green "shield" board. On the right are individual "sensor heads" which are basically small PCBs holding the image sensor chip (here the "FireflySmall"), optional optics, and two capacitors. The sensor head plugs into the green shield board via a Hirose DF30 board to board connector. Three sensor heads are shown- on top is a sensor head with optics, in the middle the board-to-board connector side, and on the bottom the image sensor chip side.
I wrote a simple Arduino script to grab pixels from the vision chip (configuring it to grab rectangular pixels), compute 1D optical flow using a variation of Srinivasan's "image interpolation algorithm", and dump a display of the optical flow to the serial monitor. (Some of you may know Professor Mandyam Srinivasan as the Australian biologist who has studied honey bee navigation, in particular how honey bees use optical flow to close control loops using simple but elegant heuristics.) A simple video of the sensor is shown below. I've also attached the Arduino script code, in case anyone is interested.
Comments
Hi Geoffrey, any progress with your optical flow sensor since 2011?
Actually at some point I'd like to start a discussion about open optical flow / vision sensors. As of now we have two versions- this one based on an Arduino, and the CYE8 (Google Code site) based on an ATmega644P processor. The Arduino one is easier to program, but the CYE8 is slightly faster (20MHz vs 8MHz) and has more memory. We may also kick off more powerful version based on an AVR32 (60MHz) or a full DSP.
There are lots of issues surrounding the development and manufacture of such a sensor, in particular one using our own chips. Benefits- we design the silicon, so we can reveal as much about the insides as we like, allowing everyone to hack it to their heart's content. We can also design a chip specifically for an Arduino! (know any chip companies that do that???) Disadvantages- we get the chips in bare die form, thus have to package them or wire bond them to a board, and then apply optics.
(BTW- we did get back the injection molded optics- they look great! I'll make another post as soon as we test them...)
yeah that looks great. what is the range it can detect movement with your optics?
one word: i want (ok two words) :)
Very nice! With this, the Ladar and Kinect hacking going on, we are going to be spoilt for obstacle avoidance technologies!