diff --git a/ArduCopter/zr_flight.cpp b/ArduCopter/zr_flight.cpp index 5e4c2e923f..9e86ac58db 100644 --- a/ArduCopter/zr_flight.cpp +++ b/ArduCopter/zr_flight.cpp @@ -149,8 +149,10 @@ void Copter::do_avoid_action(){ AP_Proximity *proximity = AP::proximity(); if(proximity == nullptr) return; - proximity->get_horizontal_distance(0,proxy_dist); - + bool get_new_dist = proximity->get_horizontal_distance(0,proxy_dist); + if(get_new_dist == false){ + proxy_dist = avoid.get_zr_avd_max() + 1.0; + } } if(avoid.get_zr_mode() == 2){ uint16_t rc10_in = RC_Channels::rc_channel(CH_12)->get_radio_in(); diff --git a/libraries/AP_RangeFinder/RangeFinder_Backend.cpp b/libraries/AP_RangeFinder/RangeFinder_Backend.cpp index b777616cc8..1c4b5c7e1b 100644 --- a/libraries/AP_RangeFinder/RangeFinder_Backend.cpp +++ b/libraries/AP_RangeFinder/RangeFinder_Backend.cpp @@ -75,7 +75,12 @@ void AP_RangeFinder_Backend::set_status(RangeFinder::RangeFinder_Status _status) if (state.range_valid_count < 10) { state.range_valid_count++; } - } else { + }else{ + if(_status == RangeFinder::RangeFinder_OutOfRangeHigh){ + state.distance_cm = params.max_distance_cm; + }else{ + state.distance_cm = params.min_distance_cm; + } state.range_valid_count = 0; } }