We used Arducopter and made a new flight mode we call ' cruise ' , this modes is the same as stabilize but when you turn a switch on the transmitter, the pitch angle gradually decreases over a period of 3 to 5 seconds. After this transition, the UAV maintains altitude and heading. The pilot ( or the traject generator ) can change the desired altitude and heading. The altitude is controlled by either increasing the thrust ( and thus speed, lift ) , or increasing the pitch angle ( larger angle of attack ). The second strategy still requires more testing.
We had a lot of help on the forum and the mailing lists, I was mainly Menno Hochstenbach who did the work on the controller, you'll find much information if you check his topics and questions ;)