Hi, we’ve been extensively testing autoland as part of our failsafe system, and have managed to get the aircraft stuck in a undefined state which in one case led to a crash. This is in PX4 1.8.2 on an octocopter, customized for our airframe.
We’re having some baro fusion issues which results in the altitude drifting when the aircraft gets close to the ground, which is causing the z_derivative of height to stay outside of the land detector’s ground_contact threshold. In the logs and plot attached, the aircraft takes a few seconds for the conditions to pass and fully switch to landed state.
It seems that once landed state is reached, the vertical velocity setpoint is zeroed. This is important for later…
After idling for a few more seconds, the drifting baro again leaves the test bounds for vertical movement, and the aircraft switches modes back to flying and lifts off a little bit. Because the vertical velocity setpoint has been zeroed out, it makes no attempt to re-land, AND prevents the land detector from being able to trip again, because the test in multicopterlanddetector.cpp for hit_ground requires the setpoint velocity to be less than a maxclimbrate value. Since the setpoint is zero, the only other test that would allow ground_contact to retrigger would be a low throttle, which won’t occur in hover.
Perhaps we have something misconfigured, but this appears to be a a serious problem in situations where a system is in failsafe due to lack of RC and the land detector has some problems, it doesn’t re-try to land.
floating, stuck, manual landed: https://logs.px4.io/plot_app?log=d5746d4d-088e-4ae2-b264-9aa634213c37
floats back out of autoland, ends up crashing https://logs.px4.io/plot_app?log=9380426b-f2e0-4a8e-a504-79ad8604b865