Five seniors at Portland State University recently finished a 6 month capstone project: to develop a computer-vision system for a quadcopter. As you can see from the video, our vision system tracks a fluorescent pink circle on the ground and tries to maintain a stable hover over that target. The code can be easily changed to track virtually any color, however. The system runs on a Raspberry Pi attached to the copter, has one webcam pointing straight down (with a fisheye lens for maximal viewing angle), and when Raspbian boots it launches MAVProxy, an open-source Python mavlink wrapper. The computer vision code is just a module that gets imported into the MAVProxy environment. The copter takes autonomous control if the copter is placed into the ALT_HOLD flightmode with the RC controller AND the target is present in the frame.
Our code can be found on Git at dwrtz/MAVProxy. For those of you already familiar with MAVProxy, you'll want to grab mavproxy_vision.py from the 'modules' folder. The README.vision file in the root of the repo contains tips for configuring your vision tracking system, including the code dependencies and instructions on how to use the stuff in /modules/vision_utils. We hope that drone enthusiasts with Python skills will take our code and improve upon it.
The git repo will undergo improvements in the coming weeks, including a copy of the technical report and links to all the parts we used. Until then, any questions can be directed at firstname.lastname@example.org. Replies may be delayed in the next week as I'm going on vacation, but will be answered eventually.