ArduPilot / ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source
http://ardupilot.org/
GNU General Public License v3.0
11.06k stars 17.62k forks source link

Plane: Fix inability to climb the last few meters of takeoff #28707

Open Georacer opened 3 days ago

Georacer commented 3 days ago

Summary

This PR addresses #28685.

Details

This affects takeoffs without an airspeed sensor.

Cause

Some airframes will not climb at 0 pitch, regardless of throttle setting. Thus, the current takeoff level-off strategy of asymptotically forcing pitch to 0, results in the aircraft to never climb the final few meters.

Reproduction

The behaviour was reproduced in SITL, by setting:

Solution

After the expected time to complete the takeoff has elapsed, drive the desired pitch gradually back to takeoff pitch, over the next 5 seconds.

Testing

Before: image

After: image

Alternatives

The proposed solution of widening the TECS pitch limits and letting TECS take over and regulate the last few meters of the climb was not feasible: During an airspeedless takeoff, TECS uses throttle to correct for altitude errors. It would use pitch (if it was allowed) to correct for airspeed errors). Thus letting TECS command the pitch angle would not help.

menschel commented 3 days ago

Weather is currently not favorable for a test flight but I'll try to test in case it gets better.

Edit: Please also address the forced 100% throttle.

menschel commented 3 days ago

Two short flights. 24-11-23_08-37-52.bin 24-11-23_08-42-26.bin Fun fact, the overshoot now happens based on the workaround. EDIT: Scratch that, apparently turning into the wind and therefore trading speed for altitude also adds to the overshoot.

IMO the whole thing is connected to a false climb-rate estimation. I have logs from a landing test session with 4.5.7 and I see level-off happening at 3m below target altitude, not 8m. It may be a good idea to stop limiting the pitch at level-off and see what TECS is doing out of it. If I'm not mistaken, the waypoint is 1km away and TECS should linearly climb.

EDIT: The 4.5.7 test session. 00000027.BIN I've also noticed an increasing rate of log corruption with 4.6.0beta. APM Planner complains, MissionPlanner ignores it.

tridge commented 10 hours ago

@Georacer I'm surprised you didn't implement the expanding pitch window using TECS like we discussed, did it not work out?

Georacer commented 2 hours ago

@Georacer I'm surprised you didn't implement the expanding pitch window using TECS like we discussed, did it not work out?

As I wrote in the description, the proposed solution of widening the TECS pitch limits and letting TECS take over and regulate the last few meters of the climb was not feasible: During an airspeedless takeoff, TECS uses throttle to correct for altitude errors. It would use pitch (if it was allowed) to correct for airspeed errors; this is not reliable in an airspeedless case, which we are in. Thus letting TECS command the pitch angle would not help.

I did try it and it didn't give effective results. If you're really curious I can repeat the experiment.