AC_PrecLand Outlier Rejection Query

Hi,

I am developing a precision landing sensor for use with ArduPilot. My implementation using LANDING_TARGET MavLink messages is working, although during log review I see lots of EKF outliers due to my measurements failing the NIS test.

My sensor is not camera based like alot of the other products available on the market, and as such, it has a different x/y noise variance. It seems as if the x/y position variance is calculated as follows:

float xy_pos_var = sq(_target_pos_rel_meas_ned_m.z*(0.01f + 0.01f*AP::ahrs().get_gyro().length()) + 0.02f);

https://github.com/ArduPilot/ardupilot/blob/master/libraries/AC_PrecLand/AC_PrecLand.cpp#L554

Does anyone have any information around where this formula came about? My feeling is that this should be exposed as a parameter, allowing users to tune performance for different precision landing sensors with different x/y variances.

Thanks,

Henry Hutchison

You can set the PLND_EST_TYPE param to 0 to disable the Kalman filter for precision landing.

There’s additional parameters listed here: ArduPilot Parameter List | Landmark Docs

There’s a PR in the works to overhaul the ArduCopter precision landing logic. The proposed TARGET_RELATIVE message includes fields for measurement uncertainty. This may be relevant to your use case.