AltHold/Loiter won't climb above 1m - PSCD.DVD shows no upward response

Setup:

  • ArduPilot Copter 4.6.2
  • Frame: Quad X
  • Rangefinder: MicoAir MTF-01P, MAX_CM=300, EK3_SRC1_POSZ=2

Problem: In AltHold mode, copter refuses to climb above ~1m. Descending works fine. Previously worked correctly. Similar behavior observed in Loiter mode.
Observations from logs:

  • RCIN.C3 responds normally (full range)
  • PSCD.DVD responds to downward stick but not upward
  • CTUN.DAlt stays at ~1m when stick pushed up
  • CTUN.ThO ~0.3 (not saturated)
  • FENCE_ENABLE=0
  • No land_complete flag
  • No arming issues
    Logs attached:

Not sure why, but there are lot of EKF_ALT_RESET events and rangefinder status changes at very low altitude. Also barometer seems to not work. If You have no other altitude sources than rangefinder that might be the source of the problem.

Also, AFAIK, rangefinder is used with baro, even if it is not a primary alt source.

Thanks for looking into this! You are right about the barometer issues. We are flying indoors in a confined space, and the barometer was showing very poor stability due to propeller wash and air pressure fluctuations from walls and ceiling. This was causing unstable altitude control, so we decided to remove it from EKF altitude sources and rely solely on the rangefinder.

That’s usually fixed with a piece of foam over the barometer. I “fly” several of my smaller craft in a very small office space when trying things out and don’t have any problem with the barometer. Including one with that same Flight Controller. Mini version anyway.

from my experiences with micoair range finders is that declared “up to” range is very optimistic.

Also there are significant changes of rangefinder status reported which might be related to the behavior. But I am not an expert with that.

Regarding the rangefinder status changes - those are expected and normal.
Status 2 occurs when the drone is on the ground and the sensor is too
close to the surface (below minimum range). Status 4 is normal operating
mode. This behavior was present before and never caused issues.

As for the declared range - the sensor is rated for 8m, and I deliberately
set MAX_CM to 300cm precisely because I expected some optimism from the
manufacturer. But a 5 meter discrepancy between spec and reality would be
quite extreme - I’d expect some exaggeration but not that much.

Update: Found something interesting in the EKF configuration.
EK3_SRC1_POSXY is set to External Navigation, which was not
available during these flights. However, this should only affect
horizontal position estimation, not altitude.

We are flying in AltHold mode, so horizontal position source
shouldn’t matter for altitude control. But wondering - could
the absence of the configured horizontal position source cause
EKF to report degraded solution status, which in turn could
affect how pos_control handles altitude? Or is there any other
mechanism by which missing POSXY source could indirectly
affect vertical behavior?

We would really appreciate documented behavior here rather than
guesswork - is there an official description of how EKF3 handles
missing or unavailable configured sources, and what the downstream
effects on flight control are?

My man, I had this exact issue for months (I’m using MTF-02) and I solved this somehow last week. Do you happen to use QGC?

Just go through this. You can disregard the parameters given at the end. I have found that they have no effect since.

I have foam and the cheap ms5607 and I fly in a area which has just 2m ceiling height and it does fly very well. No alt issues

The OP is using an optical flow sensor