Browse Source

LandDetector: use vertical velocity estimate for threshold

instead of the derivative of the vertical position which is
not the same value when using the ekf2 estimation.

Using the position derivative resulted in delayed landing because
the value for some reason often bumped over the theshold before
slowly converging towards zero while the velocity was within expected
accuary in all these cases.
sbg
Matthias Grob 6 years ago
parent
commit
f9ec0cd5ea
  1. 2
      src/modules/land_detector/MulticopterLandDetector.cpp

2
src/modules/land_detector/MulticopterLandDetector.cpp

@ -175,7 +175,7 @@ bool MulticopterLandDetector::_get_ground_contact_state() @@ -175,7 +175,7 @@ bool MulticopterLandDetector::_get_ground_contact_state()
// Adjust maxClimbRate if land_speed is lower than 2x maxClimbrate
float maxClimbRate = ((land_speed_threshold * 0.5f) < _params.maxClimbRate) ? (0.5f * land_speed_threshold) :
_params.maxClimbRate;
verticalMovement = fabsf(_vehicleLocalPosition.z_deriv) > maxClimbRate;
verticalMovement = fabsf(_vehicleLocalPosition.vz) > maxClimbRate;
}
// Check if we are moving horizontally.

Loading…
Cancel
Save