Browse Source

AC_PrecLand: remove check of type when using distance-to-target

master
Randy Mackay 8 years ago
parent
commit
974a6f48c6
  1. 5
      libraries/AC_PrecLand/AC_PrecLand.cpp
  2. 4
      libraries/AC_PrecLand/AC_PrecLand_Backend.h
  3. 4
      libraries/AC_PrecLand/AC_PrecLand_Companion.h

5
libraries/AC_PrecLand/AC_PrecLand.cpp

@ -162,10 +162,11 @@ void AC_PrecLand::update(float rangefinder_alt_cm, bool rangefinder_alt_valid)
Vector3f target_vec_unit_ned = _attitude_history.front() * Rz * target_vec_unit_body; Vector3f target_vec_unit_ned = _attitude_history.front() * Rz * target_vec_unit_body;
bool target_vec_valid = target_vec_unit_ned.z > 0.0f; bool target_vec_valid = target_vec_unit_ned.z > 0.0f;
bool alt_valid = (rangefinder_alt_valid && rangefinder_alt_cm > 0.0f) || (_backend->distance_to_target() > 0.0f);
if (target_vec_valid && ( (rangefinder_alt_valid && rangefinder_alt_cm > 0.0f) || ((enum PrecLandType)(_type.get()) == PRECLAND_TYPE_COMPANION && _backend->distance_to_target()) ) ) { if (target_vec_valid && alt_valid) {
float alt; float alt;
if ((enum PrecLandType)(_type.get()) == PRECLAND_TYPE_COMPANION && _backend->distance_to_target()) { if (_backend->distance_to_target() > 0.0f) {
alt = _backend->distance_to_target(); alt = _backend->distance_to_target();
} else { } else {
alt = MAX(rangefinder_alt_cm*0.01f, 0.0f); alt = MAX(rangefinder_alt_cm*0.01f, 0.0f);

4
libraries/AC_PrecLand/AC_PrecLand_Backend.h

@ -33,8 +33,8 @@ public:
// return true if there is a valid los measurement available // return true if there is a valid los measurement available
virtual bool have_los_meas() = 0; virtual bool have_los_meas() = 0;
// return distance to target // returns distance to target in meters (0 means distance is not known)
virtual float distance_to_target() = 0; virtual float distance_to_target() { return 0.0f; };
// parses a mavlink message from the companion computer // parses a mavlink message from the companion computer
virtual void handle_msg(mavlink_message_t* msg) {}; virtual void handle_msg(mavlink_message_t* msg) {};

4
libraries/AC_PrecLand/AC_PrecLand_Companion.h

@ -31,8 +31,8 @@ public:
// return true if there is a valid los measurement available // return true if there is a valid los measurement available
bool have_los_meas(); bool have_los_meas();
// return distance to target // returns distance to target in meters (0 means distance is not known)
float distance_to_target(); float distance_to_target() override;
// parses a mavlink message from the companion computer // parses a mavlink message from the companion computer
void handle_msg(mavlink_message_t* msg); void handle_msg(mavlink_message_t* msg);

Loading…
Cancel
Save