Procházet zdrojové kódy

fix avoiding logic

chenxiaowei před 3 roky
rodič
revize
8a790ab49a

+ 7 - 1
src/decition/decition_brain_sf_jsguide/decition/decide_gps_00.cpp

@@ -4330,19 +4330,25 @@ int iv::decition::DecideGps00::computeAvoidXDistance(iv::LidarGridPtr lidarGridP
     {
         hasCheckedAvoidLidar = true;
     }
+    int record_vector=0;
 
     for(int j=0;j<obs_property.size();j++){
         if(obs_property[j].obs_distance>100){
+            if((signed_record_avoidX<0)&&(obs_property[j].avoid_distance>0)){
+                break;
+            }
                 if(abs(obs_property[j].avoid_distance)<record_avoidX){
                         record_avoidX=abs(obs_property[j].avoid_distance);
                         signed_record_avoidX=obs_property[j].avoid_distance;
+                        record_vector=j;
                 }
         }
     }
 
    if((signed_record_avoidX<0)&&(signed_record_avoidX-1>=avoidLeft))
    {
-          int obs_test=abs(signed_record_avoidX)-1;
+          //int obs_test=abs(signed_record_avoidX)-1;
+          int obs_test=record_vector-1;
 
           if(obs_property[obs_test].obs_distance>100){
                     signed_record_avoidX-=1;