Automatic landing failure to establish flare resulted hard touch down

Hi guys,

I attempt to use automatic landing, but there was a obviously hard touch down, after check the log, I found the aircraft didn’t establish the pitch angle during flare phase, causing touch down with a very high descent rate.

BTW, I used rangefinder to achieve more accurate altitude control

aircraft start to flare at 2m in log

“2026-01-31 16:00:11.755 Flare 2.0m sink=1.92 speed=15.1 dist=18.9“

so we could see when the vehicle start to flare, TECS.dhdem start to reduce but very slow, meanwhile, TECS.dh still keep as before even touch down.

and I also found when the flare start, the ATT.DesPitch jump down at the same time, could anyone explain what happened ?

log attached for your reference

Looks like the known issue with desPitch handling during flare transition. IIRC it was fixed recently. AP_TECS: Initialize flare sink demand with current demand by Georacer · Pull Request #31610 · ArduPilot/ardupilot · GitHub

I would consider trying 4.7 dev.

thanks @LupusTheCanine

I will check and waiting for 4.7

Hi @LupusTheCanine

I merge the code from AP_TECS: Initialize flare sink demand with current demand by Georacer · Pull Request #31610 · ArduPilot/ardupilot · GitHub to version 4.6.3 and build the firmware by myself. I retry the automatic landing today and seems the same issue

you could observer the small jump down of ATT.DesPitch due to flare start

log attached for your reference https://drive.google.com/file/d/18PbJ1R3Y1pQ4TpAqtJ-Z4cCfivedfnG6/view?usp=sharing

It looks like there is something wrong in TECS. I noticed that _integSEBdot and _integKE are riding the limits during approach and landing. ardupilot/libraries/AP_TECS/AP_TECS.cpp at master · ArduPilot/ardupilot · GitHub

In my testing setting both TECS_SPDWEIGHT and TECS_LAND_SPDWGT to 0 helped but setting only one of them to 0 stil caused flare issues.

Hi @Georacer

could you help to check this issue if any related to the PR in AP_TECS: Initialize flare sink demand with current demand by Georacer · Pull Request #31610 · ArduPilot/ardupilot · GitHub

thanks

Hello!

It looks like your rebase of the flare fix PR worked nicely, well done!
However, as you noticed you still have problems.

Within the time between the start of the flare and the touchdown, the demanded sink rate has had time to rise to 0m/s.

But only just! The actual sink rate didn’t have time to catch up. This is in part related to the inherent delay of the actual pitch angle to track the pitch angle demand.

I recommend that you pull your flare start a little earlier, by a second or two, and adjust to whatever that means for the flare altitude.
Additionally, if your stall speed is well below 16m/s (your landing speed), you could also add in a preflare segment.

I hope this helps!

1 Like

Hi @Georacer

Thanks for your reply, you are right, vehicle can’t catch up to establish positive pitch

but we notice the desPitch have a quick sink during flare start up, that what we confused.

and then tecs try to establish positive pitch angle, but had waste too much time because vehicle need to pitch down first and then pitch up starting from a large negative pitch angle

if we try to flare a bit earlier, that may cause stall due to throttle had cut off, anyway, I will try to add 1 or 2 meter above the current flare altitude

so could you help to figure out why the desPitch show a rapid drop when flare start

we also verify in simulator (Realflight) and have same behaviour

If you are concerned with stall during transition from approach to flare, you could reduce throttle slew rate.

1 Like

I think that plot you are showing is from your first log, where the TECS landing patch was not present (log 92).

In log 94 (with patch), this is the behaviour of the pitch demand:


The moment the vehicle enters the flaring phase, the pitch demand only rises.

Hi @Georacer

unfortunately, the DesPitch falls down also happened in log 94 in your screenshot

and I also recheck the log 94,

around 14:32:27.839 Flare 3.3m sink=2.41 speed=18.0 dist=23.5

you can see a noticeable drop in DesPitch, followed by a rapid decrease in Pitch and then a gradual rise.

I think you were simply unlucky with this one.

Here is a plot with the TECS pitch demand, the attitude control pitch demand (downstream from TECS) and the actual pitch.

Notice that TECS had already started the pitch-down before the flare (blue cursor). And immediately starts increasing the pitch demand after the flare starts (red cursor).
But during that time, the attitude control loop has ran (or at least logged) twice, propagating that low pitch demand.

All of this happens in less than 100ms. And indeed the update rate of the TECS controller is 10Hz. The attitude control loop rate is 50Hz. So you couldn’t get a faster response in any circumstance.

Raising the flare height is the correct option here, you are operating too close to the limit.

thanks @Georacer

yes, I will try to retest with higher flare altitude, but bad weather in test field recent days, I will give you feedback ASAP

Hi @LupusTheCanine , @Georacer

I try to retest the flare today with higer flare altitude (LAND_FLARE_ALT = 4) and it work, noticeable flare maneuver was observed with smoothly touch down.

we also use the flap to achieve a lower touch down speed (TECS_LAND_ARSPD=12)

from the log, you could see the TECS.dh quickly raise up almost close to 0 and then a bit stall I think, but anyway, your are right, it’s work.

log attached for your reference https://drive.google.com/file/d/1Ghtn6kD1mNB7fSV4RQEjTyH22_0YhnTz/view?usp=drive_link

really appreciate your help!!!

1 Like