For my master thesis I have built a quadcopter based on the Aeroquad platform for doing visual guided autonomous landing. All high processing is done on-board, using a BeagleBoard-XM for high level and Arduino for low level computations. OpenCV is used for recognizing of the marker and Kalman filter is used for robust tracking of the maker position input. The Kalman filter does also altitude estimation for position and velocity. The high level software is written in python and the low level software uses the AeroQuad flight software 3.2 with modifications.
Video of the landing: