A few weeks back, a few friends and I went out to a field and watched a home project of mine -- a small autonomous aircraft built from regular radio-controlled plane parts -- fly itself around the field several times in a box pattern and then approach for landing. This was particularly exciting for me, because in my line of work, I seldom get to witness in-person the product of my labor, and I've never worked on such a shoe-string project before. It was pretty fascinating to switch the plane to autonomous mode and sit back and watch a little math and programming keep a bunch of cheap microcontrollers, amateur soldering, noisy sensors, foam, and glue on a target trajectory and come home to land.
While the video of the flight didn't work out, here is a reconstruction of the flight created using the on-board sensors and a variety of post-processing techniques.
The airframe is a Bixler 1.1, a suggestion from the good folks at DIY Drones. (In retrospect, I would look for a larger airframe with higher quality; the Bixler 1.1 is poorly manufactured.)
The underlying flight computer is the Arduino Mega 2560 with a custom shield that contained accelerometers, rotation rate sensors, magnetometers, a barometric pressure sensor, a GPS module, and a data logger. The custom shield is from NKC, and all of the sensors and the logger are from SparkFun. There's also a "safety" computer that will switch to manual control when necessasry.
Building the plane has allowed me to try out several ideas for navigation and control. It's currently running an 10-state extended Kalman filter and unconventional, nonlinear controller for autonomous take-off, follow-the-ball type tracking in a box pattern, and autonomous landing. The autonomous take off needs a little work, but the rest is working. It's also served as an excellent prompt for developing and testing several tools that I'm working on. One of those tools is a general-purpose simulation engine that has become very useful for me. This engine can propagate a continuous-time system (such as most physical systems) along with a discrete-time system (such as a controller or other period event) in an accurate, fast, and easy-to-use manner. This will be coming soon!