I want a head mounted stereoscopic camera that records at 60fps. I have research POV cameras for RC planes and the 3D GoPro setup. POV cameras for RC planes are very poor quality and horribly analog. The 3D GoPro system is heavy, only records at 30fps, and costs hundreds of dollars. There must be a better way! Well, there is, with the Raspberry Pi and open source hardware!
Enter the Raspberry Pi, the amazing $35 computer. It has a $30 camera module that can record 720p60fps video, although, a single RaspPi only supports one camera module. The solution? Two Raspberry Pi's! They each run off an identical image of Raspian Linux with my own python scripts written to start on boot. Those scripts simply wait for a button press on a certain GPIO pin, and then start recording a video! It looks something like this. Just, pardon the mess on my desk at the moment. This is a verrrry early post for this project.
You can see the record button on the back of the breadboard. The question I had after setting this up was, "Running identical hardware and software, if triggered by the same button press, will the video from each camera be in sync?" So say, if I clapped my hands over the cameras, would my hands meet on the same frame on each video? To get a general answer to this question I shot this video.
The left camera is on the top, and the right one is on the bottom. I moved a post-it note across a ruler, and if the videos are in sync, then when paused on any given frame the post it note should be on the same notch of the ruler. And it turns out, it is! By this test, the camera's appear to be in sync when triggered by the same button.
Problems and limitations of this crude test:
This video was actually shot at 1080p30fps, because the software update to allow the Raspberry Pi to record at 60fps is still forthcoming (http://www.raspberrypi.org/forums/viewtopic.php?f=43&t=44862). Higher frame rates may reveal more problems. Measuring the post-it on the ruler is also not pixel perfect, it only appears correct to the naked eye. If the camera's were placed correctly and the footage was made into a 3D video, the brain may over time notice some out-of-sync error.
Improvements to this setup:
The python script I'm using now checks the button state every 5ms. I can likely check much faster than this. If I really needed to, I could do some inter-rasp-pi communication over GPIO pins to synchronize a "camera clock" and really be sure they start recording at the same time, but for now I don't think that's necessary
What's next and what the heck is this for anyway?
Why I'm glad you asked! The head mounted stereoscopic camera is part of a larger project I have started that I am very excited about! Along the way, I just might make what will probably be the cheapest solution for an HD head mounted stereoscopic camera on can buy or build. If I knew much much more about electronics I'm sure I could build such a camera with a single CPU and not need weird inter-pi synchronization, but I am sure you cannot beat this in terms of being a fast, inexpensive, and effective prototype. Also, Raspberry Pi's are awesome! I'll post again about this soon, so stay tuned!