Jason Short and I had a great day of flight testing yesterday after the rains cleared in Point Richmond, across the Bay from San Francisco. We were testing the 2.5 code on a range of different hardware (RC systems, ESCs, GPSs and airframes) to catch incompatibilities. The good news is that we found lots of them! (that's the bad news, too).
These are the bugs found:
--When ArduPilot is pulsing the servos after it's got GPS lock with the bind plug on, it will pulse the motor, too, on some ESCs. This can be dangerous! (FIXED)
--One some ESCs, ArduPilot will not allow the ESC to arm, even in manual mode. This was a weird one, since in manual mode the servo signal is directly passed through to the ESC without touching code, but it appears that we were mixing in some signal from the microprocessor by mistake. (FIXED)
--Stabilization gains were too high for those using the Z sensor. Porpoising and corkscrewing resulted. (FIXED)
--On some uBlox configurations, the GPS parser would fail to read position data in AUTO mode, leading to flyaway behavior. (FIXED)
--Problem reading PWM data from the newer, smaller Futaba 2.4 Ghz digital receivers, like
this one. Weirdly, channel one would only read motion to the left, not the right. This is a timing thing, having to do with the order in which pulses are sent in these newer receivers. (Jason now has one of these, and will use logic analyzer to diagnose and fix this one)
--The default loiter/RTL radius of 30m is too small, leading to figure eights, rather than circles. [Expanded to 100m.]
Finally, one bit of very good news: We've finally got rid of the bind plug setup procedure for people with Z sensors. The reason we had to do it before is that the Arduino bootloader overwrites the Atmega registry setting that says whether the last reset was a cold or warm restart. As a result, we couldn't tell if you were starting the autopilot on the ground (cold restart) or whether it had just reset in the air (warm restart). Obviously, we don't want it to record a new "home" position in the air.
Doug Wiebel, Jordi Munoz and Jason Short talked about this and solved the problem with a little AI. Now ArduPilot will measure the GPS data for a few seconds to decide if it's on the ground or in the air. If it's moving, it won't record a new home position; if it's stationary it will. Bye bye bind plug!
Jason will be uploading some of these bug fixes in the next day (when he gets off a plane), and the tougher ones, like the problem with new Futaba digital receivers, in a couple weeks when he's back from a business trip and vacation. The bind plug process should be gone then, too. By then I should have the ArduPilot 2.5 documentation done, and we can formally launch this thing as an easy(ier) to use, more stable and better performing autopilot that works on a wide range of hardware configurations!