Beagle Board Challenge: TurtleCam
For more information, please visit our project site at http://code.google.com/p/turtlecam/
TurtleCam is a modular video and data acquisition platform for use in aerial platforms. The system acquires high resolution video and images which are streamed live to a base station. Our project aims to create a reliable driver and software base for video, data acquisition, and streaming.
The primary 'launch vehicle' for the TurtleCam platform is a Quadrotor (commonly referred to as a quadcopter) aircraft. The TurtleCam will be mounted to the bottom of this aircraft. The Quadrotor we will be using was designed from the ground up as a senior design project at the University of Texas at Austin.
For more information, please visit our project site at http://code.google.com/p/turtlecam/. This wiki page is just a short summary of our project.
- Aerial photography
- Aerial mapping
- Wildlife / weather monitoring
- Data acquisition
- Home security
Our software consists of a few Bash shell scripts and a customized mjpg-streamer build. These are available in our subversion repository at https://turtlecam.googlecode.com/svn/trunk/. You can also view the entire project management website at http://code.google.com/p/turtlecam/.
Documentation can be found at http://code.google.com/p/turtlecam/. Installation instructions and hardware modifications are detailed at http://code.google.com/p/turtlecam/wiki/Installing.
What we learned
We encountered a number of hardware problems with the Beagleboard. Some of them were manufacturing related (weak solder joints, mechanical weaknesses, etc). Other problems were electrical related (unstable USB interfaces, power problems, etc). We also encountered software bugs (unstable Kernel module drivers, and incompatibilities with the build toolchains).
Below is a list of the problems and our solutions to these problems. We were surprised that the community had never encountered these problems before. Maybe we were just unlucky in our component choices (or we just got a bad Beagleboard).
- Manufacturing Problems
- Weak copper to PCB substrate bond - The connectors mounted on the top copper layer can be ripped off easily by mechanical stress. This shouldn't have happened, but the board we received did not have epoxy on the USB connector, which resulted in our connector getting ripped off. The PCB assembler assured us that the connector should have been epoxied. We were able to work around the problem by replacing the connector with a larger USB-A connector.
- USB OTG Power - The USB OTG power management doesn't appear to switch correctly while switching to host mode, even with the ID pin correctly connected. It works fine if this pin is set during power up. We assume this is some sort of incompatibility with our USB equipment, and may not be a design problem.
- USB EHCI Port - Devices using USB isosynchronous transfers will encounter massive data corruption and other problems when using the EHCI port. Using a hub doesn't resolve the issue, the issue does not seem related to kernel version or distribution (we tried Angstrom and Ubuntu). The only solution is to use the USB OTG port for isosynchronous transfer devices.
- Kernel Modules - The uvc_video kernel module didn't work reliably with the camera and hardware we used. We had to implement some custom patches to resolve the issue. This involved some kernel module debugging and also required us to recompile the entire kernel and all modules.
- Toolchains - It took forever to get the correct toolchain setup with the correct kernel sources.
Our group consists of four 4th year undergraduate electrical engineering students. We can be contacted at our Google Code webpage at http://code.google.com/p/turtlecam/.
- Kyle Miller
- Harrison Pham
- Yves Santos
- Christopher Wiley