Land Detector on pure VIO

  • Hi all

    I have a customized drone running purely on VIO (EKF2_AID_MASK == 280, GPS and mag are both not attached) with the various hardware transplanted from a seeker.

    I just cant seem to get the Land Detector working when on Position mode (does not disarm on landing). Works fine on Manual/Stabilized mode though.

    Just wondering if anyone knows what might be the cause.

    Saw a similar topic here but unrelated:

    Some of the Land Detector params that i have:

    LNDMC_ALT_MAX -1.00
    LNDMC_Z_VEL_MAX 0.50
    MPC_THR_HOVER 0.51
    MPC_THR_MAX 0.70
    MPC_THR_MIN 0.15


  • I've figured out why.

    My original MPC_LAND_SPEED and MPC_Z_VEL_MAX_DN were 0.6 and 0.5 respectively.

    Thanks to the following chunk of code from MulticopterLandDetector.cpp, descend_vel_sp will never be true.

    	if (_flag_control_climb_rate_enabled) {
    		vehicle_local_position_setpoint_s vehicle_local_position_setpoint;
    		if (_vehicle_local_position_setpoint_sub.update(&vehicle_local_position_setpoint)) {
    			// setpoints can briefly be NAN to signal resets, TODO: fix in multicopter position controller
    			const bool descend_vel_sp = PX4_ISFINITE(vehicle_local_position_setpoint.vz)
    						    && (vehicle_local_position_setpoint.vz >= land_speed_threshold);

    Had to increase MPC_Z_VEL_MAX_DN and that solved my problem

Log in to reply