Quellcode durchsuchen

change decition_brain_sf_Jeely_xingyueL.

yuchuli vor 1 Jahr
Ursprung
Commit
b77ba9d535

+ 19 - 16
src/decition/decition_brain_sf_Jeely_xingyueL/decition/decide_gps_00.cpp

@@ -1048,23 +1048,7 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
 
     }
 
-    if(mbGroupSpeedCtrl)
-    {
-        if(bgroupgrpc)
-        {
-            double fdec_after = mGroupSpeedCtrl.Getmindec(xgroupgrpcinfo,gpsMapLine,PathPoint,secSpeed);
-            if((fdec_after<-0.001)&(fdec_after < minDecelerate))
-            {
-                minDecelerate = fdec_after;
-            }
 
-            double fdec_front = mGroupSpeedCtrl.Getmindec_front(xgroupgrpcinfo,gpsMapLine,PathPoint);
-            if((fdec_front<-0.001)&(fdec_front < minDecelerate))
-            {
-                minDecelerate = fdec_front;
-            }
-        }
-    }
 
     DecideGps00::lastGpsIndex = PathPoint;
 
@@ -1157,6 +1141,25 @@ iv::decition::Decition iv::decition::DecideGps00::getDecideFromGPS(GPS_INS now_g
                 }
     }
 
+
+    if(mbGroupSpeedCtrl)
+    {
+        if(bgroupgrpc)
+        {
+            double fdec_after = mGroupSpeedCtrl.Getmindec(xgroupgrpcinfo,gpsMapLine,PathPoint,secSpeed);
+            if((fdec_after<-0.001)&(fdec_after < minDecelerate))
+            {
+                minDecelerate = fdec_after;
+            }
+
+            double fdec_front = mGroupSpeedCtrl.Getmindec_front(xgroupgrpcinfo,gpsMapLine,PathPoint,secSpeed);
+            if((fdec_front<-0.001)&(fdec_front < minDecelerate))
+            {
+                minDecelerate = fdec_front;
+            }
+        }
+    }
+
     if(!ServiceCarStatus.inRoadAvoid){
         roadOri = gpsMapLine[PathPoint]->roadOri;
         roadSum = gpsMapLine[PathPoint]->roadSum;      

+ 29 - 1
src/decition/decition_brain_sf_Jeely_xingyueL/decition/groupspeedctrl.cpp

@@ -129,7 +129,7 @@ double GroupSpeedCtrl::Getmindec(iv::group::groupinfo & xgroupinfo,
 
 
 double GroupSpeedCtrl::Getmindec_front(iv::group::groupinfo & xgroupinfo,
-                                 const std::vector<GPSData> & gpsMapLine,int PathPoint)
+                                 const std::vector<GPSData> & gpsMapLine,int PathPoint,double fsecspeednow)
 {
 
     iv::group::vehicleinfo * pvehbefore = NULL;  //a vehicle after current vehicle
@@ -208,6 +208,34 @@ double GroupSpeedCtrl::Getmindec_front(iv::group::groupinfo & xgroupinfo,
     double dis_startdec = mfDis_StartDec_Front;  //if > 50 start wait
     double dis_maxdec = mfDis_MaxDec_Front;  //if > 60  max dec
 
+
+    const double fVehMinDis = 10.0;
+
+   //前车车速大于当前车,并且距离>30米, 不制动
+    if((fdistocur > (fVehMinDis*1.5)) &&(pvehbefore->mgpsimu().speed() >= fsecspeednow ))
+    {
+        return 0.0;
+    }
+
+    double fspeeddiff = fsecspeednow - pvehbefore->mgpsimu().speed();
+
+    if(fspeeddiff > 0)
+    {
+        if(((fspeeddiff*fspeeddiff/(2*1.0))+fVehMinDis) < fdistocur)
+        {
+            assert((fdistocur-fVehMinDis)>0);
+            double fdec = (-1.0) * fspeeddiff*fspeeddiff/(2*(fdistocur - fVehMinDis));
+            return fdec;
+        }
+    }
+
+    if((fdistocur < (fVehMinDis*1.5)) && (fabs(pvehbefore->mgpsimu().speed()) < 0.3))
+    {
+        return -1.0;
+    }
+
+    return 0.0;
+
     if(fdistocur>=dis_startdec)return 0.0;
     else
     {

+ 1 - 1
src/decition/decition_brain_sf_Jeely_xingyueL/decition/groupspeedctrl.h

@@ -23,7 +23,7 @@ public:
                      const std::vector<GPSData> & gpsMapLine,int PathPoint,double fsecspeednow);
 
     double  Getmindec_front(iv::group::groupinfo & xgroupinfo,
-                            const std::vector<GPSData> & gpsMapLine,int PathPoint);
+                            const std::vector<GPSData> & gpsMapLine,int PathPoint,double fsecspeednow);
 
 
 private: