This is not a problem unique to helicopter. Multi-rotor pilots have noted this as well but it’s usually blamed on the aircraft not being able to maintain altitude due to running out of power and dismissed. With helicopters we don’t have that problem so I can more accurately illustrate what is going on. I noted this during testing and tuning the WPNAV_ACCEL on this heli and dismissed it at the time as a one-time anomoly. But it turns out it’s not.
This is a screenshot summary of the flight plan - it is flown at 15 m/s. The Do Jump command sends us back to waypoint 2 seven times so the heli flies a high-speed figure-8 on a fairly small course with tight turns.
https://photos.app.goo.gl/JoQ3Ev8XLUI8wLnu2
This the course flown with AC3.3.3 based software, looking at barometer altitude vs GPS altitude. There is no problems other than GPS altitude is notoriously inaccurate. This older software does not show the mission commands on the timeline but when the heli comes into the final waypoint it is at the proper altitude of 8 meters. Home and the final waypoint are one and the same.
This is the same course flown with the same helicopter, same hardware, same speed - only thing different is that the Pixhawk is loaded with AC3.5.3. Notice the steady loss of altitude measured by the barometer (and verified both visually and with onboard camera reference). At the final waypoint instead of being at 8 meters AGL (flight planned) the heli comes in at only 1.3 meters AGL. While GPS still thinks it’s at 8 meters above ground (using height above the reference ellipsoid used by GPS). The GPS altitude jumps all over the place like it always does. The barometer tells the real story of what’s going on. At landing the ground station indicates the heli is at 6 meters altitude when it’s sitting on the ground.
Here’s what’s strange about this. If I fly a long mission at 30 m/s that has few turns it maintains altitude fine. But if the heli is continuously making high-G turns and high-speed passes like on this test course, or a survey flight, the actual altitude gradually decays. I had to abort a survey flight today flown with AC3.5.3 when it became evident in the FPV feed that the heli was getting dangerously close to tree tops in the turns on the end of the passes. I didn’t trust its altitude estimations at all so I flew it 1.6 km home on FPV manually, and landed it manually. At landing the ground station said it was at 17 meters altitude, landing on the same spot it took off from. The barometer showed a momentary dip to -1.2 meters (caused by pressure buildup under the main rotor during landing close to the ground), then came back up to .5 meters. So where is the ground station getting the 17 meters from? Which is obviously what the autopilot thinks the heli is at sitting on the ground. And it obviously thought it was 17 meters higher than it really was in flight.
I loaded the helicopter in the truck, went back home and got my other heli with the AC3.3.3 based firmware in it and flew the survey with that one without any issues.
I don’t know exactly what’s causing this. But I would suggest a flaw in the altitude estimation in the 3.5 firmware when flying at high speed, changing heading a lot, and flying spline waypoints. The weird thing is that in the log of this test flight, at the final waypoint (flight planned at 8 meters) the CTUN desired altitude shows 1.3 meters, which agrees with the barometer and what it was actually at at that waypoint, but this does not agree with the flight plan.
So at this point, I still cannot fly the 3.5 firmware on commercial flights until I figure out what the problem is.