Hopefully the long road of beta is almost over.
I've done my best to address DCM drift issues. Again, this is not the ability for the quad to hold a perfectly level spot, it's the 20-30° error introduced by vibration and rapid maneuvers.
We've upped the gain on the DCM to recover faster. There is still room to tune these gains even more aggressively. I'll be looking for input from everyone on this. To edit the gains, go into system.pde.
To optimize the hardware, please be sure to add a windscreen to your barometric sensor and solder the filter pads on your IMU shield. A piece of felt works best. No closed cell foam.
To get the best yaw performance, calibrate your ESCs, and adjust any tilted motors. The copter should NOT yaw when lifting off. If it does it's you, not me! If you want higher performance Yaw, switch from the default to rate based yaw in APM_config.h.
I added two in-field calibrations to the arming and disarming gestures. Hold disarm for ~ 10 seconds to level the copter. Hold arm for ~ 20 seconds to fly in auto-trim mode for about 45 seconds. It will exit auto-trim automatically and fly normally. Don't worry about counting out the time, just wait for the flashing lights to enter either mode.
Alt hold has been re-written and uses a single PID for both Baro and Sonar. Baro has been more heavily filtered so the D term could be brought up. It's essential for smoother alt changes. It also helps that the internal PID integrator is the same value for both now. From 3 to 6 meters, the Baro altitude is mixed with sonar for a smoother transition. The alt hold PID could use more fine tuning, let me know your experience.
This version also now includes Randy's Heli code.